STM32F429 USB能识别,SD卡识别不了----被F429坑惨了

最近在搞一个PC端通过USB识别STM32F429的SD的功能,并能进行读写的案例,真是被坑惨了....

1、一开始用的野火挑战者F429和正点原子F407官方的例程,野火挑战者F429的例程(USB-SD-FLASH模拟U盘)对SPI FLASH的识别都没问题,但是移植了SD的读写后就出现了问题,就只能识别Flash,不能识别SD,我还一直以为是SD卡驱动的问题,但是单独的SD卡读写又是正常的,没有问题;试了了野火的驱动和正点原子的驱动,结果都是一样的,很纳闷了。也用正点原子的F407的开发板试了例程(实验51 USB读卡器(Slave)实验),能正常的识别SPI FLASH ,也能正常的识别SD卡(4G卡),这样换来换去的调试了很久,还对比了彼此的硬件,搞得差不多每个元件都搞成一样了。悲催了。但结论是应该不是SD卡驱动的问题。

2、继续用F429的板子调试,找问题。一开始用野火的F429的板子调试,就一直返回SD响应超时,但是SD卡驱动都是用的官方的,差点就放弃了。后来就慢慢调咯,也对它不报希望了,就用我们自己的板子调,一开始在结构体USBD_MICRO_SDIO_fops内,前几个都能循环的跑过,就是到了STORAGE_Read,就跑不到这步,然后仿真,是一直在USB的库函数SCSI_Read10()内返回错误-1,我都没改过USB的任何参数啊,苍天啊!调到这里就可以锁定在USB的问题了,驱动肯定没问题,那就是USB的其它问题了。

3、继续调试,找相关的文档,对比F429 与F427的区别。带着这两个问题去查看了参考

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
是的,STM32F429上的USB OTG接口可以通过使用USB CDC(Communication Device Class)协议来实现虚拟串口功能。 通过将USB OTG接口配置为USB CDC设备,可以在STM32F429上创建一个虚拟串口,使其在计算机上显示为串口设备。这样,你就可以通过USB连接将STM32F429与计算机进行通信,并像使用普通串口一样发送和接收数据。 要在STM32F429上配置USB OTG接口为虚拟串口,请按照以下步骤进行: 1. 打开RT-Thread的配置文件(`rtconfig.h`),确保以下宏定义被启用: ```c #define RT_USING_USB_DEVICE #define RT_USB_DEVICE_CDC ``` 2. 在应用程序的初始化函数中,调用以下函数来创建虚拟串口设备: ```c #include <rtthread.h> #include <usb_device_cdc.h> int app_init(void) { /* 创建虚拟串口设备 */ struct rt_usb_cdc_device *cdc; cdc = rt_usb_cdc_device_create("cdc", RT_NULL); if (cdc == RT_NULL) { rt_kprintf("Failed to create CDC device"); return -RT_ERROR; } return RT_EOK; } ``` 3. 在RT-Thread的配置文件(`rtconfig.h`)中,你可以根据需要对虚拟串口设备进行配置,例如设置波特率、缓冲区大小等。 4. 编译和下载你的应用程序到STM32F429开发板中,并在启动后,虚拟串口设备将被创建并可以使用。 需要注意的是,使用USB OTG作为虚拟串口时,你需要在计算机上安装对应的串口驱动程序,并将其与STM32F429连接起来。此外,还需要根据具体的应用需求配置和使用USB CDC设备。 确保参考RT-Thread和USB设备驱动的文档以获取更详细的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值