一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DWC2的USB驅(qū)動(dòng)開發(fā)-USB復(fù)位詳解

嵌入式USB開發(fā) ? 來源:嵌入式Lee ? 作者:嵌入式Lee ? 2023-07-07 11:18 ? 次閱讀

本文轉(zhuǎn)自公眾號(hào)歡迎關(guān)注

基于DWC2的USB驅(qū)動(dòng)開發(fā)-USB復(fù)位詳解 (qq.com)

一.前言

上一篇我們?cè)敿?xì)介紹了USB枚舉的第一步,連接檢測。那么第二步是干什么呢? 相信做過嵌入式開發(fā)尤其做過驅(qū)動(dòng)開發(fā)的都會(huì)想到-復(fù)位,基本上所有的外設(shè)模塊在開始都需要進(jìn)行復(fù)位操作,以達(dá)到一個(gè)默認(rèn)的狀態(tài),USB也不例外。一方面初始化時(shí)復(fù)位以達(dá)到默認(rèn)狀態(tài),一方面在異常時(shí)復(fù)位以恢復(fù)。話說復(fù)位可以解決99%的問題就是這么來的,如果還不能解決那就斷電復(fù)位,相信這是很多人解決問題的第一板斧,且不說是不是最優(yōu)選擇,至少這樣一般都有效,當(dāng)然可靠性考慮是否能直接復(fù)位一般都需要評(píng)估不能這么直接簡單粗暴。

這一篇我們就來詳細(xì)講講USB的復(fù)位,老規(guī)矩理論結(jié)合實(shí)踐,先看規(guī)格書的說明再寫驅(qū)動(dòng)實(shí)測。

二.USB的復(fù)位

2.1復(fù)位信號(hào)

首先,復(fù)位信號(hào)到底是什么樣的呢?調(diào)試外設(shè)時(shí)序的時(shí)候一般都會(huì)關(guān)注,復(fù)位一般用一組特殊的狀態(tài)時(shí)序來表示,USB也一樣。

我們看到USB2.0規(guī)格書中對(duì)復(fù)位信號(hào)的描述如下

b18e5432-1c5f-11ee-9c1d-dac502259ad0.png

對(duì)于發(fā)送端要求D+和D-小于VOL(max)持續(xù)10mS以上,VOL(max)的值為0.3V,如下

b1bacbd4-1c5f-11ee-9c1d-dac502259ad0.png

而對(duì)于接收端要求D+和D-小于VIL(max)持續(xù)10mS以上,VIL(max)值為0.8V

b1cca16a-1c5f-11ee-9c1d-dac502259ad0.png

可以看到VIL(max)比VOL(max)是要大的,這是對(duì)發(fā)送要求嚴(yán)格一些,因?yàn)橐紤]信號(hào)傳輸?shù)脑肼暩蓴_等因素,預(yù)留一些裕度。

上述10ms的參數(shù)實(shí)際有個(gè)名字叫(TDRST),規(guī)格書中要求如下

b1e05246-1c5f-11ee-9c1d-dac502259ad0.png

而一般要求接收端在D+和D-小于VIL(max)持續(xù)2.5uS以上就應(yīng)該檢測到復(fù)位,這個(gè)時(shí)間記住,我們可能會(huì)遇到臨界情況在這個(gè)值附近可能出現(xiàn)不穩(wěn)定的情況,調(diào)試時(shí)留個(gè)心眼,一旦出現(xiàn)這種很可能就是疑難雜癥,但是現(xiàn)在留個(gè)心眼以后就可能想起來確認(rèn)這里。

對(duì)于根集線器這里還有個(gè)要求就是非連續(xù)的復(fù)位要有3mS以上的間隔(TRHRSI),復(fù)位持續(xù)周期50mS(TDRSTR)以上(因?yàn)閁SB拓?fù)渥畲笥?個(gè)集線器)

b1fc778c-1c5f-11ee-9c1d-dac502259ad0.png

2.2復(fù)位過程

參考USB2.0的規(guī)格書《7.1.7.5 Reset Signaling》

