HDMI螢幕 沒畫面-邏輯分析儀抓誰有問題

前陣子我買了 HDMI螢幕 來當攝影機的監視器,只是當我把攝影機接上去的時候,HDMI螢幕 卻沒畫面,這螢幕新買的耶! 到底是怎麼回事呢? 我們一起來看看。

HDMI螢幕 問題歸納

為了找出問題,我做了一些測試,歸納出了有畫面與沒畫面的狀況如下圖,你可以看到紅色步驟跟藍色步驟。

只要HDMI cable 最後插上就會沒畫面
只要HDMI cable 最後插上就會沒畫面
  • 藍色步驟,螢幕與攝影機都先上電,最後再把HDMI cable接上去,這樣的次序就會沒畫面
  • 紅色步驟,HDMI cable與螢幕、攝影機都先接好,攝影機先上電,螢幕最後上電,這樣就會有畫面。如果在有畫面的情況把Cable重新插拔,則會回到藍色步驟,這樣就變成沒畫面。

這真的太奇怪了,HDMI cable插拔是很常見的動作,但現在卻會在插拔之後出現沒畫面的問題,我心想這應該是螢幕的問題吧。

原本我是打算直接把螢幕送修,但是在送修之前,我總覺得要先確認一下是否真的是螢幕的問題。所以我就拿了樹梅派來試,結果樹梅派的HDMI接上去,Wow! 完全沒有問題,無論HDMI Cable如何插拔也都沒問題,這樣要拿去送修是會有爭議的。

用樹梅派測試 HDMI螢幕 卻是有畫面
用樹梅派測試 HDMI螢幕 卻是有畫面

HDMI螢幕 通訊小知識

既然送修可能會有爭議,所以我決定自己來找找到底是哪裡有問題。動手之前,先來點勤前教育,如下圖左右兩邊分別代表攝影機和螢幕的HDMI插座。HDMI cable在插上去的瞬間,攝影機和螢幕會先做溝通,目的是用來確認待會兒要用哪種訊號格式傳送,確認後攝影機才會依照協議送影像訊號。

攝影機和 HDMI螢幕 會協議用哪種影像格式
攝影機和 HDMI螢幕 會協議用哪種影像格式

它們之間的通訊大概是這樣,首先要確認HDMI cable有接好,所以攝影機會先透過Pin 18提供+5V給螢幕,如果線有接好,那麼螢幕內部會有一個1k ohm電阻把5V傳到Pin 19的HotPlug腳位上,這樣攝影機就知道Cable已經接好了,但螢幕仍然保有HotPlug的控制權,必要的時候會將HotPlug拉為0V。

接著攝影機要開始詢問該送哪種影像格式了,這是透過Pin15、16的DDC(Display Data Channel)來達成,這兩根腳位使用的通訊協定是I2C,實際傳送的資料稱為EDID。如果這個資料有問題,那當然就會直接影響攝影機的行為囉,我猜可能是這個步驟出了問題才讓螢幕沒畫面,所以我打算把這些訊號抓出來看看。

那該用甚麼儀器來觀察這些訊號呢? 答案是邏輯分析儀,因為它能擷取的資料很長,所謂很長大概是7 sec左右的時間,當然有人可能會想要用示波器,而一般示波器的紀錄長度Record length非常有限,不適合抓太長的時間,我這次大約需要擷取7 sec的訊號,這對示波器來說時間太長了。

觀察 HDMI螢幕 訊號的邏輯分析儀
觀察 HDMI螢幕 訊號的邏輯分析儀

另外我選邏輯分析儀的原因還有,我需I2C通訊協定的分析功能,將來才方便判讀資料,雖然我可以憑肉眼解讀I2C的內容,但是EDID的資料有256 Bytes,全部看完波形的話眼睛會看到脫窗,因此需要藉助通訊協定分析軟體來幫忙,這只有邏輯分析儀才有這種功能。

觀察DDC與HotPlug

為了把HDMI的腳位跳接出來,所以我特地去買了下圖這種HDMI測試板,方便我把訊號線跳接出來,目前我想觀察Pin15、16、18、19共四條線,但別忘了還需要加一條GND線才能做測試喔,這樣這四條訊號線才有參考電位0V可以用。為了節省篇幅,後面我不會講邏輯分析儀的操作,只會直接Show結果,接著我們來看一下時序圖,分別是下正常與不正常的圖。

HDMI的測試板
HDMI的測試板

1 樹梅派接螢幕

