引言
U盘不读是嵌入式开发中常遇到的烦心事。插上去没反应,换一个U盘又能读,往往是时序、超时或者模式切换的问题。
杰理AC696N蓝牙音箱芯片的USB OTG同时支持Host和Device角色,如果U盘回应慢,系统可能误判为从机模式导致不读。把常见原因和排查方法过一遍,遇到类似问题可以快速定位。

1. U盘不读问题处理方法
1)检查文件系统:默认支持FAT12、FAT16、FAT32、exFAT。不支持NTFS,也不支持苹果文件系统。
2)常见原因:有些U盘反应较慢,Host过了超时时间会认为U盘没有回应,导致挂载不成功。
3)开启log打印:

观察是否有相关打印。

若有,可修改超时参数。

没有改善的话,在appscommonusbusb_common_def.h文件中修改超时时间、复位持续时间、尝试次数,加长等待Slave回应。

4)PC模式影响:程序若使能了PC模式,USB OTG会第一时间以Host端发送数据。若从机没有回应,会认为此时应担任Slave角色。有些U盘插入后发送信息较慢,导致OTG误判而切换到从机模式,从而不读U盘。

5)检查inquery延时:在appscommonusbhostusb_storage.c文件的int usb_stor_init(struct device *device)中,确认延时设置是否正确(右图正确修改)。

2. U盘和卡复用相关
U盘和卡复用后,默认SDK不支持卡用CMD检测(建议使用CLK检测)。若生产出现卡座问题无法使用CLK检测,一定要改成CMD检测,需按文档修改并多做测试。



总结
U盘不读时,先确认文件系统格式,再开log看是否超时。如果是OTG模式切换导致的,可以适当加长等待时间或调整inquery延时。
卡和U盘复用时,建议优先用CLK检测卡,非要改CMD检测的话务必充分测试。
这些经验在JL杰理AC696N开发板上验证过,能解决大部分不读盘的问题。

审核编辑 黄宇
-
开发板
+关注
关注
26文章
6402浏览量
120534 -
蓝牙音箱
+关注
关注
6文章
275浏览量
23905
发布评论请先 登录
使用JL杰理AC696N开发板实现PC模式下读取外挂SPI Flash虚拟为U盘的具体案例操作说明_V1.0
JL杰理AC696N开发板PWM波形生成与控制(2):问题排查
JL杰理AC696N开发板PWM波形生成与控制(1):频率、占空比配置
JL杰理AC696N系列芯片SPI接口实战:驱动Flash、LCD与RGB灯
JL杰理AC696N系列芯片开发UART串口应用宝典:打印、调音与通信Demo
JL杰理AC696N蓝牙音箱方案开发之存储设备应用(2):U盘不读问题的排查与卡复用注意事项
评论