良许Linux教程网 干货合集 分享一个OTG硬件检测电路

分享一个OTG硬件检测电路

\1. OTG 接口与转换器

OTG(On The Go)接口与转换器是指在USB传输中可以实现”即插即用”的功能。USB传输通常是基于主从结构,所有的USB传输都是由主机(Host)发起。

在开发板上,可以通过插入U盘将其作为USB主机(Host)使用。而当开发板需要与个人电脑通信时,开发板需要作为USB设备(Device)使用。

为了实现开发板同时作为USB主机(Host)和USB设备(Device)的功能,可以使用OTG插口。该插口能够根据硬件电路的不同自动识别开发板的角色,并切换为USB主机(Host)或USB设备(Device)。

OTG插口有多种形式,其中常见的有Micro USB和Type C,如下图所示:

image-20240206213727944
image-20240206213727944

1.1 Micro US

对于 Micro USB 插座,它有 5 条引脚:

image-20240206213731336
image-20240206213731336

引脚作用如下表所示:

引脚名 作用
VBUS 作为 Host 时,对外供电 作为 Device 时,接收外部输入的电源
DM 数据信号
DP 数据信号
ID 分辨自己角色的引脚: 1:作为 Device 0:作为 Host
GND 地线

开发板作为 USB Device 时,跟 PC 上的 USB 相连,PC 的 USB 接口只有 VBUS、DM、DP、GND,所以开发板的 ID 引脚跟 PC 的 USB 口并无连接,它被板子上的上拉电阻拉高。

开发板作为 USB Host 时,需要接入一个”OTG 转换器”,再连接 U 盘。如下图黑色的转换器:

image-20240206213734306
image-20240206213734306

OTG 转换器的内部电路很简单,就是把 ID 引脚拉低:

image-20240206213736985
image-20240206213736985

这个转换器插入开发板的 OTG 口之后,OTG 口上的 ID 引脚就被拉低,软件把开发板转换为 USB Host。

1.2 Type C

Type C 插座里面有两组完全一样的信号,Type C 数据线无论正插、反插,都可以使用:

image-20240206213739262
image-20240206213739262

Type C 插座有如下信号,在 USB2.0 协议里我们只关心红框里的信号:

image-20240206213741823
image-20240206213741823

开发板作为 USB Device 时,跟 PC 上的 USB 相连,PC 的 USB 接口只有 VBUS、DM、DP、GND,所以开发板的 CC1、CC2 引脚跟 PC 的 USB 口并无连接,它被板子上的上拉电阻拉高。

开发板作为 USB Host 时,需要接入一个”OTG 转换器”,如下图黑色的转换器:

image-20240206213745816
image-20240206213745816

如果不考虑兼容 USB 3.0 协议,上述转换器的电路图很简单,把 Type C 插头里面的 CC 引脚连接 5.1K 欧姆电阻到 GND 即可。如下图所示:

image-20240206213750246
image-20240206213750246

2. OTG 接口电路

开发板上的 OTG 接口需要实现两个功能:

  • 检测 ID 引脚(使用 Type C 接口的话是 CC1、CC2 引脚),引入主控芯片:软件根据它设置 USB 控制器的角色(Host 或 Device)
  • 根据 ID 引脚(或者 CC1、CC2)决定 VBUS 是否输出电源:硬件电路自动实现,或者加入专用芯片

2.1 Micro USB

当 USB_OTG1_ID 高电平时,说明 ID 引脚被板子的上拉电阻拉高,没有被拉低。这时候 AO3416 导通,EN 引脚不使能。这样 SY6280AAAC 就不会对外供电,USB_OTG1_VBUS 就没有电压。

当 USB_OTG1_ID 低电平时,说明 ID 引脚被拉低,这时候 AO3416 截至,EN 引脚使能,SY6280AAAC 对外供电,USB_OTG1_VBUS 有电压,开发板作为 USB Host 对外供电。

image-20240206213755470
image-20240206213755470

2.2 Type C

如果不考虑兼容 USB 3.0 协议,可以使用如下精简电路:CC1、CC2 作为 ID 引脚。原理和上图类似。

image-20240206213758243
image-20240206213758243

如果要兼容 USB 3.0 协议,则需要加入专用的芯片,专用芯片检测到 CC1、CC2 状态后,发中断给主控,并通过 I2C 将信息报给主控,主控再控制供电引脚:

image-20240206213800834
image-20240206213800834

参考:

韦东山老师驱动大全

https://www.lulian.cn/news/otg_gongneng_jiexi-cn.html

https://www.elecfans.com/connector/20180309645002_a.html

https://blog.csdn.net/qq_37659014/article/details/124479125

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部