假設,我們獲取到的資料長度為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 執行了非法...