最近几天在做usb的调试
因为是使用加速仿真器,因此直接将utmi接口的并行信号连了出来,期间遇到了好多问题,现在大概总结一下。
linestate: 与dp/dm组合对应的pin状态位
opmode:由device驱动的驱动状态位
xcvr_select: HS/FS/LS选择位
term_select:也是HS/FS/LS选择位
在usb device初始化后,usb device进入ready状态,此时opmode为1,term_select为FS(兼容usb1.0)
usb device的vbus_valid信号和vbus_otgphy信号均与连接状态标示位直接相连。
当usb device与host完成连接时,usb device的vbus系列信号上电。host发出reset命令,device将dm信号拉高,拉高时间大于1ms之后,在linestate上驱动出翻转序列,对应于phy里的JK序列,进行速度枚举。
速度枚举成功后,term_select按照枚举出的速度置位。进入设备枚举。
设备枚举的过程由host发起control transaction,分别需要获得descriptor configuration 和interface configuration。
设备枚举的前几个步骤都是由操作系统的底层driver发起的,最后一步的interface configuration是由识别出对应pid的driver接管的。