是否可以在stm32上实现主机(没有硬件支持),只有程序代码将数据写入USB闪存盘?

2019-07-14 17:44发布

是否可以在STM32上实现主机(没有硬件支持),只有程序代码将数据写入USB闪存盘?对于这个问题上没有在互联网上找到任何相关信息,有一个实现设备,但不是主机。我正在研究usb规范的答案,但我还是不太明白
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
小句句63
1楼-- · 2019-07-15 02:00
 精彩回答 2  元偷偷看……
lingjianghui
2楼-- · 2019-07-15 04:03
是的,但我有一个没有硬件支持
lingjianghui
3楼-- · 2019-07-15 05:22
是的,我的意思是USB主机。也许功能有限,因为我只需要写入USB驱动器。
四哥201311
4楼-- · 2019-07-15 09:34
为什么无法使用仅设备硬件实现主机功能?因为USB在主机和设备方面不对称。

在设备端,USB功能是支持称为“SIE”的基本USB协议,即串行接口引擎。该引擎包括设备接收主机请求的能力,从“默认管道”开始,并通过ACK响应获取数据,或发送数据并等待主机ACK完成事务,正确响应。由于USB时序限制(1.7us响应时间),控制事务的最后阶段不能通过软件方式实现,并且设备SIE引擎的大多数部分是硬件编码的。SIE的其他功能是接受地址分配和接受/启用配置,其结束USB附加协议的枚举阶段。然后,SIE支持基本的IN / OUT /其他管道,在相同的协议约束内。简而言之,设备功能是RESPOND。

由于这些硬件限制,不可能将设备引擎用于主机功能,主要是因为主机功能与设备功能完全相反。总线处理遵循非常不同的状态机。主机必须生成周期性帧数据包,并初始化所有事务。然后提供流畅的数据流,所有这些通常都是使用直接内存访问硬件完成的。主机必须提供端口电源功能和端口复位功能,这在设备实现中不存在。

这些是MCU设计有独立主机硬件和设备硬件控制器的主要原因。
kingnet_520888
5楼-- · 2019-07-15 10:53
更不用说如果有人甚至只是在一个物理层就能用廉价的STM32击败FS USB,它不像你可以用LS来谈论大容量存储设备,对吗?在Cortex-M上做LS(设备)在软件中几乎不可能
fhbding
6楼-- · 2019-07-15 10:55
 精彩回答 2  元偷偷看……

一周热门 更多>