JL杰理AC696N开发板做存储设备适配(2):U盘不读问题处理与卡复用注意事项

描述

JL杰理AC696N开发板做存储设备适配(2):U盘不读问题处理与卡复用注意事项

引言

U盘不读是嵌入式开发中常遇到的烦心事。插上去没反应,换一个U盘又能读,往往是时序、超时或者模式切换的问题。

杰理蓝牙音频系列芯片开发中,USB OTG同时支持Host和Device角色,如果U盘回应慢,系统可能误判为从机模式导致不读。把常见原因和排查方法过一遍,遇到类似问题可以快速定位。

开发板

一、U盘不读的常见原因与解决

文件系统:默认支持FAT12、FAT16、FAT32、exFAT。不支持NTFS,也不支持苹果文件系统。

U盘响应慢:部分U盘反应较慢,Host过了超时时间会认为U盘没有回应,导致挂载不成功。

解决方法

开启log打印,

开发板

观察是否有超时相关打印。

开发板

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

开发板开发板

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

开发板

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

开发板

二、U盘与SD卡复用IO的特殊情况

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

开发板开发板开发板

总结

U盘不读时,先确认文件系统格式,再开log看是否超时。如果是OTG模式切换导致的,可以适当加长等待时间或调整inquery延时。

卡和U盘复用时,建议优先用CLK检测卡,非要改CMD检测的话务必充分测试。

这些经验在JL杰理AC6966B开发板上验证过,能解决大部分不读盘的问题。

开发板



审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分