色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

基于DWC2的USB驅(qū)動開發(fā)-高速設備速度握手詳解

嵌入式USB開發(fā) ? 來源: 嵌入式USB開發(fā) ? 作者: 嵌入式USB開發(fā) ? 2023-07-08 08:40 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文轉(zhuǎn)自公眾號,歡迎關注

基于DWC2的USB驅(qū)動開發(fā)-高速設備速度握手詳解 (qq.com)

前言

前面我們分析了USB連接和復位的過程, 也知道低速和全速/高速的USB設備分別是上拉DM和DP,主機通過不同的上拉區(qū)分接的是低速還是全速/高速設備的。但是怎么區(qū)分全速和高速呢? 這就需要額外的一些握手過程,本篇就來詳細介紹該過程。

高速握手過程

USB連接檢測過程見如下

https://mp.weixin.qq.com/s/T6pbLP83IIeJDvM_6ogQDA

USB復位過程見

https://mp.weixin.qq.com/s/8xKca-XPjZXAiO6MOQVGAQ

對于低速設備上拉DM,主機檢測到該上拉,然后發(fā)送復位就完了

對于全速和高速設備上拉DP,主機檢測到該上拉,然后發(fā)送復位,接下來是速度握手過程。

老規(guī)矩我們從規(guī)格書入手,USB2.0規(guī)格書P154中《High-speed Detection Handshake (not performed if low-speed device detected by hub):》有描述整個過程,但是這都是文字描述,不是很直觀,所以我們理論結(jié)合實踐,直接根據(jù)真實的波形和規(guī)格書的描述對照進行分析。

在速度握手中,主機(集線器)和設備都需要檢測擁有最小持續(xù)時間的Chirp J和K, 涉及到兩個關鍵信號Chirp J和K(參見規(guī)格書7.1 Signaling或者本系列文章)。

整個過程如下

(1)設備使能DP上拉1.5K,如下圖的(1)處,此時DP大概3V左右

16de0d8c-1d28-11ee-9c1d-dac502259ad0.png

(2)主機檢測到DP拉高,檢測到設備連接,發(fā)送SE0進行復位

如上圖的(2),因為時間很短,下面是細節(jié)圖,可以看到下圖SE0狀態(tài)只維持了8uS,后面就是藍色線(DM)高于黃色線即Chirp K信號,對應上圖的(3)部分。

回顧一下復位分析那一篇文章,發(fā)送放復位會持續(xù)50mS,但是接收方在最低2.5uS就可以識別到復位,這里實測是8uS設備就識別到復位然后開始發(fā)送Chirp K信號了。

16fbf23e-1d28-11ee-9c1d-dac502259ad0.png

保持D+上的1.5K上拉電阻使能,設備發(fā)送Chirp K信號是通過,禁用高速終端電阻,并將高速信號電流驅(qū)動到D-線完成的。

這里有點不理解禁用了終端電阻,電流驅(qū)動到D-線,電流環(huán)路是什么?

并且如下可以看到DM有1.2V左右,這個電壓是如何來的?

171ad21c-1d28-11ee-9c1d-dac502259ad0.png

該Chirp K信號必須持續(xù)不少于1.0 ms(TUCH),并且在高速復位時間T0點(即主機發(fā)出的SE0開始)后不超過7.0 ms(TUCHEND)結(jié)束。

Chirp K持續(xù)時間如下所示,這里是2mS,滿足上述要求

1733e0ea-1d28-11ee-9c1d-dac502259ad0.png

參數(shù)TUCH和TUCHEND的值在手冊中的描述如下

174f5b4a-1d28-11ee-9c1d-dac502259ad0.png

上述可以看到Chirp K的信號,DM大概是1.1V左右,比后面的KJ序列高一點。

