| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> USB协仪 -> 正文阅读 |
|
[嵌入式]USB协仪 |
1 插入检测????????USB集线器的每个下游端口D+和D-都接了15k的下拉电阻。在usb设备端,全速和高速设备D+上接1.5k的上拉电阻。低速设备D-上接1.5k的上拉电阻。当设备端接入集线器时,集线器D+或D-上的电平被拉高,检测到设备接入。 2 描述符一个usb设备只有一个设备描述符。 设备描述符时决定该设备有多种配置,每个配置对应一个配置描述符。 每个配置描述符又定义该配置有多少个接口,每个接口都有一个接口描述符。 每个接口描述符又定义方接口有多个端点,每个端点都有一个端点接口描述符。 3 枚举过程
4 包结构????????所有包都有一个共同点:以同步域开始,紧跟着一个包标识符PID,中间内容根据包类型,最终以包结束符EOP结尾。 4.1 令牌包????????令牌包用来启动一次usb传输。因为usb是主从结构的拓扑结构,所以所有的数据传都是主机发起的,设备只能被动接收数据。这就需要令牌包来通知那个设备进行响应。
SOF令牌包包结构如下,帧号为帧的计数,CRC只校验PID后的数据。 ?OUT,IN,SETUP令牌包的结构如下,地址表示设备的地址,端点表示设备的端点。 ?4.2?数据包????????用来传输数据。在USB1.1中,只有DATA0和DATA1两种数据包。USB2.0中增加了DATA2和MDATA包,主机用在高速分裂事务和高速高带宽同步传输中。 ????????DATA0和DATA1用于在握手包出错时纠错。当数据包成功发送或接收时,对方的数据包类型会切换,当检测到对方使用的数据包类型不对时,表示传输出现错误。 4.3 握手包握手包表示一个传输是否被对方确认。握手包只有同步域,PID和EOP。是最简单的一种包。 握手包有ACK,NAK,STALL和NYET 4种。 ACK:表示正确接收数据。并有足够空间来容纳数据。主机和设备都可以用ACK来确认,而NAK,STALL,NYEL只有设备能够返回。? NAK:表示没有数据需要返回,或数据正确接收但没有足够空间来容纳数据。当主机收到NAK时,知道设备还未准备好,玉机会在合适的时机重试传输。 STALL:表示设备无法执行这个请求,或者端点已经被挂起了,它表示一种错误的状态。设备返回STALL后。,需要主机进行干预才能解除这种状态。 NYET:只在usb2.0高速设备输出事务中使用,它表示设备本次数据成功接收,但没有足够空间接收下一次数据。主机在下一次输出数据时,将先使用PING命令包来试探设备是否有空间接收数据。 注意:返回NAK并不表示数据出错,只是说明设备暂时没有数据传输或暂时没有能力接收数据。当USB主机或设备检测到数据出错时(如CRC校验错误,PID错误,位填充错误等),将什么都不返回。这时等待接收握手包的一方就会收不握手包面超时。 4.4 特殊包特殊包有PRE,ERR,SPLIT和PING 4种。其中PRE,SPLIT和PING是令牌包,ERR是握手包。ERR,SPLIT和PING是在USB2.0中新增的。 PRE:通知集线器打开其低速端口的一种前导包。PRE只使用在全速模式中。平时为了防止全速信号使用低速设备识动作,集线器是没有将全速信号传送给低速设备的。只有当收到PRE令牌包后,才打开其低速端口。 PING:只有在usb2.0高速环境中才会使用PING令牌包,它只被使用在批量传输和控制传输中。直接使用OUT令牌包发送数据时,设备可能没有空间接收数据,这样就浪费了带宽。在高速设备中增加了这个PING机制,试探设备是否而空间接收数据。 SPLIT:高速事务分裂令牌包,通知集线器将高速包转化为全速或低速数据包发送给其下面的端口。 ERR:ERR握手包是在分裂事务中表示错误时使用。 5 USB的4种传输类型5.1 USB事务? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 1:40:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |