作為嵌入式工程師,我們每天都在和各種接口、協(xié)議打交道。這個領域涉及的知識點和細節(jié)實在太多,以至于大多數時候我們只能依賴參考設計快速實現功能,趕著樣機交付。如果沒有遇到問題,自然皆大歡喜,甚至會讓人產生"這個接口很簡單"的錯覺。
就像最近一個同事說的:"HDMI接口點屏很簡單??!"但當被問到細節(jié)時——比如最基本的HDMI握手過程——他卻答不上來。這種情況很常見:因為沒遇到過問題,所以也就沒有深究過底層原理。
今天,我們就來探討一下HDMI接口的一些基礎知識及握手過程。它能更好的幫助我們在調試時更快定位問題,也能讓我們對這個看似"簡單"的接口有更全面的認識。畢竟,在嵌入式開發(fā)中,越是覺得"簡單"的地方,往往隱藏著最多的坑。
01 HDMI基礎
基礎知識中,我這里只強調幾個要點,有助于我們對于產品的設計。
通過百度百科,可以簡單的了解到HDMI接口的定義:
圖源 | 百度百科
通過這個定義,我們只需要記住以下幾個特點:
- HDMI 是數字信號
- HDMI可以傳送未壓縮的視頻信號
- HDMI可以傳送未壓縮的音頻信號
- 支持熱拔插功能
HDMI接口目前主要有4個版本:1.4、2.0、2.1和最新的2.2。版本越高,帶寬越高,就可以支持更高的分辨率和刷新率,同時HDMI接口具有向下兼容的特性。
HDMI的接口類型包括
圖源 | 知乎
- Type A(標準):19針,最常見(電視、電腦等)。
- Type B(Dual-link):29針,不常見,數據傳輸能力強(專業(yè)顯示器、攝像機等)。
- Type C(Mini):便攜設備(如相機、平板)。
- Type D(Micro):超小型設備(部分手機)。
- Type E(車載):帶鎖定機制,抗震動。
可根據具體的應用場景來選型合適的接口。
02 HDMI接口引腳定義
咱們常用的HDMI接口一般有19個引腳,Type B HDMI比較特殊,有29個引腳(實際應用中王工也沒有見過)。
以下是HDMI A接口咱們常用的原理圖,19個針腳的具體定義就不一一列舉了:
圖源 |日常原理圖
HDMI接口的引腳定義,咱們把它主要分為以下四類:
①數據信號引腳
1-9引腳用于數據傳輸,分為0、1、2三組,負責傳輸視頻信號。
每一組包含一對正、負差分信號和地,如:
TMDS DATA0+/TMDS DATA0-/GND
②時鐘信號引腳
10-12三個引腳用于傳輸TMDS時鐘信號,用于同步視頻和音頻數據。
只有一組包含一對正、負差分信號和地,如:
TMDS DATA CLOCK+/TMDS DATA CLOCK-/GND
③控制信號引腳
- CEC引腳:13引腳用于控制功能,如通過電視遙控器控制DVD播放。
I2C引腳:15-16引腳用于DDC通信,主要用于EDID和HDCP的傳輸。
- Hotplug引腳:19引腳用于監(jiān)測HDMI設備是否存在,實現熱插拔功能。
- ④電源和接地引腳
5V電源引腳:18引腳提供5V電源。接地引腳:17引腳用于接地。關于這個原理圖,大家可以看到HDMI接口的5V供電回路中串聯(lián)了一個二極管,這一點咱們著重強調一下:
這個二極管主要目的是為了防止電流倒灌。在HDMI連接中,我們一般只允許電流從 source 端流向 sink 端,而不能反向流動。如果連接到HDMI的設備( sink 端)嘗試供電給發(fā)送設備( source 端),串聯(lián)的二極管可以防止逆向流動的電流損壞發(fā)送設備的電路。
此外,這種設計還有一個目的,用于保持HDMI接口電源電壓的穩(wěn)定。如果 sink 端設備嘗試提供一個不同的電壓,串聯(lián)的二極管可以防止這個非標準電壓影響到 source 端的敏感電路。
這樣,無論是電源供應問題還是連接錯誤,都可以通過二極管來保護設備不受損害。另外盡量選用漏電流較小的肖特基二極管。
03 HDMI握手過程
HDMI握手是指Source端(信號源)和Sink端(顯示設備)建立連接的過程,其目的是確保主機輸出的畫面能夠正常顯示在屏幕上。
通過工作中的實際經驗和一些比較好的參考資料,王工把HDMI的握手過程分為一下幾點:
①HPD熱拔插檢測
當HDMI線纜物理連接時,Sink端的HPD引腳(Pin19)會拉高電壓(通常至+5V),通知Source端設備已連接。
這是HDMI正常通信的第一個步驟,當物理線纜建立物理連接后,如果你有兩個屏,一直點亮的那個屏可以看到檢測過程中有一個明顯縮放的畫面。
②EDID讀取很多人第一次接觸HDMI可能不知道EDID是什么,它是顯示器一種標準,通過DDC傳輸,可以提供顯示器的詳細信息,包括:制造商,尺寸,分辨率支持、色彩格式,基本參數......可能你還是不太清楚,你只需要知道,它的作用是為了能讓主機更好的識別顯示器屬性,以顯示出跟顯示器適配的畫面。這個讀取過程主要是通過15-16的I2C引腳,一般在HDMI接口處我們也會預留一個EEPROM,方便信息的存儲。
③TMDS鏈路訓練首先要知道TMDS鏈路訓練的目的,主要是協(xié)商物理層參數,確保信號傳輸穩(wěn)定性。這個過程比較復雜,包括時鐘信號的同步,校準,均衡調整,通道對齊,這里就不細說了。
④視頻/音頻傳輸
完成上述步驟后,Source端按EDID協(xié)商的參數,通過TMDS通道發(fā)送視頻數據和音頻數據。
了解了HDMI的握手過程,有助于我們解決平時在產品開發(fā)中遇到的一些黑屏,無信號,分辨率顯示異常或者無音頻等問題。
本文介紹了HDMI接口的基礎知識,但實際應用中的注意事項遠不止于此。例如,Layout設計、EMC設計、連接線選型等,都會直接影響項目的順利推進。稍有不慎,就可能導致信號完整性下降、兼容性問題甚至項目延期。