先來看一下樹梅派正常的時序圖,如下圖,下半部是擷取訊號的總區間,上半部是其中一段的Zoom in訊號,這兩部分訊號都有5列,次序都相同,從上到下都分別是I2C分析、SDA、SCL、+5V以及HotPlug。

你可以發現樹梅派接螢幕的時候,樹梅派只會問一次EDID的資料,之後螢幕就有畫面了,整個時序圖就是非常的乾淨簡約。

樹梅派正常的HDMI時序圖
樹梅派正常的HDMI時序圖

2 攝影機接螢幕-Cable重插拔

再來看攝影機的不正常時序圖,如下圖,這是把HDMI cable故意重新插拔之後,得到的時序圖。你看下半部的總區間出現了三次的EDID詢問,在第一次詢問之後,HotPlug就一直被週期性的拉Low再拉High,因此攝影機就認為Cable被重新插拔,它就會再問一次EDID,共問了三次,事實上這個動作會不斷的循環重複,而螢幕也一直沒有畫面,由於攝影機的+5V供電不會有變化,所以這HotPlug的跳動一定是螢幕拉的,剛才我有說螢幕仍保有HotPlug的控制權,那問題就變成:螢幕為何要把HotPlug拉Low?

攝影機重插拔的HDMI不正常時序圖
攝影機重插拔的HDMI不正常時序圖

3 攝影機接螢幕-螢幕重上電

剛才有說,如果要讓螢幕有畫面,只要螢幕是最後一個上電就行,所以我們也來看看這種情況的時序圖,如下圖,我們來看一下。

下方的橘色線就是+5V,由於HDMI cable一直都插著,所以+5V都維持High。而黃色軌跡的HotPlug,由於螢幕有Power off然後再On,所以Hot plug就被拉Low了一下,然後再High,黃色圓圈就是它變成High的地方,之後攝影機就開始詢問EDID的資料,螢幕也確實回傳了資料,畫面也播出了,整個時序圖就是乾淨俐落。

螢幕重新上電的正常HDMI時序圖
螢幕重新上電的正常HDMI時序圖

時序圖比較

如果我們把上面三種時序圖拿來比較,只有第二種會沒畫面,而且也只有第二種的HotPlug會亂跳,所以我可以合理懷疑HotPlug和沒畫面有直接的關係,當然也可以進一步推論,會不會是EDID的資料有問題導致Hot plug亂跳,所以我還真的去看了EDID的資料,如下圖。

HDMI螢幕 的EDID資料
HDMI螢幕 的EDID資料

攝影機詢問EDID資料的時候,會以0x30、0x50來作為詢問的位址,這個位址是DDC定義的,之後螢幕就會回傳EDID的資料給攝影機,如上圖你可以看到0x00 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0x00等資料,這些就是EDID的檔頭,它其實就是I2C Read得到的資料,最後攝影機就會以最高解析度來做傳送。

由於EDID全部有256個Byte,基本上不太可能用肉眼比對,更不用講說想用示波器來解讀,別鬧了。所以我是用邏輯分析儀的匯出功能,再用試算表來做比對,這樣才會方便快速。

三種時序圖的EDID經過比對之後,結果是資料完全一樣,所以我判斷HotPlug會跳來跳去,跟EDID的內容是無關的。

觀察CEC訊號

如果DDC的EDID資料不是問題,那我只好懷疑CEC了,它是HDMI上的第13腳,也是能傳資料的,家庭劇院的一鍵操作就是靠它,我們一樣用邏輯分析儀來看CEC訊號,但我內心其實並不認為它是個問題,只不過越不會被懷疑的東西,有時候偏偏就是它,所以我們還是來看一下。

樹梅派沒有CEC

首先來看正常的樹梅派HDMI訊號,抓了訊號之後才知道原來樹梅派沒有CEC訊號,下圖第一列的訊號就是CEC波形,從頭到尾都是High的狀態,所以完全沒有CEC訊號。

樹梅派沒有CEC訊號
樹梅派沒有CEC訊號

攝影機有CEC

再來看攝影機的CEC訊號,用邏輯分析儀抓訊號之後,果然在下圖中可以看到第一列的CEC訊號有東西出來了,上方第一列有橘色藍色的部分是解析過後的CEC資料內容,下方第一列深綠色的部分是訊號的總區間,你可以看到CEC訊號出現後沒多久,最後一列的黃色HotPlug馬上被拉Low,以因果論來說的話,CEC似乎有可能會影響HotPlug。

攝影機重插拔的CEC訊號
攝影機重插拔的CEC訊號

切斷CEC的時序圖

