硬汉嵌入式论坛

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

USB中MSC CDC怎么切换Host和FDevice)

[复制链接]

2

主题

0

回帖

6

积分

新手上路

积分
6
发表于 2024-5-8 10:58:21 | 显示全部楼层 |阅读模式
本帖最后由 crf 于 2024-5-8 10:59 编辑

STM32F4标准库中一个USB作为Host时模拟U盘,作为Device时作为虚拟串口vcp,当USB开始作为U盘之后,在作为虚拟串口vcp,识别不到串口;反之,U盘不工作
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-8 15:25:53 | 显示全部楼层
这个帖子里面的V1.2版本例子时做了个Host和Device动态切换功能,可以参考。

【安富莱】uCOS-III(FreeRTOS,RTX)+STemWin+FatFs+LwIP+uIP+TCPnet+USB+Modbus+CAN综合Demo汇总
https://www.armbbs.cn/forum.php? ... 1139&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2024-5-8 16:47:37 | 显示全部楼层
eric2013 发表于 2024-5-8 15:25
这个帖子里面的V1.2版本例子时做了个Host和Device动态切换功能,可以参考。

【安富莱】uCOS-III(FreeRTO ...

有没有可能性实现,我插个u盘,mcu能自动识别进入u盘的读写功能;如果插入双头usb连接电脑,就自动进入串口通讯模式?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-9 09:54:58 | 显示全部楼层
caicaptain2 发表于 2024-5-8 16:47
有没有可能性实现,我插个u盘,mcu能自动识别进入u盘的读写功能;如果插入双头usb连接电脑,就自动进入串 ...

可以的,得用OTG模式,OTG有个ID线是用来判断是主机还是从机用的。
回复

使用道具 举报

7

主题

21

回帖

42

积分

新手上路

积分
42
QQ
发表于 2024-5-11 16:09:18 | 显示全部楼层
这个问题我也思考了很久,首先我们用的是USB-A的母座。只有4个触点,那就必然无法实现OTG功能。USB-A又没有TF卡槽那种簧片。4根线怎么看都不可能实现主从检测、U盘和通信一口进行。
USB-A母座.png


那我们是否可以借助USB3.0的A母座呢?注意到USB3.0有一个GND_DRAIN,能不能用一个GPIO监测这个口的状态,来指示芯片USB做主还是做从?
我的想法是先用上拉或者别的形式把这个GPIO默认状态设置为1,做主机,当U盘插进来时不会改变这个IO状态。但是如果是电脑插进来,这个GPIO会跳变成0,MCU转为设备模式。电脑也不会通过USB3.0标准,转而使用USB2.0兼容。
目前只是一个想法,没有做过试验。本来我们项目也要一个USB母口做U盘和通信。但是还没试验就改方案了。
USB3_0A母座.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107156
QQ
发表于 2024-5-12 09:00:04 | 显示全部楼层
yono 发表于 2024-5-11 16:09
这个问题我也思考了很久,首先我们用的是USB-A的母座。只有4个触点,那就必然无法实现OTG功能。USB-A又没有 ...

如果可以改硬件还是使用带ID线的插座靠谱些。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 17:09 , Processed in 0.255125 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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