基于DWC2的USB驱动开发-PING协议详解

本文转自公众号,欢迎关注
基于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。
主机如果收到设备的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协议,了解了过程和背景,对于驱动开发人员尤其要了解哪些是硬件做的,哪些是软件做的,分别在什么阶段什么时机做。


关于华为AI芯片的性能分析和介绍
曙光政务云平台获得商用密评认证 Silicon Labs宣布和Memfault合作
芯朋微提供高效可靠的电源和驱动类芯片解决方案
热电偶冷端补偿电路图详解
伺服电机的控制方式有哪些?
基于DWC2的USB驱动开发-PING协议详解
东芝是否能够把握机遇,焕发新生,继续创新和前进的步伐?
小米Note10真机曝光将搭载1亿像素摄像头
Java开发工程师到底能从事什么行业和什么工作
全球晶圆制造产能统计报告出炉 统计基础生变成遗憾
什么是NB(笔记本)国际联保
中国云游戏市场发展前景如何?
一文看懂gmsk调制工作原理_特点及应用
欧洲迎来首个5G商用网络 4/5G动态频谱共享
N32G45x硬件CRC计算Modbus的CRC16
小米MIX设计师与雷军再次合作,新产品让众人期待
如何在 AC/DC 设计中降低待机时的可闻噪声和功耗
拥抱异构集成的新机遇,芯和半导体2021用户大会成功召开
音频体验提升的关键,蓝牙芯片的音频DSP技术有哪些升级
【新唐开发工具】快速建构低功耗蓝牙设计的开发模块:BLE ATCMD