要判斷CEC是否真的影響HotPlug的最好方法,就是把CEC切斷,然後再做一次實驗馬上就知道了。所以我拿了另一個HDMI測試板,把上面的CEC銅箔用刀片切斷,如下圖。眼尖的你可能會發現我怎麼會切在Pin 7,CEC不是應該要在Pin 13才對嗎? 那是因為這塊測試板它印錯了,但實際不影響測試,所以網路上買東西還是要小心一點,我也是中招搞了好久才發現它印錯。

將HDMI的CEC切斷
將HDMI的CEC切斷

CEC切斷之後將測試板接上螢幕,再抓一次訊號如下圖,你可以看到CEC訊號真的不見了,第一列的CEC一直維持在Low,但是無奈HotPlug仍然一直在跳,螢幕也仍然沒有畫面,這表示CEC和沒畫面的問題是無關的。

切斷CEC的HDMI時序圖
切斷CEC的HDMI時序圖

觀察TMDS

到目前為止都沒有發現沒畫面的原因,我其實有點挫折,HDMI裡面的DDC、CEC以及+5V剛才都找過了,也證實沒畫面和它們無關,只知道和HotPlug應該有關,但HotPlug是螢幕控制的,難道會和HDMI的主通道TMDS有關?

TMDS它傳送的是影音訊號,它共有四組線,三組資料線,一組時脈線,每組都是高速訊號,在1920×1080的解析度之下,頻率可以高達74.5MHz,由於是高速訊號,它們採用的電子訊號格式是差分訊號Differential signal,而不是低速訊號使用的單端訊號Single end signal。若要將TMDS這種高頻訊號接入邏輯分析儀,要考慮下列幾個點:

  • 跳接高頻訊號可能會影響傳輸線的特徵阻抗,造成訊號衰減而誤動作
  • 邏輯分析儀不接受差分訊號

但在好奇心的驅使之下,所以即便我知道會有上述種種困難,我還是決定要把TMDS硬接上邏輯分析儀,原因是我並沒有要看TMDS的內容資料,我只是要看它何時出現,所以在頻率的部分,我會維持1MHz的取樣率,用這個頻率對74.5MHz的訊號做取樣,想當然爾這無法觀察到TMDS的內容,因為那可是隔了好幾個Cycle才會取樣一次,但如果TMDS有資料的話,分析儀一定會抓到High或Low,理論上High/Low應該會大約一半一半,軟體上就會看到密密麻麻的帶狀波形。

再來邏輯分析儀並不是設計給差分訊號使用的,關於這一點,我並沒有打算要將Differential signal轉換成Single end signal再接入邏輯分析儀,我打算直接把差分訊號的其中一條線接在邏輯分析儀上,也就是把它當成單端訊號來看待。

這台邏輯分析儀的訊號臨界值我設定為1.65V,也就是3.3V的一半,由於TMDS是貼著3.3V做擺盪,所以我必須把臨界值改為3.05V,如下圖,至於把訊號跳接出來之後,會不會影響原來的訊號? 一定會! 只是影響多大而已,對我來說只要畫面能播出來,就是沒影響,所以就賭賭看囉,如果有畫面,而且邏輯分析儀也抓得到訊號,那就是三生有幸。

HDMI螢幕 的TMDS訊號臨界值為3.05V
HDMI螢幕 的TMDS訊號臨界值為3.05V

為了要觀察TMDS高速訊號,為了避免波形變形太多,我用雙絞線做連接,盡量讓訊號線和GND貼在一起。另外邏輯分析儀的臨界值設定也和低速訊號不同,要設定為3.05V,所以TMDS要接到另一組Port,因為每組Port只能共用一種臨界值,我選Port D的D4與GND腳位。

TMDS的連接方式
TMDS的連接方式

我們接下來的實驗就只針對攝影機來做,這樣才能保證是相同的硬體,在不同操作程序之下,出現不同的波形。

正常的波形-螢幕重新上電

先來看一下正常的波形,這要用螢幕最後上電的手法來得到,如此螢幕就會有畫面,抓到的波形如下,最下方的綠色波形就是TMDS,果然如預期的有個帶狀的波形,它發生在EDID出現之後,HotPlug也沒有跳來跳去,這就是一個很乾淨的波形。

正常的TMDS訊號
正常的TMDS訊號

不正常的波形-HDMI cable重插拔

接著來看不正常的波形,也就是故意重新插拔HDMI cable,螢幕一樣是沒畫面,你可以看到最後一列的TMDS訊號,攝影機明顯就是一副欲言又止的樣子,TMDS竟然會自己變成Low,而且是發生在HotPlug被拉Low之前,這太奇怪了,彷彿TMDS有預知能力。

