C CAN訊號解析演算法

2021-10-10 14:16:22 字數 1248 閱讀 5395

假設,我們獲取到的資料長度為8byte,即dlc為8。can matrix**如下:

我們約定,一種表示訊號的方式如下:

lsb起始位

資料長度

按照上面的圖來說,該訊號起始位為40,長度為10。所以,該訊號表示值的範圍在0-1023之間,至於具體表示的物理量的含義需要有其他的檔案規定。

獲取到一幀資料以後,如何通過一系列的運算來得到訊號值呢?

這裡提供一種思路:

大概分為以上的4部分,以下分別說明:

設定:lsbbit,lsbbyte,msbbyte,start,length.按照以上的例子就是:

lsbbit = start & 7

lsbbyte = start >> 3

由於資料是向byte減少的方向進行的。所以:

msbbyte = lsbbyte - x

x為跨越的位數,也就是:lsbbit + length - 1所佔的長度,如果大於7說明為另一行,即:

msbbyte = lsbbyte - ((lsbbit + length - 1) >> 3)

我們知道資料介於msbbyte-lsbbyte之間,那麼我們可以組合這兩個資料:

for(index = msbbyte -> (lsbbyte+1)):

data_merge  += data[index] << (( lsbbyte - index ) << 3)

去尾:value = data_merge >> lsbbit

按位與:value = value & ((1 << length) - 1)

所以,最終得到的結果為篩選出來的訊號值,然後根據該訊號值關聯上實際的物理值,就可以得到具體的物理資料了。

具體**如下:

public static int signalvalue(int start, int length, byte data)

data_value = data_merge >> lsbbit;//去尾

data_value = data_value & ((1 << length) - 1);//按位與(只保留有效資料)

return data_value;

}

HDMI訊號解析

參考資料 這篇的原理圖個人感覺有錯誤 hpd訊號 hpd hot plug detection,熱插拔檢測。標準hdmi介面的第19pin,這個訊號作為hdmi傳送器判斷是否連線hdmi顯示裝置的依據。上圖是hdmi顯示器的介面電路。當顯示器和主機連線時,主機供電給顯示器的18pin hdmi a ...

HDMI訊號解析

參考資料 這篇的原理圖個人感覺有錯誤 hpd訊號 hpd hot plug detection,熱插拔檢測。標準hdmi介面的第19pin,這個訊號作為hdmi傳送器判斷是否連線hdmi顯示裝置的依據。上圖是hdmi顯示器的介面電路。當顯示器和主機連線時,主機供電給顯示器的18pin hdmi a ...

linux訊號作用解析

檢視支援的訊號列表 可靠訊號與不可靠訊號 訊號功能 小於sigrtmin的訊號 sighup sigint 程式終止 interrupt 訊號,在使用者鍵入intr字元 通常是ctrl c 時發出.sigquit 和sigint類似,但由quit字元 通常是ctrl 來控制.sigill 執行了非法...