試實(shí)戰(zhàn))
1. 從“MIPI LP RX”說(shuō)起這個(gè)低功耗接收端到底在做什么第一次看到“MIPI LP RX”這個(gè)組合很多人會(huì)愣一下。MIPI我熟手機(jī)屏、攝像頭、FPGA開(kāi)發(fā)板上到處都是LP我也認(rèn)識(shí)Low Power嘛。但把這兩個(gè)拼在一起再加上一個(gè)RX它指的到底是什么簡(jiǎn)單說(shuō)MIPI LP RX 指的是 MIPI D-PHY 物理層中的低功耗接收通路。MIPI D-PHY 是 MIPI 聯(lián)盟定義的物理層規(guī)范幾乎所有 MIPI CSI攝像頭和 DSI顯示接口的底層都跑在它上面。D-PHY 的每條數(shù)據(jù) lane 和時(shí)鐘 lane 都由兩根線組成這兩根線在不同工作模式下承擔(dān)完全不同的角色高速模式下它們是一對(duì)差分信號(hào)跑幾百 Mbps 到幾 Gbps低功耗模式下它們各自獨(dú)立變成兩根單端信號(hào)線用來(lái)傳控制命令和狀態(tài)。LP RX 就是接收端在低功耗模式下的那套邏輯。它要干的事包括識(shí)別 LP 的幾種不同狀態(tài)LP-00、LP-01、LP-10、LP-11檢測(cè)從 LP 到 HS 的切換請(qǐng)求解析 Stop 狀態(tài)、Escape 模式、Ultra-Low Power State 等。聽(tīng)起來(lái)像是“低速輔助通道”但沒(méi)有它整條鏈路根本起不來(lái)——HS 高速傳輸?shù)倪M(jìn)入和退出全靠 LP 狀態(tài)機(jī)來(lái)握手。這篇文章適合誰(shuí)看如果你在做 FPGA 驅(qū)動(dòng) MIPI 屏、調(diào)試嵌入式工業(yè)設(shè)備上的 MIPI 攝像頭、或者用示波器抓 MIPI 信號(hào)發(fā)現(xiàn)“怎么沒(méi)波形”那 LP RX 就是你繞不過(guò)去的一環(huán)。我會(huì)從協(xié)議原理講到實(shí)操調(diào)試把 LP 狀態(tài)機(jī)、時(shí)序參數(shù)、常見(jiàn)故障和排查方法都拆開(kāi)說(shuō)清楚。不管你是剛接觸 MIPI 的新手還是已經(jīng)調(diào)過(guò)幾塊屏的老手應(yīng)該都能從里面找到有用的東西。2. MIPI D-PHY 低功耗模式的核心機(jī)制拆解2.1 LP 和 HS 為什么必須共存要理解 LP RX先得理解 D-PHY 為什么要設(shè)計(jì)兩套完全不同的信號(hào)模式。這背后的邏輯其實(shí)很樸素高速傳輸費(fèi)電低速控制省電但兩者又必須無(wú)縫切換。想象一條高速公路。HS 模式就是高速行駛的車道車輛數(shù)據(jù)以極高速度通過(guò)但維持這個(gè)速度需要持續(xù)的動(dòng)力功耗。LP 模式則是收費(fèi)站和服務(wù)區(qū)車速降下來(lái)功耗也降下來(lái)但車輛需要在這里完成繳費(fèi)、確認(rèn)路線、等待放行。沒(méi)有收費(fèi)站高速上的車就不知道什么時(shí)候該走、什么時(shí)候該停。具體到電氣層面HS 模式使用差分信號(hào)擺幅只有 100mV 到 300mV共模電壓約 200mV終端匹配 100 歐姆。這種小擺幅、差分傳輸?shù)姆绞竭m合高速但靜態(tài)功耗不低。LP 模式則使用單端信號(hào)電平是 0V 到 1.2V典型值擺幅大、速度低通常不超過(guò) 10Mbps但靜態(tài)功耗極低。D-PHY 規(guī)定每條 lane 在任意時(shí)刻要么處于 HS 模式要么處于 LP 模式不能混。LP RX 的職責(zé)就是在 LP 模式下正確接收和解析信號(hào)并在合適的時(shí)機(jī)觸發(fā)向 HS 模式的切換。2.2 LP 的四種基本狀態(tài)與電平組合LP 模式下每條 lane 的兩根線通常叫 Dp 和 Dn各自獨(dú)立取值組合出四種狀態(tài)狀態(tài)Dp 電平Dn 電平含義LP-0000橋接狀態(tài)常用于 Escape 模式入口LP-0101與 LP-10 配合表示不同控制含義LP-1010與 LP-01 配合表示不同控制含義LP-1111Stop 狀態(tài)鏈路空閑時(shí)的默認(rèn)狀態(tài)這四種狀態(tài)是 LP 層所有通信的基礎(chǔ)。比如從 LP-11 切換到 LP-01再切換到 LP-00最后進(jìn)入 HS 模式這是 HS 進(jìn)入的標(biāo)準(zhǔn)序列。反過(guò)來(lái)從 HS 退出時(shí)發(fā)送端會(huì)先發(fā)一個(gè)同步序列然后拉回 LP-11。LP RX 需要持續(xù)采樣這兩根線的電平識(shí)別出當(dāng)前處于哪個(gè)狀態(tài)并根據(jù)狀態(tài)跳變判斷發(fā)送端的意圖。這里的關(guān)鍵是采樣時(shí)鐘——LP 信號(hào)沒(méi)有隨路時(shí)鐘接收端必須自己用本地時(shí)鐘去采樣。通常采樣時(shí)鐘頻率是 LP 信號(hào)速率的 4 到 8 倍以保證足夠的裕量。2.3 Escape 模式與低功耗狀態(tài)解析除了基本的 Stop 狀態(tài)和 HS 切換LP 模式還定義了一套 Escape 模式用于傳輸?shù)退倜?。Escape 模式的進(jìn)入方式是從 LP-11 切換到 LP-10再切換到 LP-00然后保持 LP-00 一段時(shí)間通常大于 100ns接收端檢測(cè)到這個(gè)序列后就知道要進(jìn)入 Escape 模式了。進(jìn)入 Escape 模式后發(fā)送端會(huì)發(fā)送一個(gè) 8 位的命令碼比如ULPSUltra-Low Power State命令碼 00011101用于請(qǐng)求進(jìn)入超低功耗狀態(tài)。此時(shí) lane 會(huì)保持在 LP-00功耗降到極低。Remote Trigger用于觸發(fā)遠(yuǎn)端事件。Reset用于復(fù)位鏈路。LPDTLow-Power Data Transmission用于在 LP 模式下傳輸數(shù)據(jù)。LP RX 在 Escape 模式下需要正確解析這些命令碼并做出相應(yīng)動(dòng)作。比如收到 ULPS 請(qǐng)求后接收端應(yīng)該確認(rèn)進(jìn)入 ULPS并等待發(fā)送端發(fā)出退出序列通常是 LP-10 到 LP-11 的跳變。這里有個(gè)容易踩的坑Escape 模式的命令碼是 LSB First 還是 MSB First不同廠商的 IP 核實(shí)現(xiàn)可能不一樣調(diào)試時(shí)必須對(duì)照具體手冊(cè)確認(rèn)。我遇到過(guò)因?yàn)槲恍蚋惴磳?dǎo)致 ULPS 命令解析錯(cuò)誤的情況排查了大半天才發(fā)現(xiàn)是這個(gè)問(wèn)題。2.4 LP RX 在協(xié)議棧中的位置從協(xié)議棧角度看MIPI D-PHY 位于最底層上面是 CSI 或 DSI 協(xié)議層。LP RX 屬于 D-PHY 的物理層功能但它又和協(xié)議層的狀態(tài)機(jī)有交互。比如 CSI 接收端在檢測(cè)到幀開(kāi)始Frame Start時(shí)需要先通過(guò) LP 模式完成一些握手然后才能進(jìn)入 HS 接收數(shù)據(jù)。在 FPGA 實(shí)現(xiàn)中LP RX 通常是一個(gè)獨(dú)立的模塊輸入是差分對(duì)經(jīng)過(guò) IBUFDS 后的單端信號(hào)輸出是解析后的狀態(tài)信息和命令。這個(gè)模塊的時(shí)序約束非常關(guān)鍵因?yàn)?LP 信號(hào)的邊沿可能比較慢而采樣時(shí)鐘又需要足夠快。3. 從零搭建 LP RX 接收邏輯的關(guān)鍵細(xì)節(jié)3.1 信號(hào)采樣與去抖處理LP 信號(hào)的邊沿速率通常比 HS 慢很多典型上升/下降時(shí)間在幾十納秒量級(jí)。這意味著如果直接用高頻時(shí)鐘去采樣可能會(huì)在邊沿附近采到不確定的值。所以第一步要做的是同步和去抖。我的做法是用本地時(shí)鐘比如 200MHz對(duì) Dp 和 Dn 分別打兩拍然后用一個(gè)簡(jiǎn)單的數(shù)字濾波器——連續(xù)采樣到相同值超過(guò) 3 個(gè)周期才認(rèn)為狀態(tài)穩(wěn)定。這樣既能濾掉毛刺又不會(huì)引入太大延遲。// 簡(jiǎn)單的去抖邏輯示例 reg [1:0] dp_sync, dn_sync; reg [2:0] dp_filter, dn_filter; always (posedge clk) begin dp_sync {dp_sync[0], dp_in}; dn_sync {dn_sync[0], dn_in}; if (dp_sync[1] dp_filter[2]) dp_filter dp_filter; else dp_filter {dp_filter[1:0], dp_sync[1]}; // dn 同理 end去抖的深度需要根據(jù)實(shí)際信號(hào)質(zhì)量調(diào)整。如果信號(hào)邊沿很慢可能需要更深的濾波如果信號(hào)干凈可以淺一些以減少延遲。3.2 LP 狀態(tài)機(jī)的狀態(tài)編碼與跳轉(zhuǎn)LP 狀態(tài)機(jī)的核心是識(shí)別四種基本狀態(tài)和它們之間的合法跳轉(zhuǎn)。我通常用兩個(gè)寄存器分別存 Dp 和 Dn 的穩(wěn)定值然后組合成狀態(tài)碼localparam LP_00 2b00; localparam LP_01 2b01; localparam LP_10 2b10; localparam LP_11 2b11; wire [1:0] lp_state {dp_stable, dn_stable};狀態(tài)跳轉(zhuǎn)的判斷需要結(jié)合時(shí)間信息。比如從 LP-11 到 LP-01 的跳轉(zhuǎn)如果只是瞬間抖動(dòng)不應(yīng)該觸發(fā) HS 進(jìn)入序列。D-PHY 規(guī)范里定義了各種時(shí)序參數(shù)比如 TLPXLP 狀態(tài)之間的最小時(shí)間、THS-PREPAREHS 準(zhǔn)備時(shí)間等接收端需要根據(jù)這些參數(shù)來(lái)判斷跳轉(zhuǎn)是否合法。一個(gè)實(shí)用的做法是用計(jì)數(shù)器測(cè)量每個(gè)狀態(tài)的持續(xù)時(shí)間只有持續(xù)時(shí)間超過(guò)閾值才認(rèn)為狀態(tài)有效。閾值可以參考規(guī)范里的最小值再留一些裕量。3.3 HS 進(jìn)入檢測(cè)與握手時(shí)序HS 進(jìn)入序列是 LP RX 最關(guān)鍵的檢測(cè)邏輯之一。標(biāo)準(zhǔn)序列如下發(fā)送端從 LP-11 切換到 LP-01保持 LP-01 一段時(shí)間TLPX切換到 LP-00保持 LP-00 一段時(shí)間THS-PREPARE發(fā)送端開(kāi)始驅(qū)動(dòng) HS 信號(hào)差分?jǐn)[幅接收端檢測(cè)到 HS 擺幅后進(jìn)入 HS 接收模式接收端需要檢測(cè)到 LP-01 到 LP-00 的跳轉(zhuǎn)并在 LP-00 持續(xù)時(shí)間超過(guò) THS-PREPARE 后準(zhǔn)備切換到 HS 模式。這里有個(gè)細(xì)節(jié)HS 進(jìn)入時(shí)發(fā)送端會(huì)先發(fā)一個(gè)同步序列00011101接收端需要用 HS 時(shí)鐘去采樣這個(gè)序列確認(rèn)同步后再開(kāi)始接收有效數(shù)據(jù)。在 FPGA 實(shí)現(xiàn)中HS 接收通常用 ISERDES 或 SelectIO 的差分輸入功能LP 接收則用普通 IO。兩者之間的切換需要仔細(xì)設(shè)計(jì)避免在切換瞬間丟失數(shù)據(jù)。3.4 時(shí)序參數(shù)計(jì)算與約束設(shè)置D-PHY 規(guī)范里定義了一系列時(shí)序參數(shù)接收端設(shè)計(jì)時(shí)需要確保自己的邏輯能滿足這些參數(shù)的要求。幾個(gè)關(guān)鍵的TLPXLP 狀態(tài)之間的最小時(shí)間典型值 50nsTHS-PREPAREHS 準(zhǔn)備時(shí)間典型值 40ns 4*UITHS-ZEROHS 零狀態(tài)時(shí)間典型值 105ns 6*UITHS-TRAILHS 尾部時(shí)間典型值 60ns 4*UI其中 UI 是 HS 傳輸?shù)膯挝婚g隔比如 1Gbps 時(shí) UI1ns。接收端的采樣時(shí)鐘頻率決定了時(shí)間分辨率。假設(shè)采樣時(shí)鐘 200MHz周期 5ns那么 50ns 對(duì)應(yīng) 10 個(gè)周期。設(shè)計(jì)時(shí)可以用計(jì)數(shù)器來(lái)測(cè)量這些時(shí)間確保狀態(tài)跳轉(zhuǎn)判斷的準(zhǔn)確性。時(shí)序約束方面LP 信號(hào)的輸入延遲需要根據(jù) PCB 走線和 IO 緩沖延遲來(lái)設(shè)置。如果走線較長(zhǎng)可能需要調(diào)整采樣時(shí)鐘的相位保證在信號(hào)穩(wěn)定區(qū)域采樣。4. 實(shí)操調(diào)試從示波器抓波形到問(wèn)題定位4.1 調(diào)試環(huán)境搭建與初始檢查調(diào)試 MIPI LP RX 的第一步不是寫代碼而是確認(rèn)硬件連接和供電。我見(jiàn)過(guò)太多案例折騰半天發(fā)現(xiàn)是排線沒(méi)插緊或者供電電壓不對(duì)。檢查清單確認(rèn) MIPI 排線方向正確金手指沒(méi)有氧化測(cè)量 D-PHY 供電電壓通常是 1.2V 或 1.8V紋波要小確認(rèn)參考時(shí)鐘如果有頻率和電平正確用萬(wàn)用表測(cè) LP 信號(hào)線的直流電平Stop 狀態(tài)下應(yīng)該是 1.2V 左右如果這些都沒(méi)問(wèn)題再上示波器。示波器帶寬建議不低于 1GHz探頭用差分探頭或者兩個(gè)單端探頭做數(shù)學(xué)運(yùn)算。先看 LP 信號(hào)有沒(méi)有波形再看 HS 信號(hào)有沒(méi)有差分?jǐn)[幅。4.2 常見(jiàn)故障一LP 狀態(tài)機(jī)卡死現(xiàn)象接收端一直停在某個(gè) LP 狀態(tài)不響應(yīng)發(fā)送端的跳轉(zhuǎn)。排查思路用示波器看 Dp 和 Dn 的實(shí)際波形確認(rèn)發(fā)送端確實(shí)在發(fā)跳轉(zhuǎn)序列檢查接收端的采樣時(shí)鐘是否正常有沒(méi)有停振檢查去抖邏輯的閾值是否過(guò)大導(dǎo)致快速跳轉(zhuǎn)被濾掉檢查狀態(tài)機(jī)的跳轉(zhuǎn)條件是否覆蓋了所有合法序列我遇到過(guò)一次發(fā)送端從 LP-11 到 LP-01 的跳轉(zhuǎn)很快只有 20ns而我的去抖邏輯需要連續(xù) 5 個(gè)周期25ns才確認(rèn)結(jié)果跳轉(zhuǎn)被濾掉了。后來(lái)把去抖深度降到 3 個(gè)周期就正常了。4.3 常見(jiàn)故障二HS 進(jìn)入失敗現(xiàn)象LP 狀態(tài)檢測(cè)正常但 HS 數(shù)據(jù)收不到或者收到全是錯(cuò)。排查思路確認(rèn) HS 進(jìn)入序列的時(shí)序是否符合規(guī)范特別是 THS-PREPARE 和 THS-ZERO檢查 HS 接收端的同步序列檢測(cè)邏輯同步碼是否正確檢查 ISERDES 的相位對(duì)齊可能需要調(diào)整 IDELAY確認(rèn) HS 終端匹配電阻是否正確通常 100 歐姆差分有個(gè)實(shí)用的技巧在 HS 進(jìn)入失敗時(shí)先把 HS 速率降下來(lái)。比如從 1Gbps 降到 500Mbps如果低速能通說(shuō)明是時(shí)序裕量不夠需要調(diào)整采樣相位或改善信號(hào)完整性。4.4 常見(jiàn)故障三Escape 模式命令解析錯(cuò)誤現(xiàn)象ULPS 進(jìn)入或退出異?;蛘?LPDT 數(shù)據(jù)錯(cuò)亂。排查思路確認(rèn) Escape 模式的進(jìn)入序列檢測(cè)正確LP-11 → LP-10 → LP-00 → 保持檢查命令碼的位序LSB First 還是 MSB First確認(rèn)命令碼的采樣時(shí)刻應(yīng)該在 LP-00 穩(wěn)定后采樣檢查退出 Escape 模式的序列檢測(cè)這里有個(gè)容易忽略的點(diǎn)Escape 模式的命令碼之間可能有間隔接收端需要正確區(qū)分命令碼和間隔。通常命令碼是連續(xù)的 8 位間隔是 LP-00 保持。如果間隔檢測(cè)錯(cuò)誤可能會(huì)把兩個(gè)命令碼拼在一起。4.5 常見(jiàn)問(wèn)題速查表問(wèn)題現(xiàn)象可能原因排查方法解決措施LP 狀態(tài)不跳轉(zhuǎn)采樣時(shí)鐘異常示波器測(cè)時(shí)鐘檢查時(shí)鐘源和布線LP 狀態(tài)跳轉(zhuǎn)錯(cuò)誤去抖閾值過(guò)大抓波形測(cè)跳轉(zhuǎn)時(shí)間減小去抖深度HS 進(jìn)入失敗時(shí)序裕量不足降速測(cè)試調(diào)整采樣相位HS 數(shù)據(jù)錯(cuò)誤同步碼檢測(cè)錯(cuò)誤抓 HS 波形檢查同步邏輯ULPS 異常命令碼位序錯(cuò)誤對(duì)照手冊(cè)調(diào)整位序鏈路不穩(wěn)定信號(hào)完整性差測(cè)眼圖改善走線和匹配5. 進(jìn)階話題LP RX 在不同平臺(tái)上的實(shí)現(xiàn)差異5.1 FPGA 平臺(tái)上的 LP RX 實(shí)現(xiàn)要點(diǎn)在 FPGA 上實(shí)現(xiàn) LP RX最大的挑戰(zhàn)是IO 資源的選擇和時(shí)序約束。不同廠商的 FPGA 在 IO 結(jié)構(gòu)上有差異比如 Xilinx 的 SelectIO 和紫光同創(chuàng)的 IO 原語(yǔ)就不一樣。以 Xilinx 為例LP 信號(hào)可以接到普通 IO用 IDELAY 調(diào)整采樣相位。HS 信號(hào)則需要用 ISERDES 或 SelectIO 的差分輸入功能。關(guān)鍵是LP 和 HS 的切換需要在 IO 層面做 MUX或者用兩個(gè)獨(dú)立的 IO 分別接 LP 和 HS然后在內(nèi)部切換。紫光同創(chuàng)的 FPGA 在 MIPI 應(yīng)用上也有不少案例他們的 IO 原語(yǔ)和 Xilinx 類似但具體參數(shù)和約束方式不同。調(diào)試時(shí)需要參考具體的器件手冊(cè)。5.2 嵌入式工業(yè)設(shè)備中的 LP RX 調(diào)試經(jīng)驗(yàn)工業(yè)設(shè)備上的 MIPI 接口通常面臨更惡劣的環(huán)境溫度范圍寬、電磁干擾強(qiáng)、線纜較長(zhǎng)。這些因素都會(huì)影響 LP RX 的穩(wěn)定性。我的經(jīng)驗(yàn)是增加去抖深度工業(yè)環(huán)境的毛刺更多降低 LP 采樣時(shí)鐘頻率提高抗干擾能力增加狀態(tài)跳轉(zhuǎn)的超時(shí)檢測(cè)避免卡死在 PCB 上增加共模扼流圈抑制共模干擾另外工業(yè)設(shè)備通常需要長(zhǎng)時(shí)間穩(wěn)定運(yùn)行所以 LP RX 的狀態(tài)機(jī)要有完善的錯(cuò)誤恢復(fù)機(jī)制。比如檢測(cè)到異常狀態(tài)時(shí)自動(dòng)復(fù)位到 LP-11 等待重新握手。5.3 與 LVDS 方案的對(duì)比與選型建議MIPI 和 LVDS 都是常見(jiàn)的顯示和攝像頭接口但 LP RX 是 MIPI 特有的。LVDS 沒(méi)有 LP 模式它的控制信號(hào)通常走單獨(dú)的線。選型時(shí)考慮速率需求MIPI HS 可以到幾 GbpsLVDS 通常幾百 Mbps功耗要求MIPI 的 LP 模式在待機(jī)時(shí)功耗極低LVDS 待機(jī)功耗較高布線復(fù)雜度MIPI 的 LP 和 HS 復(fù)用同一對(duì)線布線更簡(jiǎn)單成本LVDS 方案通常更便宜MIPI 需要更復(fù)雜的接收端如果項(xiàng)目對(duì)功耗和布線有嚴(yán)格要求MIPI 是更好的選擇如果成本敏感且速率要求不高LVDS 可能更合適。5.4 調(diào)試工具與儀器選擇調(diào)試 LP RX好的工具能省一半時(shí)間。我的推薦示波器帶寬至少 1GHz最好有差分探頭和 MIPI 解碼選件協(xié)議分析儀能抓 LP 和 HS 的完整序列比如 Teledyne LeCroy 的 MIPI 分析儀邏輯分析儀用于抓 LP 狀態(tài)跳轉(zhuǎn)采樣率要足夠高萬(wàn)用表測(cè)直流電平和供電如果預(yù)算有限至少要有示波器和邏輯分析儀。協(xié)議分析儀可以租用不一定非要買。6. 幾個(gè)讓我印象深刻的調(diào)試案例6.1 案例一ST7701S 屏幕橫向花屏有一次調(diào)一塊 ST7701S 的 MIPI 屏顯示正常但橫向花屏。一開(kāi)始懷疑是 HS 數(shù)據(jù)錯(cuò)誤抓波形發(fā)現(xiàn) HS 眼圖很好。后來(lái)用邏輯分析儀抓 LP 信號(hào)發(fā)現(xiàn) LP 狀態(tài)機(jī)在每幀開(kāi)始時(shí)偶爾會(huì)誤判導(dǎo)致 HS 進(jìn)入時(shí)序偏移。根因是 LP 去抖邏輯在幀開(kāi)始時(shí)的干擾下誤觸發(fā)。解決辦法是在幀開(kāi)始前增加一個(gè)保護(hù)窗口屏蔽 LP 狀態(tài)跳轉(zhuǎn)檢測(cè)。這個(gè)案例說(shuō)明LP RX 的穩(wěn)定性直接影響 HS 數(shù)據(jù)的正確性。6.2 案例二RK3588 輸入 1080i 信號(hào)異常RK3588 的 MIPI 輸入支持 1080i 隔行信號(hào)但調(diào)試時(shí)發(fā)現(xiàn)圖像閃爍。排查后發(fā)現(xiàn)是 LP RX 對(duì)場(chǎng)同步信號(hào)的解析有問(wèn)題。1080i 的場(chǎng)同步通過(guò) LP 模式傳輸時(shí)序和逐行不同。調(diào)整 LP 狀態(tài)機(jī)的超時(shí)參數(shù)后正常。這個(gè)案例提醒我不同視頻格式的 LP 時(shí)序可能不同調(diào)試時(shí)要根據(jù)具體格式調(diào)整參數(shù)。6.3 案例三FPGA 驅(qū)動(dòng) MIPI 屏無(wú)信號(hào)用 FPGA 驅(qū)動(dòng)一塊 MIPI 屏上電后屏幕無(wú)任何反應(yīng)。檢查發(fā)現(xiàn) LP 狀態(tài)機(jī)一直停在 LP-11沒(méi)有檢測(cè)到發(fā)送端的跳轉(zhuǎn)。用示波器看發(fā)送端波形發(fā)現(xiàn)發(fā)送端根本沒(méi)有發(fā) LP 跳轉(zhuǎn)序列。根因是發(fā)送端的初始化配置錯(cuò)誤沒(méi)有正確啟動(dòng) MIPI 輸出。這個(gè)案例說(shuō)明調(diào)試 LP RX 時(shí)先確認(rèn)發(fā)送端是否正常工作不要一上來(lái)就懷疑接收端。7. 寫在最后一些個(gè)人體會(huì)調(diào) MIPI LP RX 這些年最大的感受是協(xié)議規(guī)范要讀透但實(shí)際調(diào)試中更重要的是對(duì)信號(hào)的理解。規(guī)范里寫的時(shí)序參數(shù)是理想情況下的實(shí)際信號(hào)會(huì)有各種偏差。用示波器多看波形用邏輯分析儀多抓狀態(tài)跳轉(zhuǎn)比死磕規(guī)范更有效。另外LP RX 雖然只是 MIPI 的一小部分但它直接影響整條鏈路的穩(wěn)定性。很多 HS 數(shù)據(jù)錯(cuò)誤根因其實(shí)在 LP 握手階段。所以調(diào)試時(shí)不要跳過(guò) LP先把 LP 狀態(tài)機(jī)調(diào)穩(wěn)再調(diào) HS。最后分享一個(gè)小技巧在 LP 狀態(tài)機(jī)里加一個(gè)狀態(tài)跳轉(zhuǎn)的日志用 FPGA 的 IL A 或者邏輯分析儀抓出來(lái)能快速定位問(wèn)題。這個(gè)日志不需要太復(fù)雜記錄狀態(tài)碼和時(shí)間戳就夠了。我靠這個(gè)技巧解決過(guò)好幾次疑難問(wèn)題。