硬汉嵌入式论坛

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

stm32,emmc,usb芯片,type-c接口模拟u盘

[复制链接]

1

主题

11

回帖

14

积分

新手上路

积分
14
发表于 2025-2-20 19:46:36 | 显示全部楼层 |阅读模式
本帖最后由 study1 于 2025-2-20 19:48 编辑

数据线连接到电脑,在"磁盘管理" 界面可以看到新磁盘以及容量,但是在"此电脑",只能识别到盘符,但是读不到容量,请教下路过的大佬,是需要重写emmc模拟u盘部分的代码么。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115651
QQ
发表于 2025-2-21 08:44:12 | 显示全部楼层
格式一次试试。或者换个别的电脑看下。
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-2-21 10:47:26 | 显示全部楼层
代码里格式过了
  uint8_t retSD;
    retSD = f_mkfs("0:", FM_FAT32, 0, work, sizeof(work));
    if (retSD != FR_OK) {
     //处理格式化错误
                        printf(" retSD:%d",retSD);
    }
                else
                        printf("格式化ok");
格式化成功
显示盘符.png
请将磁盘插入u盘.png
无法访问u盘.png
软件里格式化.png
回复

使用道具 举报

33

主题

188

回帖

287

积分

高级会员

积分
287
发表于 2025-2-21 11:10:18 | 显示全部楼层
看看读取容量的计算正不正常
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115651
QQ
发表于 2025-2-22 08:09:45 | 显示全部楼层
study1 发表于 2025-2-21 10:47
代码里格式过了
  uint8_t retSD;
    retSD = f_mkfs("0:", FM_FAT32, 0, work, sizeof(work));

是不是电脑端格式化不行,且在别的电脑端也测试了不行,如果是这样,确实是接口函数实现要优化下
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-2-22 11:00:26 | 显示全部楼层
LinY 发表于 2025-2-21 11:10
看看读取容量的计算正不正常

谢谢您的回复,读取容量的计算是没问题的
usbd_storage_if.c 里面 STORAGE_GetCapacity_HS()这个是正常的,能够读到
*block_num  = STORAGE_BLK_NBR; //61079552
  *block_size = STORAGE_BLK_SIZ; //512
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-2-22 11:03:15 | 显示全部楼层
eric2013 发表于 2025-2-22 08:09
是不是电脑端格式化不行,且在别的电脑端也测试了不行,如果是这样,确实是接口函数实现要优化下

谢谢回复
1.电脑端手动格式化 ,任务栏直接卡死;别的电脑也试过了;
2.优化问题:我用的Cubemx生成的usb_device相关文件,优化有点无从下手,想请教下看哪些资料 ,自己有调查过,《圈圈带你学USB》?
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-2-22 11:53:12 | 显示全部楼层
USB虚拟成串口进行数据收发是可以的
sp20250222_115056_862.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115651
QQ
发表于 2025-2-23 06:12:56 | 显示全部楼层
study1 发表于 2025-2-22 11:03
谢谢回复
1.电脑端手动格式化 ,任务栏直接卡死;别的电脑也试过了;
2.优化问题:我用的Cubemx生成的u ...

参考SD卡模拟U盘的例子,这方面的案例和资料比较多,这个eMMC是一样的,可以对比下
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2025-4-9 17:13:48 | 显示全部楼层
更换晶振暂时解决了一部分问题,目前在电脑端可以对u盘进行格式化、文件写入、编辑、读取。
但是stm32使用Fatfs对emmc进行写入后,再连接到电脑,又只能识别到盘符。必须要在代码里格式化才行,但这样我要保存的内容就没了。
请问有没有大神遇到过类似问题,或者有解决思路?如果有经验的朋友,能否提供一些建议或指导?非常感谢!
1.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115651
QQ
发表于 2025-4-10 10:19:06 | 显示全部楼层
study1 发表于 2025-4-9 17:13
更换晶振暂时解决了一部分问题,目前在电脑端可以对u盘进行格式化、文件写入、编辑、读取。
但是stm32使用 ...

这种情况确实没遇到过。
回复

使用道具 举报

680

主题

3479

回帖

5544

积分

论坛元老

积分
5544
发表于 2025-4-18 17:23:30 | 显示全部楼层
study1 发表于 2025-4-9 17:13
更换晶振暂时解决了一部分问题,目前在电脑端可以对u盘进行格式化、文件写入、编辑、读取。
但是stm32使用 ...

更换 u盘试试看
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-9 15:39 , Processed in 0.355104 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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