不正常的TMDS訊號
不正常的TMDS訊號

整體來看TMDS就是輸出不完全,它沒有一個長時間的帶狀訊號,所以螢幕當然就解不出畫面來。根據之前的實驗,有畫面與沒畫面的差別在HotPlug最明顯,雖然這次TMDS異常的地方在Hot plug拉Low之前,但是我認為TMDS應該有受到Hot plug的影響,Why?

因為邏輯分析儀僅依靠臨界點Threshold來判斷0與1,它的波形只能是High或Low,它並不像示波器可以完整顯示各種電壓的波形,所以如果HotPlug的5V在波形上有任何凹陷的地方,但又沒有低於Threshold,那麼這時候在邏輯分析儀上是看不出任何異狀的,但這些凹陷的地方可能會被攝影機判為訊號,因而誤動作。所以如果在這個時間點上能有示波器輔助觀察,那是最好的,但偏偏我今天沒有示波器在手邊。

其實這台螢幕與攝影機,我有試過拿它們與其它裝置連接,都是沒問題的,獨獨它們兩台互接的時候會出問題,既然前述的各種技術手段都無法確認原因,那我只能說它們兩個八字不合,既然螢幕示新買的,那我就來看看能否從螢幕原廠這裡找到解法。

HDMI螢幕 解決方案

現在3C產品動不動就要我們更新軟體,我就來看看原廠網站是不是也有這款螢幕的韌體Firmware,雖然我也從來沒看過螢幕有在更新Firmware的,但Firmware程式會直接影響到裝置的行為,所有的相容性問題幾乎都跟Firmware有關,所以我還是來找看看。

經過查詢果然沒有Firmware可以下載,僅有的下載點是Windows系統的驅動程式,這跟我的問題無關,但我同時發現有”常見問題”這個頁籤,於是我就進去看看,發現有個敘述跟我很類似,主要就是講HDMI的輸入自動切換Input Auto Switch要設定為ON,如下圖。

原廠建議黑屏時要把Input Auto Switch切成ON
原廠建議黑屏時要把Input Auto Switch切成ON

但我的螢幕在Input Auto Switch這個選項早就已經是ON了,那這樣我不如把它OFF來看看,所以我就這麼做了。

準備把Input Auto Switch設定為OFF
準備把Input Auto Switch設定為OFF

設定成OFF之後,我再次把HDMI cable重新插拔,想看看是否有畫面,等啊等的還是沒畫面,唉! 好失望,讓我把MENU點開來吧,就在我伸手觸碰MENU鍵的時候,畫面出現了! 這是巧合還是真的需要按鍵。

於是我又試了一次,重新插拔之後,這次不等畫面了,直接按螢幕的MENU鍵,畫面果然出現了,所以看來把Input Auto Switch設定為OFF真的有改變螢幕的行為,至少在HDMI cable重插拔之後,我只要按一次MENU按鍵就可以讓畫面出現,對比之前需要按兩次電源鍵,一次OFF一次ON,算是有點進步。

解決方案,從按2次變成按1次,算是解決了我50%的問題,對我來說是可以接受的,因為目前我也沒有其他方案可以選了,就接受吧。

當然有些朋友也建議我可以再進一步這樣做那樣做,其實當然都可以做,只不過再繼續做下去的話,就比較偏研究性質了,這屬於長期的Debug能力累積,願意這樣做的話其實很好;但我的需求屬於想要短期見效的,只要能用的解法我就先拿來用了,我的目的是先講求效果才看有沒有傷身體,一起分享給各位。

相關文章

影音訊號-大解密-AV端子/色差端子/S端子/VGA/HDMI
液晶電視 LCD TV-內部拆解話當年
H sync/V sync-看懂類比視訊CVBS的同步訊號
AV端子-訊號解析-Composite Video訊號原來長這樣

3 Comments

  1. 很有趣的分析~ 遇到一個奇怪的現象, 當系統和螢幕都在正常時, 將螢幕的電源關掉再開, 則螢幕點不亮; 但此時把 HPD 拉 LOW 時間延長到2秒, 螢幕就能點亮, 不知您是否有此經驗?

    • 哇! 看來你是寫firmware的才有辦法自行控制HPD時間, 我沒有這類的經驗耶, 僅從手邊現有的狀況做分享

  2. 我也常常遇到HDMI重新拔插不會馬上有畫面的問題
    那個時候我才知道HDMI本身應該有偵測判斷的動作
    不像D-SUB那麼單純

Leave a Reply

Your email address will not be published.


*