(3)主機(集線器)必須在看到chirp K信號持續(xù)2.5μs(TFILT)時間以上,后認為檢測到設備發(fā)出的ChirpK,這里的2.5uS的要是實際是相當于濾波避免干擾。如果主機(集線器)未檢測到設備發(fā)出的chirp K信號,則必須繼續(xù)發(fā)送SE0,直到復位結(jié)束(持續(xù)50mS)。

TFILT參數(shù)見規(guī)格書如下處說明

177e26a0-1d28-11ee-9c1d-dac502259ad0.png

在Chirp K狀態(tài)結(jié)束后不超過100μs(TWTDCH),主機(集線器)必須開始發(fā)送Chirp K和Chirp J的交替序列,J和K之間不得存在空閑狀態(tài)。此序列必須持續(xù)到復位結(jié)束前不超過500μs且不少于100μs的時間(TDCHSE0)(這樣的目的是保證總線保持活動狀態(tài),防止設備進入高速掛起狀態(tài)。)。每個單獨的Chirp K和Chirp J必須持續(xù)不少于40μs且不超過60μs(TDCHBIT)。

TWTDCH,TDCHSE0,TDCHBIT的參數(shù)上圖。

如下圖(4)處

16de0d8c-1d28-11ee-9c1d-dac502259ad0.png

細節(jié)圖如下

17b69a80-1d28-11ee-9c1d-dac502259ad0.png

如下可以看到要求Chirp K結(jié)束100μs(TWTDCH)以內(nèi)開始后面的KJ序列,實際10uS左右就開始了,滿足要求。

17d1e420-1d28-11ee-9c1d-dac502259ad0.png

如下圖所示,主機發(fā)送的KJ序列持續(xù)了約50mS,即約復位的時間,實際要求是發(fā)送到復位結(jié)束前的100μs~500uS,這里示波器能力有限就不展示下圖右邊紅色圈處的細節(jié)了。

18079d54-1d28-11ee-9c1d-dac502259ad0.png

在K-J序列之后,主機(集線器)發(fā)送SE0,直到復位結(jié)束,即上面說的KJ序列之后100~500uS復位結(jié)束。復位結(jié)束時,主機(集線器)必須轉(zhuǎn)換到高速啟用狀態(tài),而不會在數(shù)據(jù)線上引起任何轉(zhuǎn)換。

(4)設備這端發(fā)送完Chirp K之后監(jiān)控主機發(fā)送的K-J序列。設備端需要至少看到3對K-J序列,即序列Chirp K-J-K-J-K-J才認為是有效的KJ序列。每個單獨的Chirp K和Chirp J必須檢測不少于2.5μs(TFILT)。

我們這里看到有持續(xù)50uS滿足要求

182d2fe2-1d28-11ee-9c1d-dac502259ad0.png

如果設備檢測到序列Chirp K-J-K-J-K-J,則檢測后不超過500μs(TWTHS),設備需要斷開D+上拉電阻器,啟用高速終端,并進入高速默認狀態(tài)。

如下圖所示,這里剛好約500uS左右進行了上述切換,上述切換也導致了DP和DM的電平的變化,原來KJ序列大概是0.8V左右,即主機發(fā)送KJ是通過電流17.78mA驅(qū)動45歐終端電阻實現(xiàn)的,17.78mA*45即0.8V。而我們又看到后面箭頭處的電壓下降,是因為正好是上述的設備切換到了高速模式,使能了45Ω終端電阻,所以設備的終端電阻和主機的終端電阻并聯(lián)只有一般電阻,所以電壓就只有一般0.4V左右了。

1857c11c-1d28-11ee-9c1d-dac502259ad0.png

1890d074-1d28-11ee-9c1d-dac502259ad0.png

如果設備在完成其自己的Chirp K之后,在不小于1.0ms且不大于2.5ms(TWTFS)的時間內(nèi)未檢測到有效KJ序列,則設備需要恢復到全速默認狀態(tài)并等待復位結(jié)束。

以上就是整個速度握手的過程,比較細節(jié),我們再做一些總結(jié)

