完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是USB新手,为设计硬件的客户开发支持USB的嵌入式设备。目标是STM32F4。 用例是这个设备A)当连接到计算机时,应该显示为COM端口。B)当连接到外围设备时,可以作为主机通过COM端口与其通信。例如,初始外设将提供DB9连接,因此在我的嵌入式设备和外围设备之间可能存在USB到RS232加密狗。因此,在这种情况下,我认为我们的外围设备将是加密狗。C)长期目标是支持其他外围设备,例如闪存驱动器和用户输入设备。 上面的项目A)已经使用ST的CDC类驱动程序实现。我有很多关于如何处理这个的问题。 我对On The Go Supplement的理解是,基本上有两种方法可以解决这个问题 - 无论是作为嵌入式主机还是使用OTG。 1)规范似乎表明,如果使用嵌入式主机模型,则必须支持至少两个USB连接,可能需要支持micro上的多个端口,一个配置为主机连接,一个配置为外围连接。它是否正确? 2)客户计划使用OTG并将ID信号硬接线到微型地面(主机),并根据需要切换角色(可能通过HNP,如果两者都支持OTG?)。我不相信这会起作用,因为当连接到PC时PC会认为它是主机,对吗? 3)我对CDC(ACP)和VCP之间的关系感到有些困惑。似乎VCP是一种特定类型的CDC,但我不清楚它是如何扩展它的。鉴于客户已经使用ST CDC驱动程序实现了上述A),对我来说,如果没有VCP,这似乎很奇怪? 4)如果我想在上面实施B)(假设使用OTG)我的身边需要什么,因为该设备已经充当外设CDC?即作为外设时,除了驱动程序中已有的CDC连接之外,还需要什么才能充当CDC连接的主机?
|
|
相关推荐
7个回答
|
|
不,你只需要一个USB连接。您可以在主机和设备模式之间更改USB外围设备的操作模式。其中只能同时启用其中一个。STM32F4支持两种模式。如果使用OTG功能,则会自动选择模式。
除非您连接到支持HNP的其他OTG设备,否则它将无法工作。您的PC不是OTG设备,因此无法执行此操作。 Virtual Comm Port只是一个Windows驱动程序,它导致CDC设备的某些配置(CDC是USB规范类)在Windows中显示为com端口。底层USB组件只是CDC协议(嗯,它的一个特定部分,我想你也可以把它作为VCP部分考虑)。 作为主持人真的是完全不同的事情。您需要枚举设备,生成SOF数据包等.ST有如何执行此操作的示例,但它本质上是一个全新的软件堆栈。 |
|
|
|
关于1)您的声明似乎与OTG补充说明中的文本冲突“嵌入式主机:嵌入式主机(EH)产品通过一个或多个标准A插座提供目标主机功能。嵌入式主机产品还可提供USB外设功能,交付单独通过一个或多个B型插座。“ 这不是说需要两个端口吗?
|
|
|
|
如果您不想使用OTG / USB-C,那么您可以拥有两个独立的端口(主机和设备)。你的问题提到了OTG所以我假设你不想拥有两个物理端口。
|
|
|
|
两个端口不是优选的,但它可能是可行的。两个外部端口是否可以路由到微型的同一个DM / DP,是否有某种方法可以知道主机或设备端口是否正在使用?
|
|
|
|
端口无法直接连接在一起,但使用模拟开关可以使某些东西工作。微型计算机可以每秒在端口之间循环一次,以查看是否有任何连接到任何一个端口。我认为一些STM32F4器件可以将DM / DP引脚连接到不同的引脚,因此您可以使用此工具。
|
|
|
|
如果您/您的客户想要完成基于STM32F4的设备的双重角色功能,则需要具有正确的硬件实现。
首先,如果您的客户设计了硬件,他们应该能够回答您的所有问题。但至少OTG实现的“硬连线ID信号”是完全错误的:如果需要角色切换,则ID引脚由AB电缆控制。OTG设备的作用由ID引脚控制,ID引脚从电缆插头外部提供。这是双角色设备最常见和最合理的实现(以前的OTG,没有意义的措辞)。 要做最简单的OTG表格,您的设备必须有一个特殊的双角色“AB”连接器,它可以容纳Type-uA和-uB插头。外围设备应该有Typa-uA插头(方形插头),ID引脚接地。ID引脚应连接到STM设计中的GPIO,应由固件检测并激活USB主机功能。您应该拥有一些专有代码,STMicro可能会提供它。 在OTG-Host功能的情况下,您的硬件必须具有在确定端口上的ID = O时被激活的电源开关。 基本PC(A型插座)之间的普通电缆将使电缆的另一端为uB型(半圆形),ID引脚悬空。浮动引脚应由同一GPIO检测并激活CDC软件堆栈,使其成为PC主机的通信设备。 如果你的PC主机也有一个OTG端口(一种罕见的情况),那么两个u-USB设备之间的电缆应该是uA-uB型,并且只有这种电缆应该存在。 如果客户设计的硬件没有上述功能(ID引脚检测,VBUS电源开关),则必须重新设计。 |
|
|
|
谢谢。我想你已经确认了我对OTG所理解的一切。理想情况下,这可以在早些时候理解,但我相信ID信号的设计方式与认为如果需要可以逆转角色一样。当然,这会给PC类型A - >产品uB带来问题
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:43 , Processed in 0.562672 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号