type-c接口比较方便,可插拔次数也比较多,很多MCU目前都只具有USB2.0接口,但是只需要一点改动就可以转成type-c接口。以STM32举例说明。目前常用的usb3.0的type-c是向下兼用USB2.0的,新发布的usb4.0也是向下兼容的。因此下述的方法也是可以的。目前的type-c接口如下图所示:
在USB2.0端口,USB根据数据传输的方向定义了HOST/Device/OTG三种角色,其中OTG即可作为HOST,也可作为Device,在Type-C中,也有类似的定义,只是名字有了些许修改。如下所示:
(1)DFP(Downstream Facing Port):
下行端口,可以理解为Host或者是HUB,DFP提供VBUS、VCONN,可以接收数据。在协议规范中DFP特指数据的下行传输,笼统意义上指的是数据下行和对外提供电源的设备。
(2)UFP(Upstream Facing Port):
上行端口,可以理解为Device,UFP从VBUS中取电,并可提供数据。典型设备是U盘,移动硬盘。
(3)DRP(Dual Role Port):
双角色端口,类似于以前的OTG,DRP既可以做DFP(Host),也可以做UFP(Device),也可以在DFP与UFP间动态切换。典型的DRP设备是笔记本电脑。设备刚连接时作为哪一种角色,由端口的Power Role决定;后续也可以通过switch过程更改(如果支持USB PD协议的话)。
USB Type-C的插座中有两个CC脚,以下的角色检测,都是通过CC脚进行的,但是对于插头、或者线缆正常只有一个CC引脚,两个端口连接在一起之后,只存在一个CC引脚连接,通过检测哪一个CC有连接,就可以判断连接的方向。如果USB线缆中有需供电的器件,其中一个CC引脚将作为VCONN供电。
DFP的CC上有上拉电阻Rp,在UFP有下拉电阻Rd,,未连接时,DFP的VBUS是无输出的。连接后,CC pin相连,DFP的CC pin会检测到UFP的下拉电阻Rd说明连接上了,DFP就打开Vbus电源开关,输出电源给UFP。而哪个CC (CC1,CC2)检测到下拉电阻就确定接口插入的方向,顺便切换RX/TX。电阻Rd=5.1k,电阻Rp为不确定的值,USB Type-C有几种供电模式,靠什么来甄别?就靠Rp的值,Rp的值不一样,CC检测到的电压就不一样。然后来控制DFP端执行哪种供电模式。需要注意的是,上图里画了两个CC,实际上在不含芯片的线缆里只有一根CC线。含芯片的线缆也不是两根CC线。
stm32 USB2.0 Device转成TYPE-C如下图所示:
stm32 USB2.0 Host转成TYPE-C如下图所示:
stm32 USB2.0 Otg转成TYPE-C如下图所示:
具体在其文档AN4775里有介绍。