在使用 HDMI CEC 功能時,有些 CEC 命令需要用到 physical address 參數,該參數一般存儲在 HDMI EDID 信息當中,本文講述如何在 HDMI EDID 信息中找到 physical address。
一、EDID 信息結構
EDID 分為主塊和擴展塊,大小都是 128byte,整個 EDID 大小為 256byte,0-127 為主塊,128-255 為擴展塊,而 physical address 則儲存與擴展塊中。
二、physical address
HDMI 每個設備都會通過 DDC 總線來分配 physical address ,通過 CEC 總線分配 logic address,DDC 是 HDMI 中必需有的總線,而 CEC 是可選的,所以 每個設備都會有 physical address。
對於 EDID 擴展塊來說,其包含了 VDB、ADB、SADB、VSDB
擴展塊開始的 4 個字節信息如下:
而 physical address 存儲在 EDID 中的 VSDB(Vendor Specific Data Block)中,physical address = A.B.C.D:
每個功能塊的結構基本相似,參考 VSDB ,可以看到塊開始的第一個字節就是塊的 tag 和 塊的長度 length :
注意:length 不包括該字節
有了這些信息我們可以通過檢查 tag 判斷是否為 VSDB ,如果不是可以通過 length 計算下個功能塊的地址,繼續檢查 tag ,得到 VSDB 地址後就可以得到 physical address 了。
參考資料:
評論