STM32
直播中

李宛蔓

7年用户 975经验值
私信 关注
[问答]

STM32F4CUBE USB主读写U盘遇到的几个疑问求解

最近用STM32F429ZET6单片机,STM32F4CUBE1.9的库调试MSC 读写U盘,遇到一些问题,希望高手解答
     我把USB核心库和MSC库和FASFT库加入工程,使用为FS模式;编译没有错误后,将options中C/C++的optimization改为level3;再将startup_stm32f429xx.s中的堆栈和头文件都改为0x2000,可以读写U盘;
(1)但是拔插多次后,会死在USB枚举里,一直是USBH_BUSY;实在没找到问题出在那,以后再拔插U盘都不好用,只能重启;是我程序设置的有问题吗,还是库文件的问题
(2)往U盘里写数,试了4个U盘,有三个好的,另一个能创建txt文件,但内容没写进去,f_write返回值是ok;U盘是好用的,插在电脑上没有问题
(3)在STM32F4CUBE1.9的库中有FATFS例程和USB的MSC例程,里面的文件库底层有的地方不一样,感觉加入FATFS_LinkDriver(Diskio_drvTypeDef *drv, char *path)这个函数后程序后读写U盘能稳定点,要不然有时不能写U盘
(4)历程中f_mount函数和f_open函数没有放在一个函数中,我写U盘出现错误,放在一个函数就好了,很奇怪;感觉MSC例程不对啊

我设置的有什么问题呢,已经调试两周了,为什么按例程做不对了,我把程序上传,希望高手帮忙看看啊。用的是keil5建的工程

回帖(1)

陈游斗

2024-5-6 16:48:56
根据您提供的信息,您在使用STM32F429ZET6单片机和STM32F4CUBE1.9库进行USB MSC读写U盘时遇到了一些问题。以下是针对您提出的问题的解答:

1. USB枚举死在USBH_BUSY的问题:

这个问题可能是由于USB主机栈的某些配置不当或者USB设备(U盘)与STM32F429ZET6之间的兼容性问题导致的。以下是一些建议:

- 确保您的USB主机栈配置正确,包括时钟、电源等。
- 检查您的USB设备(U盘)是否支持高速(480 Mbps)或全速(12 Mbps)模式。如果只支持全速模式,您需要在STM32F429ZET6的USB主机配置中设置相应的速度。
- 尝试降低优化级别,例如从level3改为level2或level1,以查看是否对问题有所帮助。
- 检查您的USB连接线是否稳定,有时候连接线的问题也会导致枚举失败。

2. 往U盘里写数据时,部分U盘无法正常工作的问题:

这个问题可能是由于U盘的文件系统或者格式不支持导致的。以下是一些建议:

- 确保您的U盘使用的是FAT32或FAT16文件系统,因为这些文件系统在大多数情况下与STM32F429ZET6兼容。
- 在将数据写入U盘之前,尝试对U盘进行格式化,以确保其文件系统是干净的。
- 检查您的程序是否正确处理了U盘的读写操作,例如打开文件、写入数据、关闭文件等。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分