新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2022-8-30
- 在线时间
- 0 小时
|
2金钱
最近在用GD32F105的USBFS外设,先是根据官方固件库中的USBDEVICE下udisk的程序,使用内部Flash模拟了一个大容量存储设备的U盘,插上电脑后提示格式化完成后能正常使用没什么问题。然后在EXMC接口上外挂了一片海力士的H27U4G8F,把NAND驱动加入到USBFS的固件程序对应的底层驱动接口就出现了问题,电脑设备管理器显示能枚举出一个大容量存储设备,但是获取设备描述符失败,设备没有启动。使用BUS Bound来总线上的数据传输情况发现,在插上设备后能读到INQUIRY、容量等信息,也能正常读写扇区,但读了几个后就出现发送逻辑单元准备就绪的00命令,然后就会出现SSTS 08 no device这种状态,接着计算机就会停用这个设备,回馈一个设备无法连接的状态。使用串口打印信息的方式进行调试发现,对CBW解码函数中,usbd_rxcount_get (udev, MSC_OUT_EP)这个函数返回值有时会出现为0的状况,这个返回值本来应该为0x1F,也就是BBB_CBW_LENGTH宏定义的值,这样就会导致调用msc_bbb_abort (udev)这个函数中止传输,所以主机长时间接收不到返回信息,多次尝试后没有响应则会停掉这个设备,显示no device。问题就是有时候会显示连接成功,对U盘读写访问都没问题,有时候又会出现这种状况,有人知道这是为什么么。
|
|