基于DWC2的USB驅(qū)動開發(fā)-0x0D PHY寄存器讀寫代碼編寫與測試 (qq.com)
1.1 前言
前面我們詳細(xì)講解了ULPI接口,一般情況不需要關(guān)注ULPI總線接口上的信號。但有時候我們需要進(jìn)行底層問題的分析,此時就需要抓取ULPI總線上的數(shù)據(jù)來進(jìn)行分析,此時就需要使用邏輯分析進(jìn)行信號抓取,這個時候一個好用的邏輯分析儀就非常重要了。
我們使用Acute的TL4234B邏輯分析儀抓取ULPI總線數(shù)據(jù),該邏輯分析儀支持ULPI解碼非常方便。
該邏輯分析儀的使用參考https://mp.weixin.qq.com/s/bCdgCNsGPbYjSzjv8VJyRA。
測試代碼見https://mp.weixin.qq.com/s/r64ayPKzJtLxpUvsmZYvWg
設(shè)置好相應(yīng)的信號之后可以按照如下添加ULPI協(xié)議分析通道
1.2 讀寄存器
讀寄存器的標(biāo)準(zhǔn)時序如下
我們實(shí)際抓到的讀0寄存器,波形如下
可以看到分析儀自動解析出了過程
對應(yīng)測試代碼
res = hw_dwc2_read_phyreg(0x00,®val,1000);
if(res != 0)
{
return res;
}
usb_hal_info("[VIDL]:0x%x\\r\\n",regval);
我們詳細(xì)分析下如下過程
(1) 此時DIR為低,總線所有權(quán)歸LINK所有,但是LINK沒有數(shù)據(jù)要發(fā)送,所以驅(qū)動數(shù)據(jù)線全0。
(2) 此時軟件進(jìn)行讀立即寄存器0的操作,對應(yīng)的命令字節(jié)為0xC0,發(fā)送到總線上,但是NXT被PHY拉為低,說明PHY沒有接收,LINK只能繼續(xù)重發(fā)
(3) 重發(fā)0xC0,此時NXT被PHY拉高,說明被PHY接收了。
注意DIR和NXT應(yīng)該在CLK的上升沿處跳變,但是由于信號一致性問題CLK不是很完美,所以邏輯分析抓出來的CLK信號有一些偏移,占空比也不是50%.
(4) DIR低到高之后的CLK上升沿開始是turnaround
(5) 該CLK上升沿,LINK鎖存PHY發(fā)出的數(shù)據(jù)0x24
(6) DIR由高到低之后的CLK上升沿開始是turnaround
(7) 回到空閑狀態(tài),DIR為0,LINK驅(qū)動總線為0
1.3 寫寄存器
寫寄存器理想的時序如下
寫0x16寄存器為0x55
對應(yīng)代碼為
hw_dwc2_write_phyreg(0x16,0x55,1000);
if(res != 0)
{
return res;
}
我們實(shí)際抓到的波形如下
可以看到分析儀自動解析出了過程
我們詳細(xì)分析下如下過程
(1) 此時DIR為低,總線所有權(quán)歸LINK所有,但是LINK沒有數(shù)據(jù)要發(fā)送,所以驅(qū)動數(shù)據(jù)線全0。
(2) 此時軟件進(jìn)行寫立即寄存器0x16的操作,對應(yīng)的命令字節(jié)為0x96,發(fā)送到總線上,但是NXT被PHY拉為低,說明PHY沒有接收,LINK只能繼續(xù)重發(fā)
(3) LINK重發(fā)0x96,此時NXT被PHY拉高,說明被PHY接收了。
(4) LINK發(fā)送數(shù)據(jù)0x55,NXT為高說明PHY接收了,于是下一個周期LINK 拉高STP結(jié)束。
同樣要注意DIR和NXT應(yīng)該在CLK的上升沿處跳變,但是由于信號一致性問題CLK不是很完美,所以邏輯分析抓出來的CLK信號有一些偏移,占空比也不是50%.
1.4 數(shù)據(jù)收發(fā)
同樣可以抓到USB數(shù)據(jù)傳輸時的內(nèi)容進(jìn)行分析
如下,不再詳細(xì)分析
寄存器讀寫和USB數(shù)據(jù)傳輸?shù)淖グ鼣?shù)據(jù)可以參考
鏈接:https://pan.baidu.com/s/1oOGlc8sbEywoEmRsgEGtvw?pwd=4j92
提取碼:4j92
1.5 總結(jié)
工欲善其事必先利其器,所以在USB開發(fā)中工具很重要,示波器,邏輯分析儀,USB協(xié)議分析儀等都不可少。在底層問題分析時缺少有力工具時很難進(jìn)一步分析,本文分享了ULPI抓包分析,實(shí)際抓包波形因?yàn)樾盘栙|(zhì)量問題可能沒有那么理想,所以信號的冗余度也是很重要的,很多時候問題可能就是時序問題。
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8694瀏覽量
151926 -
usb
+關(guān)注
關(guān)注
60文章
7981瀏覽量
266101 -
邏輯分析儀
+關(guān)注
關(guān)注
3文章
214瀏覽量
23273 -
驅(qū)動開發(fā)
+關(guān)注
關(guān)注
0文章
130瀏覽量
12112 -
DWC2
+關(guān)注
關(guān)注
0文章
35瀏覽量
151
發(fā)布評論請先 登錄
相關(guān)推薦
評論