關于整體電壓的變化,如下圖,有4個等級,圖中(1)和(2)之間還有個復位的SE0電平這里就略掉了。

(1)即設備通過DP上拉,即15K和1.5k的分壓,3.3x15/(1.5+15) DP大概3V.

(2)設備發(fā)送Chirp K,DP 1.5K上拉還在,設備終端電阻禁用,實測D-上的電壓是大概1.2V,這里的電流路徑是什么? 待確定。

(3)主機發(fā)送KJ序列,主機通過驅(qū)動17.78mA電流到對應45歐終端電阻,發(fā)送KJ,所以DP DM是0.8V

(4)設備也進入了高速模式,1.5k上拉斷開,設備使能了45歐終端電阻,和主機的終端電阻并聯(lián),主機繼續(xù)在發(fā)KJ序列,此時主機的17.78mA電流驅(qū)動只能產(chǎn)生0.4V的電壓。

18d7a238-1d28-11ee-9c1d-dac502259ad0.png

驅(qū)動編寫

手冊P522 5.4.47 DCFG的bit[1:0]DevSpd用于配置設備期望工作過的速度,注意這里是期望,而不是一定,因為還需要速度握手過程,比如這里配置為高速,則還需要看主機是否支持高速。

18fb0e76-1d28-11ee-9c1d-dac502259ad0.png

所以我們需要在初始化時配置該位,告訴控制器后面以該速度去進行速度握手。那么握手結(jié)束之后實際是什么速度呢,手冊P539的5.4.49 DSTS寄存器的位[2:1]EnumSpd可以看到

1915063c-1d28-11ee-9c1d-dac502259ad0.png

在速度握手完成之后還會產(chǎn)生中斷,

手冊P369寄存器5.4.7 GINTMSK的位13 EnumDoneMsk設置為1使能,速度握手完成中斷。

1945e112-1d28-11ee-9c1d-dac502259ad0.png

相應的手冊P357寄存器5.4.6 GINTSTS的位13EnumDone為中斷標志,寫1清除標志

196582ba-1d28-11ee-9c1d-dac502259ad0.png

所以驅(qū)動的基本過程是

1.初始化配置DevSpd設置期望的工作速度

2.配置EnumDoneMsk使能中斷,清除標志EnumDone

3.等待中斷,查詢實際握手的速度EnumSpd,根據(jù)該速度再次重新配置DevSpd設置工作過速度。并清除標志EnumDone。

以上就完成了整個速度握手過程。

實際以上邏輯如果是非標主機,可能會存在BUG,后面會有一個實際案例進行分享,先賣個關子以后再單獨寫一篇文章分享該案例。

如下圖兩個箭頭處分別對應的是復位中斷,和速度握手完成中斷

19864d4c-1d28-11ee-9c1d-dac502259ad0.png

我們通過中斷服務函數(shù)中打印時間戳(注意要用非阻塞方式),看到Reset_Intr和High speed之間的時間剛好是50mS(打印的是uS單位),和圖中對應

19ae2cd6-1d28-11ee-9c1d-dac502259ad0.png

而我們在usb_dev_crtl_sft_discon(0);使能DP上拉時也加一個打印,即上面connect后打印的時間戳和Reset_Intr之間是50mS,如下圖

19c52814-1d28-11ee-9c1d-dac502259ad0.png

總結(jié)

以上介紹了整個速度握手過程,以及設備驅(qū)動的編寫。重點是結(jié)合手冊的描述對照波形去看和分析,要了解沒以一個實踐段,每一個信號,每一個電平的含義和原理,知道那個信號是誰驅(qū)動的,為什么是這個波形,一定要自己親自用示波器去抓波形,而不要使用別人的波形,因為不同的設備可能略有差異,如何去觸發(fā),如何去抓波形,也會加深自己的理解。

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

    關注

    5148

    文章

    19651

    瀏覽量

    317095
  • usb
    usb
    +關注

    關注

    60

    文章

    8174

    瀏覽量

    272516
  • USB2.0
    +關注

    關注

    2

    文章

    189

    瀏覽量

    46851
  • USB驅(qū)動
    +關注

    關注

    1

    文章

    138

    瀏覽量

    20731
  • DWC2
    +關注

    關注

    0

    文章

    35

    瀏覽量

    251
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • jf_836769771

