HDMI之CEC DDC學習筆記(可能有誤)


1 HDMI的音視頻通路,有待學習;

2 DDC通路,大致是個IIC接口,讀取上游器件的EDID或者E-EDID數據;

EDID的前128字節數據格式如下:(可能有不同版本,格式可能有區別)

其它128字節(擴展字節的格式如下:)

上圖中4~d-1(data block collection)的數據格式如下:

上圖中最后一個數據塊(VSDB)的數據格式如下:

  根據以上表格,讀取3個內容:

  IIC的讀取協議為(開始、器件地址寫(A0)、寄存器地址(8bit)、重開始、器件地址讀(A1)、讀取到的數據(8bit)、結束);

  2.1讀取header:00 FF FF FF FF FF FF 00這8個字節;通過;

  2.2讀取生產商ID(地址08,09):讀到4C 2D,二進制為0100 1100 0010 1101

      去掉第一個0

      剩下10011 00001 01101

      按照(00001~11010對應A~Z)

      知道讀取的3個字母為:SAM(三星) 讀取正確,通過;

  2.3讀取擴展128字節的‘h00地址(IIC寄存器地址為80),應讀取到02,通過;

  2.4讀取寄存器地址81,讀到'h03,說明revision是3

  2.5讀取寄存器地址84,讀到'h57,這是Video Data Block的頭信息:tag code為2,長度L1 = ’d23

  2.6讀取寄存器地址9C,讀到'h23,這是Audio Data Block的頭信息:tag code為1,長度L2 = ’d3

  2.7讀取寄存器地址A0,讀到‘h83,這是Speaker Allocation Data Block的頭信息:tag code為4,長度為'd3

  2.8按照上面的協議,讀地址'hA4,就應該是VSDB的頭信息了,但卻不是(原因待查)

  2.9讀取地址'hA7、A8、A9、AA、AB、AC分別讀到6E 03 0C 00 13 00,表示tag code為3、VSDB長度為E、VSDB頭標志為000C03、當前CEC的物理地址為1.3.0.0

3 CEC

有了這個CEC 物理地址,就可以驗證CEC的Routing Control Feature

這個功能特性支持6種CEC包:<Active Source>、<Inactive Source>、<Request Active Source>、<Routing change>、<Routing Information>、<Set Stream Path>

只驗證<Active Source>和<Routing change>,所需環境:(與FPGA相連的2個HDMI口(FPGA能收、發這2個HDMI的CEC包) <-----> 4進1出switcher <----->TV)

3.1通過遙控器控制switch改變當前通路(手動改變switch router),按照CEC協議,switch會發送<Routing change>包給連接器件,告知router change,

    剛開始FPGA收到的都是cec包都是CECstart 8bitFF CECstart 8bitFF CECstart 8bitFF(循環幾次),問題原因(不確定),<Routing change>是個廣播包,source邏輯地址和sink邏輯地址都是F,

    它期望的ACK應當是1,而不是0.FPGA給的ACK是0,switch當做收到了錯誤ACK而重傳。當FPGA給的ACK改為1后,FPGA收到了正確的<Routing change>包。

3.2 FPGA發送<Active Source>包,實現了switch router更改,但source邏輯地址和sink邏輯地址必須填成F(原因待查)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM