USB学习笔记,情深义重。亲身实践从0开始,STM32,MSP430的实现。
多年工作一直在使用MSP430单片机,其实有些系列也支持全速通用串行总线(USB 2.0),比如MSP430F5504,MSP430F5510。近期在学习STM32,以后就在以STM32F103ZET6为基础平台展开对USB 2.0(USB3.0的区别就是高速下 3.0 可以达到5Gbps)的学习。也在此记录学习笔记。
1、首先USB的传输速率大家深知速度之快,贴一张图来总结一下USB的速率与应用场合以及优点。
2、我们用它除了上述的一些应用,更多的应用就是用做单纯数据的传输,与上位机的数据交互。其优点大可不必介绍,相比你也清楚。
3、USB的拓扑结构,USB总线是基于分层的星状拓扑结构,总线上一共可以连接127个设备。每个Hub(集线器)下可以最多串联5个Device,所以出现我们平时用的USB分线器。USB不适合的是工业长距离传输,它所要求的最长输出线为5米。
4、USB通讯协议
4.1 包:包是USB数据传输的基本单元,所有的数据都是打包进行传输的一包数据包括5部分,同步字段、包标识符字段、数据字段、CRC字段、包尾字段。
4.1.1 SYNC:8位,作为包的同步字段,用来产生同步作用。固定的数值为00000001
4.1.2 PID:用来表示数据封包的类型,包含了令牌、数据、握手、特殊四种信息包类型。
4.1.3 数据字段:用来携带主机与设备之间的传输信息。可以包含设备地址、端点号、***、数据等等。设备地址是7位0-127,端点4位最多可以寻32个端点。全速设备可以有16个输入端点,16个输出端点。
4.1.4 CRC字段:根据包的不同类型CRC字段的位数也不定。重要的数据包就是16位CRC,其余的则为5位。
4.1.5 包结束字段:主机根据此EOP来判断包的结束。
暂且到这里,还将会继续更新发送学习笔记。