硬汉嵌入式论坛

 找回密码
 立即注册
查看: 953|回复: 3
收起左侧

[ThreadX全家桶] STM32U5移植USBX,来对W25Q128模拟U盘失败

[复制链接]

10

主题

10

回帖

40

积分

新手上路

积分
40
发表于 2024-6-26 10:33:02 | 显示全部楼层 |阅读模式
问题描述:
芯片STM32U5G9ZJT6Q,自己画的电路板,想实现基于USBX的W25Q128模拟U盘功能
问题1:电路板已经移植USBX虚拟串口,通讯成功,能正常首发,这样是不是代表我的USB部分的电路没有问题,可以进行USBX MSC的移植?
问题2:
在cubemx移植USBX MSC的时候发现电脑提示“请插入U盘”,不知道是什么原因,自己仔细检查了读写W25Q128的 接口应该是没有问题的,
W25Q128事先使用filex进行了格式化,并且在里面正常创建了一个.txt文档,filex也能正常读写这个文档。
不知道什么原因一连接电脑会提示“请插入U盘”,是filex格式化的问题吗?还是驱动哪里会有问题。

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-6-26 16:08:00 | 显示全部楼层
如果仅仅是模拟U盘,不需要使用FileX操作,在USBX的底层接口文件里面做好读写即可,这个读写函数直接使用W25Q原始API,不需要使用FileX的。
回复

使用道具 举报

10

主题

10

回帖

40

积分

新手上路

积分
40
 楼主| 发表于 2024-6-26 23:20:12 | 显示全部楼层
貌似找到问题了,flash必须要先擦除,按照这个接口就没问题,原先没有擦除
UINT USBD_STORAGE_Write(VOID *storage_instance, ULONG lun, UCHAR *data_pointer,
                        ULONG number_blocks, ULONG lba, ULONG *media_status)
{
UINT status = UX_SUCCESS;


UX_PARAMETER_NOT_USED(storage_instance);
UX_PARAMETER_NOT_USED(lun);
UX_PARAMETER_NOT_USED(media_status);

FlashSectorErase(&ExFlash,lba);//先擦除
FlashWriteBytesNoCheck(&ExFlash,lba*4096, data_pointer, number_blocks*4096);  //再写

  return status;
}

就是还有个问题没解决,filex格式化的外部flash,在USBX中为啥会识别不了,必须要格式化一次才行,不知道为啥。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-6-27 09:49:38 | 显示全部楼层
qxp360529 发表于 2024-6-26 23:20
貌似找到问题了,flash必须要先擦除,按照这个接口就没问题,原先没有擦除
UINT USBD_STORAGE_Write(VOID  ...

之前好像遇到过这个问题,是SD卡的,不过解决了,是驱动有点问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 21:04 , Processed in 0.207115 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表