精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于DWC2的USB驅動開發-PING協議詳解

嵌入式USB開發 ? 來源:嵌入式USB開發 ? 作者:嵌入式USB開發 ? 2023-07-23 16:18 ? 次閱讀

本文轉自公眾號,歡迎關注
基于DWC2的USB驅動開發-PING協議詳解 (qq.com)

一. 前言

這里先介紹下PING協議的背景和原理,我們不一上來就介紹PING包格式和協議,因為只有知其然知其所以然才能加深理解,任何事務都是有其出現的歷史背景的,不會憑空而生,所以理解背后產生的背景和原理很重要。

全/低速的批量/控制傳輸OUT事務,如果設備沒有就緒,則可以NAK表示端點不接受數據,主機可以稍后重發。以上過程存在一個問題,就是OUT數據之后設備NAK,OUT數據這部分時間會占用總線,如果設備一直未就緒一直NAK,主機一直重發將會大量占用總線。

高速設備旨在提高傳輸帶寬,所以對這種帶寬的浪費是不能容忍的,必須優化。

優化的思想其實很樸素,既然重發浪費帶寬,那么就先“問一下”,先“問一下”設備準備好了沒,只有收到設備回復準備好了再發數據,這樣“問一下”這句話很短占用帶寬不多,浪費較少。這個問一下就對應的PING包。

只在高速設備才支持PING,且只有控制傳輸和批量傳輸支持,且都是針對OUT。

控制傳輸OUT(數據和狀態階段,SETUP階段不支持PING)

批量傳輸OUT的數據階段。

二.PING包格式

Ping包的ID為0100B,和令牌包格式一樣

圖片

圖片

如下是一個實例

圖片

三.PING協議過程和實例

Ping的響應是硬件做的,因為設備需要接收主機連續的PING,如果軟件處理會來不及。

那么硬件怎么知道回主機的PING包回ACK還是NAK呢,這就是看軟件有沒有配置好DMA并設置CTL寄存器的EPena置位,如果軟件已經配置好了則硬件回ACK,并自動接收后面的OUT數據,并通過DMA搬運到用戶空間,反之則NAK。

過程如下:

1.主機OUT數據,設備返回了NAK

2.主機收到NAK,知道設備沒就緒,于是發PING

3.設備收到PING之后如果還未就緒則NAK,否則則ACK

4.主機按照描述符中的bInterval時間間隔重新發PING,直到設備ACK,設備ACK后發數據。

5.設備收到主機OUT的數據如果還可以繼續接收后面的數據則ACK,否則則發NYET。注意雖然前面PING設備ACK了,這里設備還是有可能NAK。

  1. 主機如果收到設備的ACK則繼續發后面的數據,如果收到NYET則表示本次OUT數據成功,但是設備不能接收后續數據,發后面的數據前重復上面的PING過程,如果主機收到NAK則說明本次數據設備沒有接收,需要重新PING然后重發本次數據。

總結一下就是對于OUT數據設備可能有三種響應

ACK:本次接收了,還可以繼續接收后面的。

NYET:本次接收了,不能繼續接收。

NAK:本次未接收。

上述說明的設備對PING ACK了,但是對后面的數據OUT又NAK了的情況,是不正常的現象,設備都告訴主機準備好了,后面又沒有接收數據。

高速的批量/控制端點在其端點描述符中需要指定其最大NAK速率。每個bInterval 時間間隔內,端點最多允許NAK一次。如果端點的描述符bInterval為0則表示端點從不會NAK。

如果在數據階段之后發生超時,主機必須返回到PING階段。轉回PING狀態不會影響事務數據階段的data toggle 狀態。

以下是一個實例過程

圖片

(1)主機OUT數據,設備NAK了,表示設備不能接收

(2)主機看到設備NAK,不能接收,于是進入PING狀態。注意上面主機不會一上來就PING,因為這個時候還不知道設備能不能接收,所以先不管三七二十一發一把再說,萬一設備能接受呢。只有主機確認設備不能接收,即設備NAK之后才會進入PING狀態。

圖片

(3)設備一直NAK則主機一直PING

(4)設備終于ACK了主機的PING,表示可以接收數據了。

這里的ACK是設備的硬件做的,所以在此之前設備的軟件配置好了DMA并置位了DOEP的CTL寄存器的EPena位。

(5)主機OUT數據,設備也接受了,回了ACK,至此數據的OUT階段總算成功了。

