USB学习

USB协议基础:引用自《恶补一波USB 通信协议知识

一 基本概念:传输,事务,包,帧:

  一个传输(分4种类型)由多个事务(有IN/OUT/SETUP三类,每个事务又有多个包组成)组成。

      数据包:由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP)。

     包只能在帧内传输,低/全速1MS/帧,高速125us/帧。包含SOF +中间过程+EOF.

 

 USB通信示例:

 

 2个虚线之间为一次传输过程包含SOF/EOF,3个/类事务过程(SETUP/IN/OUT +DATA+ACK),每个事务过程又分3个阶段(建立,数据,状态)。

二 四种传输类型:

  • 控制传输:枚举阶段,主机和设备之间的配置信息,分建立,数据,状态3个阶段,每个阶段有ack/nack/stall共3种情况的反馈:
  1. 建立setup阶段:主机从USB设备获取配置信息,并设置设备的配置值

  2. 数据data阶段:主机和设备之间的数据传输,分

     

     

      2.1控制读取(读取USB描述符)

      2.2控制写入(配置USB设备)

      2.3无数据控制

   3.状态status阶段:指示传输过程结束,方向与数据阶段相反

  • 批量传输:用于传输大量,传输不能出错,但对时间没有要求,适用于打印机、存储设备等,PID 按照 DATA0-DATA1-DATA0-…的方式翻转以保持主从同步,允许连续 3次以下的传输错误超过则STALL.
  • 中断传输,次高的优先级,不支持PING,其它过程与批量传输同,只不过具体的(端点、支持的最大包长度、优先级不一样),是用于对设备的查询,以确定是否有数据需要传输。即中断传输方向是设备到主机。
  • 同步传输:固定速率或在指定时刻抵达,可以容忍偶尔错误的数据上。实时传输一般用于麦 克风、喇叭、UVC Camera等设备。实时传输只需令牌与数据两个信息包阶段,没有握手包,故数据传错时不会重传,有最高的优先级。

stm32在外部flash上用usb实现虚拟U盘:

  设置成usbd模式,用fal分区工具分区vudisk,romfs创建分路径,然后在vudisk分区上创建块设备并格式化为elm文件系统即可在pc上识别出虚拟U盘(但注意不能在指定分区,挂载点,挂载elm系统,USB组件中已经设置指定了大容量所在的分区名)

posted on 2022-10-31 00:45  杰瑞鼠  阅读(157)  评论(0编辑  收藏  举报