在低速/全速模式下運(yùn)行的設(shè)備,如果其面向上游的端口上出現(xiàn)SE0超過2.5μs(TDETRST),則可以將該信號(hào)視為復(fù)位信號(hào)。復(fù)位須在復(fù)位信號(hào)結(jié)束之前生效。注意這里是復(fù)位信號(hào)結(jié)束之前就生效。(實(shí)際這里還可能導(dǎo)致隱蔽的BUG,我這里有一個(gè)精彩的案例分析,高速設(shè)備總是枚舉為全速設(shè)備的問題,神奇的是在復(fù)位中段服務(wù)函數(shù)中加個(gè)打印就好了,后面會(huì)分享)

b20fb68a-1c5f-11ee-9c1d-dac502259ad0.png

1.主機(jī)(HUB)檢測到設(shè)備連接,通過DP還是DM拉高區(qū)分是低速還是全速/高速。

2.主機(jī)(HUB驅(qū)動(dòng)信號(hào)SE0以產(chǎn)生復(fù)位信號(hào)。

3.設(shè)備檢測到SE0持續(xù)2.5uS(TFILTSE0)以上檢測到復(fù)位,產(chǎn)生復(fù)位中斷。

對(duì)于低速設(shè)備完成復(fù)位,對(duì)于全速和高速設(shè)備后面繼續(xù)進(jìn)行高速設(shè)備的檢測。

速度的檢測后面會(huì)單獨(dú)再講。

如果是從non-suspended全速狀態(tài)復(fù)位則必須在SE0

開始后的2.5uS(TFILTSE0)~3.0 ms(TWTRSTFS)時(shí)間內(nèi)進(jìn)行后續(xù)的高速速度檢測握手。

如果是從suspend狀態(tài)復(fù)位,則必須在SE0開始后的2.5uS(TFILTSE0)以上時(shí)間后進(jìn)行高速速度檢測握手,為什么這里沒有最長時(shí)間3.0 ms(TWTRSTFS)的限制了呢,因?yàn)閽炱饡r(shí)時(shí)鐘是停止的重啟時(shí)鐘需要時(shí)間,所以這里不限制上限時(shí)間。

如果是從non-suspended高速狀態(tài)復(fù)位,則設(shè)備在恢復(fù)到全速之前必須等待不少于3.0ms且不多于3.125ms(TWTREV)。通過移除高速端接電阻并重新連接D+上拉電阻器,可實(shí)現(xiàn)全速恢復(fù)。該設(shè)備對(duì)總線狀態(tài)進(jìn)行采樣,并在開始恢復(fù)至全速后檢查SE0(復(fù)位而非掛起)、不小于100μs且不大于875μs(TWTRSTHS)。如果檢測到SE0(復(fù)位),則設(shè)備開始高速檢測握手。

注意

設(shè)備必須能夠在復(fù)位恢復(fù)時(shí)間10 ms(TRSTRCY)后接受SetAddress()請(qǐng)求,這個(gè)時(shí)間也是一個(gè)調(diào)試經(jīng)驗(yàn),如果不能枚舉可以檢查設(shè)備的響應(yīng)時(shí)間是否過長。

由于面向下游的端口在復(fù)位期間不會(huì)處于傳輸狀態(tài),因此高速Chirp信號(hào)不會(huì)引發(fā)斷開連接檢測。

如下圖是DWC2驅(qū)動(dòng)的復(fù)位波形,黃色為DP,高速模式。

b22b27f8-1c5f-11ee-9c1d-dac502259ad0.png

通過仿真器GDB load程序重新運(yùn)行,而不是直接上電運(yùn)行,如果是后者則沒有(1)這個(gè)狀態(tài)此時(shí)默認(rèn)是沒有拉高的。

DWC2控制器的軟件復(fù)位不會(huì)影響SftDiscon位的狀態(tài),所以load程序后SftDiscon保持之前的拉高狀態(tài),DWC2控制器復(fù)位也不會(huì)影響

直到相關(guān)UTMI時(shí)鐘復(fù)位,如下代碼執(zhí)行對(duì)應(yīng)到(2)前面的DP拉低,此時(shí)UTMI等復(fù)位應(yīng)該是導(dǎo)致了PHY的相關(guān)狀態(tài)復(fù)位。