評論

相關推薦
熱點推薦

基于DWC2USB驅(qū)動開發(fā)-0x01開篇介紹與新思DWC2 USB2.0控制器簡介

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-0x01開篇介紹與新思DWC2 USB2
的頭像 發(fā)表于 05-08 18:10 ?5594次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-0x01開篇介紹與新思<b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0控制器簡介

基于DWC2USB驅(qū)動開發(fā)-0x02 DWC2 USB2.0 IP功能特征介紹

DWC2即新思(Synopsys )的DesignWare? Cores USB 2.0 HiSpeed On-The-Go (OTG)控制器IP,被大量使用。從linux的內(nèi)核源碼驅(qū)動中就帶
的頭像 發(fā)表于 05-09 10:09 ?1.2w次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-0x02 <b class='flag-5'>DWC2</b> <b class='flag-5'>USB</b>2.0 IP功能特征介紹

基于DWC2USB驅(qū)動開發(fā)-IAD描述符詳解

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-IAD描述符詳解 (qq.com) 一.? 前言 IAD描述符用于一個
的頭像 發(fā)表于 06-27 08:45 ?44.4w次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-IAD描述符<b class='flag-5'>詳解</b>

基于DWC2USB驅(qū)動開發(fā)-USB復位詳解

本文轉(zhuǎn)自公眾號歡迎關注 基于DWC2USB驅(qū)動開發(fā)-USB復位詳解 (qq.com) 一.前言
的頭像 發(fā)表于 07-07 11:18 ?11.4w次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>復位<b class='flag-5'>詳解</b>

基于DWC2USB驅(qū)動開發(fā)-USB連接詳解

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-USB連接詳解 (qq.com) 一.前
的頭像 發(fā)表于 07-07 08:46 ?4506次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>連接<b class='flag-5'>詳解</b>

基于DWC2USB驅(qū)動開發(fā)-高速設備枚舉為全速設備問題案例分析

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-高速設備枚舉為全速
的頭像 發(fā)表于 07-10 17:12 ?2018次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>高速</b><b class='flag-5'>設備</b>枚舉為全速<b class='flag-5'>設備</b>問題案例分析

基于DWC2USB驅(qū)動開發(fā)-設備驅(qū)動框架

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-設備驅(qū)動框架 (qq.com) 一.前
的頭像 發(fā)表于 07-16 15:56 ?1799次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>設備</b>類<b class='flag-5'>驅(qū)動</b>框架

基于DWC2USB驅(qū)動開發(fā)-發(fā)送相關的寄存器DMA寄存器詳解

本文轉(zhuǎn)自公眾號,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-發(fā)送相關的寄存器DMA寄存器詳解 (qq.com) 前言 如下寄存器DIEPxxx,
的頭像 發(fā)表于 07-16 16:42 ?2253次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-發(fā)送相關的寄存器DMA寄存器<b class='flag-5'>詳解</b>

基于DWC2USB驅(qū)動開發(fā)-USB詳解

不管什么通訊協(xié)議,比如UART,SPI,USB等等,不管是并口還是串口,不管是同步還是異步,我們從抽象的角度去看,其本質(zhì)都是一樣的。都是先定義物理信號,物理信號可能是差分,單端,電流驅(qū)動電壓驅(qū)動等等
的頭像 發(fā)表于 07-23 17:11 ?3322次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-<b class='flag-5'>USB</b>包<b class='flag-5'>詳解</b>

