typec接口 otg功能FUSB301芯片使用

Source(供电端)、Sink(用电端)和 DRP(双重角色,或为供电端,或为用电端,可根据需要随时变换),TYPEC USB3.0 使用两对差分信号:TX 差分两根线 , RX 差分两根线。

结构框图

在这里插入图片描述上面是FUSB301的结构框图,上面标注了3个框:

  • 配置接口使用的是I2C,遵循I2C协议通讯,可对FUSB301进行配置。

  • 如果typec 使用的是usb3.1 ,速率为10Gbps(USB3.0 5Gbps)。如果信号线还是被简单地一分二的话,不连续的信号线阻抗将严重破坏数据传输质量,因此必须由MUX切换来保证信号路径阻抗的一致性,以确保信号传输质量。这个mux芯片就是FUSB340芯片。此芯片可以根据ss_sw去选择对应的路。图如下:
    在这里插入图片描述3. CC检测引脚。usb线就只有一个CC线。如下图所示:
    在这里插入图片描述通过检测CC的电压状态,来判断插入的是device还是host。 通过CC1还是CC2是否连接判断正反插。

  • ID引脚输出表,表如下:
    在这里插入图片描述当有device插入时,ID引脚输出低电平。 默认为高组态。可以上拉一个电源。
    如下:
    在这里插入图片描述

FUSB301配置接口I2C

  • I2C的一些基础知识
    I2C 输出都是开漏输出,所以在输出端都需要上拉电阻,在正常状态下都是高电平状态。I2C。

  • 时序图
    在这里插入图片描述在这里插入图片描述

  • 读写操作
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

驱动读代码段:
在这里插入图片描述读分为两个消息:
第一个是写:写寄存器地址
第二个是读: 读数据
驱动写代码段:
在这里插入图片描述写就是一个消息:
需要写的寄存器地址和数据

FUSB301芯片使用

根据数据手册,首先确认slave addr: 地址为0x25
在这里插入图片描述
如果要配置为OTG的话,需要将mode设置为DRP模式:
在这里插入图片描述

使用I2C工具进行调试:

查看有哪些I2C控制器

iking@iking:~$ i2cdetect -l
i2c-3	i2c       	3190000.i2c                     	I2C adapter
i2c-30	i2c       	i2c-2-mux (chan_id 0)           	I2C adapter
i2c-1	i2c       	c240000.i2c                     	I2C adapter
i2c-37	i2c       	i2c-2-mux (chan_id 7)           	I2C adapter
i2c-8	i2c       	31e0000.i2c                     	I2C adapter
i2c-35	i2c       	i2c-2-mux (chan_id 5)           	I2C adapter
i2c-6	i2c       	31c0000.i2c                     	I2C adapter
i2c-33	i2c       	i2c-2-mux (chan_id 3)           	I2C adapter
i2c-4	i2c       	Tegra BPMP I2C adapter          	I2C adapter
i2c-31	i2c       	i2c-2-mux (chan_id 1)           	I2C adapter
i2c-2	i2c       	3180000.i2c                     	I2C adapter
i2c-0	i2c       	3160000.i2c                     	I2C adapter
i2c-9	i2c       	NVIDIA SOC i2c adapter 0        	I2C adapter
i2c-36	i2c       	i2c-2-mux (chan_id 6)           	I2C adapter
i2c-7	i2c       	c250000.i2c                     	I2C adapter
i2c-34	i2c       	i2c-2-mux (chan_id 4)           	I2C adapter
i2c-5	i2c       	31b0000.i2c                     	I2C adapter
i2c-32	i2c       	i2c-2-mux (chan_id 2)           	I2C adapter

通过数据手册确认了我们使用的I2C控制器为I2C2,对应为i2c-1。
扫描看控制器上有哪些设备:

iking@iking:~$ i2cdetect -y 1
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                                                 
10:                                                 
20:                                                 
30: -- -- -- -- -- -- -- --                         
40:                                                 
50: -- -- -- -- -- -- -- 57 -- -- -- -- -- -- -- -- 
60:                                                 
70:   

结果好像没有找到0x25的设备。

使用工具直接与0x25设备通讯,获取寄存器数据:

iking@iking:~$ i2cdump -f -y 1 0x25
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 12 04 03 00 00 00 00 00 00 00 00 00 00 00 00    .???............
10: 00 09 08 00 00 00 00 00 00 00 00 00 00 00 00 00    .??.............
20: 00 00 c1 80 20 00 00 00 00 00 00 00 00 00 00 00    ..?? ...........
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

可以看到设备id为0x12.硬件设备通讯正常。
如果不想写驱动,可以直接通过工具将数据写进去:
i2cset -f -y 1 0x25 0x02 0x10
写完后查看:

iking@iking:~$ i2cdump -f -y 1 0x25
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 00 12 10 03 00 00 00 00 00 00 00 00 00 00 00 00    .???............
10: 00 09 08 00 00 00 00 00 00 00 00 00 00 00 00 00    .??.............
20: 00 00 c1 80 20 00 00 00 00 00 00 00 00 00 00 00    ..?? ...........
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

从上面看出02寄存器的数据由0x04默认值变更为0x10数值了。

稍后把设备的驱动程序附上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值