第(5)步設備實際還有可能回NAK,表示未接收,回NYET表示本包接收但是不能接收下一包。

四. 總結

以上介紹了高速數據階段的PING協議,了解了過程和背景,對于驅動開發人員尤其要了解哪些是硬件做的,哪些是軟件做的,分別在什么階段什么時機做。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • usb
    usb
    +關注

    關注

    60

    文章

    7891

    瀏覽量

    263978
  • 編程
    +關注

    關注

    88

    文章

    3591

    瀏覽量

    93593
  • Ping
    +關注

    關注

    0

    文章

    69

    瀏覽量

    15952
  • 開發板
    +關注

    關注

    25

    文章

    4943

    瀏覽量

    97188
  • 代碼
    +關注

    關注

    30

    文章

    4745

    瀏覽量

    68347
  • 單板計算機
    +關注

    關注

    0

    文章

    74

    瀏覽量

    15613
  • 編譯
    +關注

    關注

    0

    文章

    653

    瀏覽量

    32806
  • 驅動開發
    +關注

    關注

    0

    文章

    130

    瀏覽量

    12062
  • DWC2
    +關注

    關注

    0

    文章

    35

    瀏覽量

    120
收藏 人收藏

    評論

    相關推薦

    基于DWC2USB驅動開發-0x01開篇介紹與新思DWC2 USB2.0控制器簡介

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

    基于DWC2USB驅動開發-0x02 DWC2 USB2.0 IP功能特征介紹

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

    基于DWC2USB驅動開發-0x07 DWC2 USB2.0 IP 配置參數

    混淆,IP的配置參數固定之后就不能改了,就決定了IP所具有的能力。對于軟件開發者來說也要了解其具體的配置,因為只有知道當前IP的配置,知道支持哪些功能,哪些是軟件可以配置的哪些是硬件固定了無法配置的,等等這些,后面寫驅動才心中有數。 配置相關
    的頭像 發表于 05-17 09:49 ?2173次閱讀

    基于DWC2USB驅動開發-IAD描述符詳解

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

    基于DWC2USB驅動開發-USB復位詳解

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

    基于DWC2USB驅動開發-USB連接詳解

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

    基于DWC2USB驅動開發-高速設備枚舉為全速設備問題案例分析

    本文轉自公眾號,歡迎關注 基于DWC2USB驅動開發-高速設備枚舉為全速設備問題案例分析 (qq.com) 一.前言 ? 本文分享一個高速設備被枚舉為全速的問題。 ? ? 高速設備速
    的頭像 發表于 07-10 17:12 ?1312次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>-高速設備枚舉為全速設備問題案例分析

    基于DWC2USB驅動開發-UVC的處理單元詳解

    本篇來詳細分析下UVC的處理單元相關的內容,同樣的我們理論結合實踐來進行。
    的頭像 發表于 07-13 09:42 ?2057次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>-UVC的處理單元<b class='flag-5'>詳解</b>

    基于DWC2USB驅動開發-設備類驅動框架

    本文轉自公眾號,歡迎關注 基于DWC2USB驅動開發-設備類驅動框架 (qq.com) 一.前言 從軟件頂層,從數據流的角度來看
    的頭像 發表于 07-16 15:56 ?1280次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>-設備類<b class='flag-5'>驅動</b>框架

    基于DWC2USB驅動開發-發送相關的寄存器DMA寄存器詳解

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

    基于DWC2USB驅動開發-USB詳解

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

    基于DWC2USB驅動開發-數據不能發送問題分析案例

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

    RK3399平臺上USB控制器和PHY的連接方式和配置說明

    USB2.0 OTG對應的控制器是DWC2USB2.0 OTG使用的是Synopsys 方案,即使用DWC2控制器同時實現Host和Device功能,
    發表于 05-12 17:46

    如何對基于hal庫的DWC2 USB IP進行調試呢

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

    基于DWC2USB驅動開發-抽絲剝繭再論切換到狀態階段標志DOEPINTn.StsPhseRcvd

    本文轉自公眾號系列文章,歡迎關注 基于DWC2USB驅動開發-USB詳解 (qq.com)
    的頭像 發表于 07-24 18:04 ?1483次閱讀
    基于<b class='flag-5'>DWC2</b>的<b class='flag-5'>USB</b><b class='flag-5'>驅動</b><b class='flag-5'>開發</b>-抽絲剝繭再論切換到狀態階段標志DOEPINTn.StsPhseRcvd