枚举成MSC类成功,但是在数据传输过程中有两个问题:
1、如果CBW非法或者接收到不支持的命令,则设置CSW并发送时会超时并失败,然后主机就复位设备;
2、主机复位设备会失败,复位USB的函数之前都是好用的,包括枚举过程中主机对设备的复位都是没问题的,但是枚举成MSC类后,只要有主机发送复位请求就会复位失败。我用 USBlyzer 抓取数据看到主机复位三次均失败,显示的原因是 设备数据错误,不知道是什么意思。
上面两个问题是什么原因导致的,怎么解决?
Maka Luo:
Hi,
使用的TI那个型号?什么情况下出现这个问题。
Heng Zhao:
回复 Maka Luo:
使用的是 MSP430F5529 枚举成MSC类后 写入SD卡时偶尔会出现错误,但是读取的时候从来不会遇到这种问题,还有就是,虽然TI的例程里编写了USB MSC类的两个类特殊请求处理代码,但是通过调试发现,主机(上位机PC)从来都不会发送 Bulk-Only Mass Storage Reset 请求,在MSC类下,复位请求是利用普通的USB复位来实现的,而不是Bulk-Only Mass Storage Reset 请求,不知道怎么回事,而在MSC类下的普通USB复位会显示失败(用 USBlyzer 抓取),而其他情况下复位是正常的。