对于带USB控制器的设备,我们无法从代码中看到完整的包,只能通过寄存器看到这些包触发的一些标志位,只有数据包可以从控制器中读出数据,其他包只会触发中断标记。这里以三星的s5pv210的usb otg控制器为例。
USB HS OTG controller is composed of two independent blocks, namely, USB 2.0 OTG and USB PHY Controller.
Each of these blocks has an AHB Slave interface that provides the microcontroller with read and write access to
the Control and Status Registers (CSRs). The OTG Link has an AHB Master to enable the link to transfer data on
the AHB.
usb host otg控制器由2个独立模块组成,即USB 2.0 OTG和USB phy controller。每个模块都有AHB从接口,它们有一个微控制器能够对CSRs寄存器进行读写,OTG链路有一个AHB主接口,使之能在AHB上传输数据。
以下参考圈圈教你玩USB:
USB包结构:
同步域 | 包标示符PID | 包结束符EOP
同步域是一串0开始的,00000001;
PID用来标识包的类型,8位,USB使用的只有4位,其余4位是PID0~PID3的取反。
包类型分为4类:令牌、数据、握手、特殊,每一类又分几种。
令牌包用来启动一次USB传输,分为OUT、IN、SETUP、SOF。、
out用来通知设备,主机将要输出一个数据包;in用来通知设备返回一个数据包;setup只用在控制传输中,
帧起始包SOF在每帧开始时以广播的形式发送,
数据包在USB1.1中有2种:data0 data1,在usb2.0中增加了data2和mdata包。
包结束符,对于高速、全速/低速设备是不一样的。全速/低速EOP为一个大约为2个数据位宽度的单端0信号。
枚举过程:
USB线插入主机,主机检测到USB线已插入,挂起USB设备,复位USB,发送枚举起始包,即
阅读(1897) | 评论(0) | 转发(0) |