|

【實作實驗室】HDMI 螢幕沒畫面,用邏輯分析儀 debug

   

作者:實作派

前陣子我買了 HDMI 螢幕來當攝影機的監視器,只是當我把攝影機接上去時,HDMI 螢幕卻沒畫面!

這螢幕新買的耶,到底是怎麼回事呢?我們一起來看看。

為什麼會沒畫面?測試歸納問題

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

只要 HDMI cable 最後插上就會沒畫面(圖片來源:實作派提供)

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

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

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

用樹莓派測試 HDMI 螢幕,結果有畫面(圖片來源:實作派提供)

HDMI 螢幕的通訊小知識

既然送修可能會有爭議,所以我決定自己來找找到底是哪裡有問題。

動手之前,先來點行前教育,如下圖,左右兩邊分別代表攝影機和螢幕的 HDMI 插座。

HDMI cable 在插上去的瞬間,攝影機和螢幕會先做溝通,目的是用來確認待會兒要用哪種訊號格式傳送,確認後攝影機才會依照協議送影像訊號。

攝影機和 HDMI 螢幕會協議用哪種影像格式(圖片來源:實作派提供)

它們之間的通訊大概是這樣:

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

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

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

觀察 HDMI 螢幕訊號的邏輯分析儀(圖片來源:實作派提供)

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

觀察 DDC 與 HotPlug

為了把 HDMI 的腳位跳接出來,我特地買了下圖這種 HDMI 測試板,方便我把訊號線跳接出來。

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

HDMI 的測試板(圖片來源:實作派提供)

1. 樹莓派接螢幕

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

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

樹莓派正常的 HDMI 時序圖(圖片來源:實作派提供)

2. 攝影機接螢幕,cable 重插拔

再來看攝影機的不正常時序圖,如下圖,這是把 HDMI cable 故意重新插拔後,得到的時序圖。

你看下半部的總區間出現了三次的 EDID 詢問,在第一次詢問後,HotPlug 就一直被週期性地拉 low 再拉 high,因此攝影機就認為 cable 被重新插拔,它就會再問一次 EDID,共問了三次,事實上這個動作會不斷地循環重複,而螢幕也一直沒有畫面。

由於攝影機的 +5 V 供電不會有變化,所以這 HotPlug 的跳動一定是螢幕拉的,剛才我有說螢幕仍保有 HotPlug 的控制權,那問題就變成:螢幕為何要把 HotPlug 拉 low?

攝影機重插拔的 HDMI 不正常時序圖(圖片來源:實作派提供)

3. 攝影機接螢幕,螢幕重上電

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

螢幕重新上電的正常 HDMI 時序圖(圖片來源:實作派提供)

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

4. 時序圖比較

如果我們把上面三種時序圖拿來比較,只有第二種會沒畫面,而且也只有第二種的 HotPlug 會亂跳,所以我可以合理懷疑 HotPlug 和沒畫面有直接的關係,當然也可以進一步推論,會不會是 EDID 的資料有問題導致 HotPlug 亂跳,所以我還去看了 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 訊號,但我內心其實並不認為它是個問題,只不過越不會被懷疑的東西,有時候偏偏就是它,所以我們還是來看一下。

1. 樹莓派沒有 CEC

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

樹莓派沒有 CEC 訊號(圖片來源:實作派提供)

2. 攝影機有 CEC

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

攝影機重插拔的 CEC 訊號(圖片來源:實作派提供)

 

3. 切斷 CEC 的時序圖

要判斷 CEC 是否真的影響 HotPlug 的最好方法,就是把 CEC 切斷,然後再做一次實驗,於是我拿了另一個 HDMI 測試板,把上面的 CEC 銅箔用刀片切斷,如下圖。

眼尖的你可能會發現我怎麼會切在 Pin 7,CEC 不是應該要在 Pin 13 嗎?那是因為這塊測試板它印錯了,但不影響實際測試,所以網路上買東西還是要小心一點,我也是搞了好久才發現它印錯。

將 HDMI 的 CEC 切斷(圖片來源:實作派提供)

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

切斷 CEC 的 HDMI 時序圖(圖片來源:實作派提供)

觀察 TMDS

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

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

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

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

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

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

HDMI 螢幕的 TMDS 訊號臨界值為 3.05 V(圖片來源:實作派提供)

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

TMDS 的連接方式(圖片來源:實作派提供)

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

1. 螢幕重新上電>>>正常的波形

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

正常的 TMDS 訊號(圖片來源:實作派提供)

2. HDMI cable重插拔>>>不正常的波形

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

不正常的 TMDS 訊號(圖片來源:實作派提供)

整體來看 TMDS 就是輸出不完全,它沒有一個長時間的帶狀訊號,所以螢幕當然就解不出畫面來。

根據之前的實驗,有畫面與沒畫面的差別在 HotPlug 最明顯,雖然這次 TMDS 異常的地方在 HotPlug 拉 low 之前,但是我認為 TMDS 應該有受到 HotPlug 的影響,為什麼呢?

因為邏輯分析儀僅依靠臨界點 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 了,那這樣我不如把它 OFF 來看看,所以我就這麼做了。

準備把 Input Auto Switch 設定為 OFF(圖片來源:實作派提供)

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

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

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

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

(本文經同意轉載自實作派電子實驗室原文連結;責任編輯:賴佩萱)

StrongPiLab
StrongPiLab

Author: StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *