STM32/STM8技术william hill官网
直播中

陈丽

7年用户 1502经验值
私信 关注
[问答]

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

是否可以在STM32上实现主机(没有硬件支持),只有程序代码将数据写入USB闪存盘?对于这个问题上没有在互联网上找到任何相关信息,有一个实现设备,但不是主机。我正在研究u***规范的答案,但我还是不太明白

回帖(9)

贾永世

2018-9-14 16:17:48
你的意思是USB主机?你想在STM32上没有特殊的frimware启动吗?
举报

尚文清

2018-9-14 16:18:00
有数百种不同的STM32
举报

陈丽

2018-9-14 16:18:23
是的,但我有一个没有硬件支持
举报

陈丽

2018-9-14 16:18:50
是的,我的意思是USB主机。也许功能有限,因为我只需要写入USB驱动器。
举报

张丽

2018-9-14 16:19:14
为什么无法使用仅设备硬件实现主机功能?因为USB在主机和设备方面不对称。

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

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

这些是MCU设计有独立主机硬件和设备硬件控制器的主要原因。
举报

李桂英

2018-9-14 16:19:52
更不用说如果有人甚至只是在一个物理层就能用廉价的STM32击败FS USB,它不像你可以用LS来谈论大容量存储设备,对吗?在Cortex-M上做LS(设备)在软件中几乎不可能
举报

李伟

2018-9-14 16:20:45
如果您有通过UTMI / ULPI的外部USB PHY,如果您可以直接访问UTMI端口,则可以使用BYTE-banging制作FS主机。你通常没有。你可以做一些FPGA包装器。是的,在LS速度下没有大容量存储。
举报

陈丽

2018-9-14 16:21:54
是的,但是添加一个FPGA只是为了让你不必购买带有UTMI访问或实际专用主控制器硬件的MCU,这是一个令人惊讶的举动,更不用说处理潜在的2所需的智能数量这一事实,混合设备的设备总线可能比“哑”设备需要能够做的更强烈。
举报

人中狼

2018-9-14 17:31:44
不太明白你的问题,不过USB里有一个OTG的协议,支持OTG的芯片可以在数据线的选择下做主机或设备端。USB的5脚插座里有一个引脚就是做OTG的主从选择用的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分