今天分享一個前端時間項目上遇到的問題,網(wǎng)口不協(xié)商問題,今天主要分享我自己的一個問題定位的思路,以及幫助大家避坑,希望讀到這篇文章的朋友不會犯同樣的錯誤。
首先介紹下產(chǎn)品背景,如下為產(chǎn)品方框示意圖:
1,問題發(fā)現(xiàn)及現(xiàn)象
收到 EVT1樣機,最開始發(fā)現(xiàn)單板可正常啟動,串口打印正常,無線模塊已正常啟動,但是發(fā)現(xiàn)有線口不link,考慮到該方案使用一款新方案的千兆PHY,可能是硬件設計問題,或者軟件驅動沒有適配好。
2.問題分析定位過程
a.首先我們檢查硬件電路設計是否正常?
--通過對比參考設計,未發(fā)現(xiàn)異常部分。
b.測量PHY 芯片的各組工作電壓是否正常,晶體是否起振?
--整個芯片就兩組電壓,3.3V和1.0V(內置DC_DC轉換),測量發(fā)現(xiàn)3.3V電壓正常,1.0V無輸出,同時25M 晶體也沒有起振。由此我們判斷此PHY芯片還沒有正常工作,應該是軟件驅動沒有適配好,于是讓軟件同事檢查軟件配置及設置相關。
c.軟件同事發(fā)現(xiàn)軟件配置確有異常,最初版本沒有適配到這個PHY芯片,于是我們重新燒錄軟件,再次驗證,發(fā)現(xiàn)網(wǎng)口仍然不link.
--繼續(xù)測試檢查硬件,首先復驗之前的問題,發(fā)現(xiàn)1.0V電壓正常,25M晶體已經(jīng)起振,同時我們測量RGMII接口,MDC/MDIO 控制線接口,發(fā)現(xiàn)MDC有時鐘波形,并且數(shù)據(jù)線上也能測試到波形。此時基本可以判斷PHY芯片已經(jīng)正常工作了,從MAC到PHY這段也基本上沒有什么問題,但是網(wǎng)口仍然不link,問題大概率就在PHY到RJ45這段了,這一段只有MDI走線+電容耦合+RJ45.前面已經(jīng)檢查連線沒有問題,而中間的耦合電路是其它項目的成熟應用,問題就在RJ45.
d.通過前面的測試和分析,我們已經(jīng)鎖定問題點在RJ45,最大懷疑就是RJ45的封裝是否正確。于是找出RJ45的規(guī)格核對封裝。--不知道大家看到下面下面兩個圖是否發(fā)現(xiàn)了異常?
通過對比發(fā)現(xiàn):兩個封裝的PIN腳定義,雖然第2PIN都是相同的,但是推薦的已經(jīng)標示到9了,于是我們找廠商核對,確認這個網(wǎng)口的PIN腳定義。
e.通過與廠商確認,為什么他們標識的PIN腳都到9了,他們的回復是他們這個規(guī)格書是做的10PIN接口的。由于我們使用的8PIN針腳,所以去掉了第1PIN和10PIN。同時給出了8PIN的pin腳定義。他們標識的2PIN對應8針就是1PIN。到此我們確定我們所建封裝第1.2PIN順序反了,導致網(wǎng)口不協(xié)商。其實1和2,7和8反了是不影響功能,但是3和4,5和6反了,網(wǎng)口接線順序就錯位了,就會導致功能問題。--不知道大家是否遇到過10PIN RJ45的規(guī)格書。我反正是第一次。
3.解決措施
措施分為臨時措施及長期措施,臨時措施就是要解決眼前的問題,完成單板硬件的測試與調試工作,長期措施就是要永久徹底解決這個問題。
臨時措施:
a.可以通過PCB飛線,通過前面的分析,只需交叉3和4,以及5和6即可??紤]板子空間小,可操作性不強。
b.修改正常網(wǎng)線一端的線序,及交叉3和4,5和6。
EIA/TIA568B 標準網(wǎng)線線序:白橙、橙、白綠、藍、白藍、綠、白棕、棕
一端 交叉3和4,5和6之后:白橙、橙、藍、白綠、綠、白藍、白棕、棕
4.總結
1.這次問題主要原因在于對廠商提供的規(guī)格書,解讀有誤導致,對規(guī)格書的描述有誤解,其它最開始也是有疑惑的,一般RJ45常規(guī)做法都是標示第1PIN的,也有一定的疏忽大意,雖然有疑惑,但是沒有找供應商double check ,還是按照自己的理解執(zhí)行下去了。后續(xù)在解讀廠商規(guī)格書的時候,有任何疑問都要及時與廠商確認。
2.為了避免類似錯誤再次發(fā)生,我們也可以對RJ45的PIN腳定義做一個總結,因為RJ45也是屬于標準器件,其實它的第一PIN也是標注,就算我們不看規(guī)格書,只要理解了它的標準定義,也是可以知道它的第一PIN。
我們常見的網(wǎng)口有兩種,如果我們水平放置RJ45,RJ45有一個缺口,缺口要么在上,要么在下。有一句口訣就是,缺口向下,左邊第一。
我們回顧一下這個問題,算是一個低級錯誤,我們知道如果PCB 封裝錯誤,對硬件來說是嚴重的,基本上就意味著要改版。只要我們多想一點,平時多思考一些,很多問題都是可以避免的,希望本文可以幫助到你,在硬件設計路上不要踩我踩過的坑。