基于DWC2USB驅(qū)動開發(fā)-數(shù)據(jù)不能發(fā)送問題分析案例

本文轉(zhuǎn)自公眾號歡迎關注 基于DWC2USB驅(qū)動開發(fā)-數(shù)據(jù)不能發(fā)送問題分析案例 (qq.com) ? 一.前言 ? ? ? ?對于驅(qū)動
的頭像 發(fā)表于 08-08 09:43 ?3404次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-數(shù)據(jù)不能發(fā)送問題分析案例

新思 DWC2 的參考手冊從哪里可以下載

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

如何對基于hal庫的DWC2 USB IP進行調(diào)試呢

背景之前適配 DWC2 USB IP 的時候,主要是基于 st 的 hal 庫來走的,當時我就對他們的 hal 庫代碼不滿,只是無奈,迫于時間就沒重構(gòu),果不其然,usb bug 一堆,隨意舉例,這還
發(fā)表于 06-14 15:23

使用USB OTG端口作為以太網(wǎng)小工具無法工作是為什么?

重新啟動板的情況下恢復:[46.766872] dwc2 49000000.usb-otg: new device is high-speed[46.771014] dwc2
發(fā)表于 12-09 07:01

《Linux設備驅(qū)動開發(fā)詳解》第20章、USB主機與設備驅(qū)動

《Linux設備驅(qū)動開發(fā)詳解》第20章、USB主機與設備驅(qū)動
發(fā)表于 10-27 11:04 ?8次下載
《Linux<b class='flag-5'>設備</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>詳解</b>》第20章、<b class='flag-5'>USB</b>主機與<b class='flag-5'>設備</b><b class='flag-5'>驅(qū)動</b>

基于DWC2USB驅(qū)動開發(fā)-抽絲剝繭再論切換到狀態(tài)階段標志DOEPINTn.StsPhseRcvd

本文轉(zhuǎn)自公眾號系列文章,歡迎關注 基于DWC2USB驅(qū)動開發(fā)-USB詳解 (qq.com)
的頭像 發(fā)表于 07-24 18:04 ?2560次閱讀
基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>開發(fā)</b>-抽絲剝繭再論切換到狀態(tài)階段標志DOEPINTn.StsPhseRcvd
主站蜘蛛池模板: 好紧好湿太硬了我太爽了文字 | 无码专区久久综合久综合字幕 | 成人免费在线视频 | 两性午夜色视频免费网站 | 亚洲一区二区三区高清网 | 久久精品中文字幕有码日本 | 芭乐草莓樱桃丝瓜18岁大全 | JizzJizzJizz亚洲成年 | 欧美一区二区视频在线观看 | 伊人综合在线影院 | 白丝女仆被啪到深夜漫画 | 免费观看男生桶美女私人部位 | 日韩高清毛片 | 五月丁香啪啪. | 狠狠啪在线香蕉 | xxww69 | 黑人猛挺进小莹的体内视频 | 亚洲男人的天堂久久精品麻豆 | 免费国产成人手机在线观看 | 亚洲综合色在线视频久 | adc影院欢迎您大驾光临入口 | 伊人综合在线22 | 91九色精品国产免费 | 武侠古典久久亚洲精品 | 寂寞夜晚在线视频观看 | 亚洲精品久久久午夜麻豆 | 我的美女房东未删减版免费观看 | 青青app | 99热久久这里只有精品视频 | 天天操狠狠操夜夜操 | 果冻传媒AV精品一区 | 成 人 网 站免费观看 | 国产无遮挡又黄又爽在线视频 | 99视频免费播放 | 特级毛片AAAAAA | 乱爱性全过程免费视频 | 久久re热线视频精品99 | 韩国精品韩国专区久久 | 超碰97人在线视频 | 免费夜里18款禁用软粉色 | 99久久精品久久久久久清纯 |

電子發(fā)燒友

中國電子工程師最喜歡的網(wǎng)站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品