硬汉嵌入式论坛

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

usb host和device直接通信的疑问?

[复制链接]

19

主题

310

回帖

367

积分

高级会员

积分
367
发表于 2021-9-27 20:07:29 | 显示全部楼层 |阅读模式
本帖最后由 hpxzw_foxmai 于 2021-9-27 20:09 编辑

usb host和device 可以直接通信吗?
需求:
一台机器A,芯片没有USB HOST功能,只有USB DEVICE功能(可以在电脑上模拟U盘)
目标:

希望机器A通过U盘来升级,不希望机器A来模拟U盘,不方便

老板不想加外扩usb芯片,觉得这样每台机器都要,成本不划算~


想法:
自己做一个转接板,转接板带有STM32 USB HOST功能的芯片,例如STM32F429,

机器A有个专用按键,开机按下就进入USB DEVICE模式
机器A接转接板,这时机器A算是U盘A
转接板接U盘,这里就是真实U盘B,
转接板按下一个按键,STM32F429就重启进入升级模式,读取U盘B(真实U盘)的内容,然后发送给U盘A(机器A)
-----------------------------------------------------------------------------------------------------------------------------------------
①这样的功能,可以实现吗?可以的话,F429与U盘A(机器A)是怎么通讯?
②F429可以支持2个U盘吗?
③有没有这样的案例可以参考?

谢谢!


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106890
QQ
发表于 2021-9-28 11:34:24 | 显示全部楼层
读了好几遍,确实没有读懂楼主的意思,不好意思。方便的话,重新描述下。

机器A有个专用按键,开机按下就进入USB DEVICE模式
机器A接转接板,这时机器A算是U盘A
转接板接U盘,这里就是真实U盘B,
转接板按下一个按键,STM32F429就重启进入升级模式,读取U盘B(真实U盘)的内容,然后发送给U盘A(机器A)

这四段话没读懂
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-9-28 13:31:35 | 显示全部楼层
eric2013 发表于 2021-9-28 11:34
读了好几遍,确实没有读懂楼主的意思,不好意思。方便的话,重新描述下。

机器A有个专用按键,开机按下 ...

额,不好意思,可能说的比较复杂
就是机器A只有USB DEVICE模式,
那我能不能做个小机器,小机器与机器A通讯,把机器A当U盘来读写,
然后小机器从真实U盘来读数据,写到机器A里面去

这样能不能实现?
另外小机器与机器A通讯是按什么协议?
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-9-28 14:31:05 | 显示全部楼层
eric2013 发表于 2021-9-28 11:34
读了好几遍,确实没有读懂楼主的意思,不好意思。方便的话,重新描述下。

机器A有个专用按键,开机按下 ...

刚才回复的,不知道怎么一直没显示
就是机器A只有DEVICE模式,
那我能不能做个专门用来升级的工装,简称B
B通过USB与机器A连接,把机器A当成一个U盘,
然后从真实U盘读取信息,写入机器A里面

这样是否可行??
可行的话,写入机器A,是按什么协议? 有没有参考的例程
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106890
QQ
发表于 2021-9-29 09:48:04 | 显示全部楼层
hpxzw_foxmai 发表于 2021-9-28 14:31
刚才回复的,不知道怎么一直没显示
就是机器A只有DEVICE模式,
那我能不能做个专门用来升级的工装,简 ...

可以的,没问题。host做外挂U盘功能,device做模拟U盘功能。
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-9-29 12:24:24 | 显示全部楼层
eric2013 发表于 2021-9-29 09:48
可以的,没问题。host做外挂U盘功能,device做模拟U盘功能。

好的 谢谢版主
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-9-29 16:12:32 | 显示全部楼层
eric2013 发表于 2021-9-29 09:48
可以的,没问题。host做外挂U盘功能,device做模拟U盘功能。

版主好,还有个问题
我们机器A需要上电就模拟U盘,然后等工装自动检测,发现机器A是U盘后,写文件表示知道了
这样机器A就等着进行升级
否则就正常启动

之前的stm32芯片,我测试发现如果使用了usb的功能,需要重新复位才能跳转到APP
问题:
初始化了host或者device后,能直接调整到APP吗? 我这边之前都不能这样操作
跳转的代码是参考你的IAP



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106890
QQ
发表于 2021-9-29 17:04:42 | 显示全部楼层
hpxzw_foxmai 发表于 2021-9-29 16:12
版主好,还有个问题
我们机器A需要上电就模拟U盘,然后等工装自动检测,发现机器A是U盘后,写文件表示知 ...

可以跳转,跳转前要关闭所有USB时钟,并且调用DeInit函数复位初始化。
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-9-30 16:08:11 | 显示全部楼层
eric2013 发表于 2021-9-29 17:04
可以跳转,跳转前要关闭所有USB时钟,并且调用DeInit函数复位初始化。

谢谢版主 我这边试试
回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-10-9 18:17:51 | 显示全部楼层
eric2013 发表于 2021-9-29 09:48
可以的,没问题。host做外挂U盘功能,device做模拟U盘功能。

版主好,我这边发现这个方案不行

stm32模拟成U盘,是FAT格式,主机那边读U盘,用的是fatfs,只支持fat32或者exFAT格式
这个怎么弄?

解决方案:
1、stm32模拟U盘,变为exFAT或者fat32格式
2、IAP程序,可以读取FAT格式的文件
哪个方案可行?用什么库?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106890
QQ
发表于 2021-10-10 09:41:49 | 显示全部楼层
hpxzw_foxmai 发表于 2021-10-9 18:17
版主好,我这边发现这个方案不行

stm32模拟成U盘,是FAT格式,主机那边读U盘,用的是fatfs,只支持fat ...

你说的fat是fat几,fatfs支持fat12,fat16,fat32,exfat,完全没问题,这就是所有的fat系列了。



回复

使用道具 举报

19

主题

310

回帖

367

积分

高级会员

积分
367
 楼主| 发表于 2021-10-10 12:07:56 | 显示全部楼层
eric2013 发表于 2021-10-10 09:41
你说的fat是fat几,fatfs支持fat12,fat16,fat32,exfat,完全没问题,这就是所有的fat系列了。

应该是FAT16吧,stm32模拟U盘,在windows上就显示FAT格式,后面没写数字

我刚试了下,我IAP支持的是FAT32,但U盘格式化成exFAT和NTFS,都会进中断,能识别到U盘连接

但另外一台设备,模拟成U盘,FAT格式,插上电脑就变U盘,(简称机器A)

通过typec-typec的线连接到IAP机器(检测主机B),
主机B 不能识别成U盘,进不了中断

这样看,上面说的方案行不通,不知道是哪里的问题
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 09:40 , Processed in 0.321633 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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