b24e5bd8-1c5f-11ee-9c1d-dac502259ad0.png

然后是軟件設(shè)置SftDiscon位為0,拉高DP,如下代碼處,對(duì)應(yīng)(2)處的拉高

b283e24e-1c5f-11ee-9c1d-dac502259ad0.png

然后DP拉高100mS之后(3),主機(jī)發(fā)送復(fù)位(4),這里看到復(fù)位時(shí)間非常短,這是因?yàn)樵O(shè)備2.5uS以上,實(shí)際是8uS就檢測到了復(fù)位(如下圖所示,圖中標(biāo)尺部分,后面的藍(lán)色的高DM的高是設(shè)備發(fā)出的Chirp K高速握手信號(hào)),進(jìn)行了后續(xù)的高速握手,所以覆蓋了主機(jī)發(fā)送的復(fù)位信號(hào),所以看不到復(fù)位10mS的持續(xù)時(shí)間。

b2ad1344-1c5f-11ee-9c1d-dac502259ad0.png

三.總結(jié)

復(fù)位的信號(hào)很簡單,但是承接的是連接檢測到后續(xù)的高速速度握手,時(shí)序非常重要,尤其是有個(gè)參數(shù)2.5uS,檢測到復(fù)位信號(hào)持續(xù)2.5uS即檢測到復(fù)位,而不需要等復(fù)位信號(hào)移除即不需要等10mS,所以會(huì)出現(xiàn)主機(jī)在驅(qū)動(dòng)復(fù)位,設(shè)備已經(jīng)檢測到復(fù)位開始后續(xù)的高速握手,從波形上看就看不到復(fù)位信號(hào)持續(xù)10mS了,而這也可能導(dǎo)致一些性能不達(dá)標(biāo)的主機(jī),高速握手失敗,這個(gè)后面單獨(dú)講案例分析。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    8066

    瀏覽量

    269676
  • 復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    178

    瀏覽量

    24507
  • USB驅(qū)動(dòng)器
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    5317
  • 復(fù)位信號(hào)
    +關(guān)注

    關(guān)注

    0

    文章

    67

    瀏覽量

    6510
  • DWC2
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    210
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于RK3576開發(fā)板的USB驅(qū)動(dòng)安裝

    在使用芯片的ADB接口(進(jìn)行ADB調(diào)試或者固件燒錄)前需要安裝指定USB驅(qū)動(dòng),請(qǐng)按以下指引執(zhí)行驅(qū)動(dòng)安裝。
    的頭像 發(fā)表于 04-21 17:15 ?128次閱讀
    基于RK3576<b class='flag-5'>開發(fā)</b>板的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b>安裝

    USB串口驅(qū)動(dòng)

    USB串口驅(qū)動(dòng)
    發(fā)表于 02-10 13:49 ?3次下載

    什么是 USB 3.2?

    什么是USB3.2?USB3.2是一種USB(通用串行總線)標(biāo)準(zhǔn),它建立在之前的USB3.0和USB3.1標(biāo)準(zhǔn)之上。它的
    的頭像 發(fā)表于 01-24 11:39 ?1205次閱讀
    什么是 <b class='flag-5'>USB</b> 3.2?

    新思 DWC2 的參考手冊(cè)從哪里可以下載

    最近在學(xué)習(xí)STM32F4 USB驅(qū)動(dòng),有看到 dwc2驅(qū)動(dòng)的代碼,但是沒有手冊(cè)用來參考,ST手冊(cè)上寄存器不全,從網(wǎng)上看到有下面兩個(gè)手冊(cè),但是一直找不到下載的資源 《DesignWar
    發(fā)表于 01-22 11:32

    USB驅(qū)動(dòng)問題:設(shè)備無法識(shí)別的全面指南!

    今天我把USB驅(qū)動(dòng)問題,關(guān)于設(shè)備無法識(shí)別方面做一個(gè)全面指南供大家參考。連接USB無法識(shí)別模組設(shè)備,是不是驅(qū)動(dòng)問題?今天就一起來聊聊如何排查解決。
    的頭像 發(fā)表于 11-26 12:35 ?944次閱讀
    <b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動(dòng)</b>問題:設(shè)備無法識(shí)別的全面指南!

    瑞芯微RK3568 USB驅(qū)動(dòng)

    瑞芯微RK3568 USB驅(qū)動(dòng)程序
    發(fā)表于 11-11 14:18 ?3次下載

    USB-C 快充技術(shù)原理詳解

    簡介 USB-C,全稱USB Type-C,是一種由USB開發(fā)者論壇(USB-IF)發(fā)布的USB
    的頭像 發(fā)表于 11-05 11:49 ?2125次閱讀

    使用Cypress EZ-USB SX2 TMS320C6000 EMIF到USB接口

    電子發(fā)燒友網(wǎng)站提供《使用Cypress EZ-USB SX2 TMS320C6000 EMIF到USB接口.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 10:55 ?0次下載
    使用Cypress EZ-<b class='flag-5'>USB</b> SX<b class='flag-5'>2</b> TMS320C6000 EMIF到<b class='flag-5'>USB</b>接口

    USB4 2.0版本的重大更新

    USB版本一直很多,可以說是五花八門,但是隨著接口的日漸統(tǒng)一,USB的版本可以說減少了很多,到了USB4,只剩下USB-C接口,為何還有一個(gè)2.0版本,我們往下
    的頭像 發(fā)表于 09-09 14:37 ?967次閱讀

    采用隔離式 USB 2.0 轉(zhuǎn)接驅(qū)動(dòng)器的 USB 音頻隔離方法

    電子發(fā)燒友網(wǎng)站提供《采用隔離式 USB 2.0 轉(zhuǎn)接驅(qū)動(dòng)器的 USB 音頻隔離方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 10:01 ?0次下載
    采用隔離式 <b class='flag-5'>USB</b> 2.0 轉(zhuǎn)接<b class='flag-5'>驅(qū)動(dòng)</b>器的 <b class='flag-5'>USB</b> 音頻隔離方法

    在STM32L4R5ZIT6中移植cherryUSB,顯示不支持DMA模式為什么?

    initialized 1! [I/wiz] RT-Thread WIZnet package (V2.1.0) initialize success. [I/USB] ========== dwc2
    發(fā)表于 07-25 08:32

    鴻蒙開發(fā)設(shè)備管理:ohos.usb USB管理

    本模塊主要提供管理USB設(shè)備的相關(guān)功能,包括查詢USB設(shè)備列表、批量數(shù)據(jù)傳輸、控制命令傳輸、權(quán)限控制等。
    的頭像 發(fā)表于 07-05 17:34 ?1161次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>設(shè)備管理:ohos.<b class='flag-5'>usb</b> <b class='flag-5'>USB</b>管理

    TUSB1104 USB Type-C 10Gbps USB3.2 x2線性轉(zhuǎn)接驅(qū)動(dòng)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TUSB1104 USB Type-C 10Gbps USB3.2 x2線性轉(zhuǎn)接驅(qū)動(dòng)器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-22 09:41 ?2次下載
    TUSB1104 <b class='flag-5'>USB</b> Type-C 10Gbps <b class='flag-5'>USB</b>3.2 x<b class='flag-5'>2</b>線性轉(zhuǎn)接<b class='flag-5'>驅(qū)動(dòng)</b>器數(shù)據(jù)表

    ESP32-S2重復(fù)插拔USB,會(huì)導(dǎo)致USB驅(qū)動(dòng)崩潰怎么處理?

    :https://github.com/leeebo/esp32s2_usb 僅保留USB MSC以及VFS部分,以實(shí)現(xiàn)類似U盤的功能,測試中發(fā)現(xiàn)重復(fù)插拔USB有幾率導(dǎo)致USB
    發(fā)表于 06-21 11:53

    羅德與施瓦茨USB 3.2測試方案獲USB-IF認(rèn)可

    近日,USB開發(fā)者論壇(USB-IF)對(duì)羅德與施瓦茨(R&S)公司推出的USB 3.2 Gen 1和Gen 2發(fā)射機(jī)與接收機(jī)一致性測試方案給
    的頭像 發(fā)表于 06-13 17:00 ?975次閱讀