TI中文支持网
TI专业的中文技术问题搜集分享网站

DS90UB934-Q1: 如何配置934寄存器才可以让CPU通过I2C访问到挂在933上的I2C设备

Part Number:DS90UB934-Q1

CPU作为master,通过I2C接934,934通过FD-LINK线连接933,I2C设备挂在933上,I2C地址为0X25

请问要配置934的那些寄存器,才可以让CPU可以通过I2C访问到挂在933上的I2C设备,谢谢!

Kailyn Chen:

您好。关于您的问题,您可以先参考下这篇应用手册,它是以DS90UB913/DS90UB914为例介绍如何实现remote通信:

https://www.ti.com.cn/cn/lit/an/snla222/snla222.pdf

如果有其他疑问,再联系。

,

li ***:

我结合934的手册,将0x4A(I2C设备地址)写入寄存器0x5d中,并在寄存器0x65中写入0x4b,但在总线上没有扫描到0x25的I2C设备。是配置的有什么问题吗?请帮忙看下,谢谢

console:/sys/class/yx_gt9xx # i2cdetect -y 2 0 1 2 3 4 5 6 7 8 9 a b c d e f00: — — — — — — — — — — — — –10: — — — — — — — — — — — — — — — –20: — — — — — — — — — — — — — UU — –30: — — — — — — — — — — — — — UU — –40: — — — — — — — — — — — — — — — –50: — — — — — — — — 58 — — — — — — –60: — — — — — — — — — — — — — — — –70: — — — — — — — —

0x3d对应的是934,0x58对应的是933.

,

li ***:

0x2d对应的是其它设备,接在933上的0x25设备还是在总线上无法扫描到。

,

Kailyn Chen:

li *** said:将0x4A(I2C设备地址)写入寄存器0x5d中,并在寄存器0x65中写入0x4b,但在总线上没有扫描到0x25的I2C设备。

两点需要注意,第一,I2C设备地址和Alise 地址是否都需要左移一位?要看下设备地址给出的是7bit地址,如果是的话需要左移一位。

即0x4A <<1即0x94,0x4b<<1即0x96

第二,0x58是否已经enable I2C pass through?

,

li ***:

I2C设备地址是0x25,左移一位是0x4A,这个是没问题的,

0x58寄存器的数据是0x58,已经enable I2C pass through了

,

Kailyn Chen:

那看起来配置I2C 设备的寄存器看起来没有问题了。

那先读取下934的寄存器0x5B,如果和934和933能正常link,那么933的地址会自动加载到0x5B中去。

所以您先读取下0x5B看是否能读取到933的地址。

如果不能,要检查下933+934的连接。

,

li ***:

934的寄存器值如下,0X5B中是可以读到933的地址的

0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef00: 7a 00 1e 10 cc 01 00 fe 1c 10 7a 7a 01 09 18 7f z.????.???zz????10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 0a …………..??20: 30 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0?…………..30: 00 00 00 00 40 00 00 00 00 00 00 01 14 6f 00 40 ….@……??o.@40: 00 86 74 01 00 00 00 00 00 00 00 12 03 13 04 32 .?t?…….????250: ca 00 00 00 00 00 00 00 58 00 00 b0 b0 4a 00 00 ?…….X..??J..60: 00 00 00 00 00 4b 00 00 00 00 00 00 00 7f 88 88 …..K…….???70: 2b 2c e4 00 00 00 00 c5 00 01 00 00 20 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: 02 0f 00 00 08 00 00 00 00 00 00 00 00 00 00 00 ??..?………..b0: 08 14 1f 08 25 00 08 00 ff 33 03 74 80 00 00 00 ????%.?.?3?t?…c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….d0: 00 43 94 04 60 f4 00 00 00 00 00 00 00 00 00 00 .C??`?……….e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 …………….f0: 5f 55 42 39 33 34 00 00 00 00 00 00 00 00 00 00 _UB934……….

,

Kailyn Chen:

您好,我看了寄存器的配置,I2C device的寄存器都配置了,也已经enable pass through,使用的cable时coax,数据类型为RAW10.这里配置都没问题。

另外,要看下硬件MODE 引脚是否都配置的没问题?

,

li ***:

MODE引脚电路图如下,这块寄存器还需要做什么配置吗

,

Kailyn Chen:

MODE的上下拉电阻和寄存器的配置是一致的,没有问题。

您是通过示波器观察I2C的时序发现不能和I2C设备通信的吗?

我建议您用示波器测试下,主机发送的任何地址为0x4B的命令都由934重新映射到camera 0x4A上。

所以您可以看下I2C的时序,当主机发送0x4B地址时是否能收到camera的ACK信号?

,

li ***:

我是通过i2c工具,无法在总线上扫描到地址为0x4A(0x25)的I2C设备,如下:

0x3D对应的是934,0x58对应的是933,0X2D对应的是总线上的另一个设备,但是就是没在0x25(0X4A)上扫描到设备

另外

1:0x5D和0x65是否可以都设置为0X4A(0X25)呢?

2:933和934的VDDIO可以不同吗,当前934的VDDIO是1.8V,933的VDDIO是3.3V的。

console:/sys/class/yx_gt9xx # i2cdetect -y 20 1 2 3 4 5 6 7 8 9 a b c d e f00: — — — — — — — — — — — — –10: — — — — — — — — — — — — — — — –20: — — — — — — — — — — — — — UU — –30: — — — — — — — — — — — — — UU — –40: — — — — — — — — — — — — — — — –50: — — — — — — — — 58 — — — — — — –60: — — — — — — — — — — — — — — — —

,

Kailyn Chen:

li *** said:0x5D和0x65是否可以都设置为0X4A(0X25)呢?

可以,如果只有一个设备,可以使用相同的地址。

li *** said:933和934的VDDIO可以不同吗,当前934的VDDIO是1.8V,933的VDDIO是3.3V的

I2C是上拉到VDDIO的,1.8V和3.3V的Vih和Vil阈值是不同的,所以这里尽量使用相同的电压。

另外,扫描不到设备,也要注意下上电时序是否都满足datasheet的要求。

,

li ***:

虽然在总线上用i2cdetect扫描不到0x4A(0x25)的远程设备,但强制通信试了,可以进行I2C通信,但向0x4A(0x25)发送数据时NAK的情况较高,差不多发送20个字节就会遇到一个NAK,I2C信号的问题,可以调那些寄存器呢

,

li ***:

感觉解答,是硬件飞线造成的I2C信号问题,调整飞线后问题解决,谢谢

,

Kailyn Chen:

非常感谢您的反馈。也就是说933 3.3V的I2C和934的1.8V的I2C是可以正常通信的对吗?

,

li ***:

嗯,是的

,

Kailyn Chen:

非常感谢您的反馈,也方便遇到这种问题的客户查看此贴,后续有什么问题再讨论。

赞(0)
未经允许不得转载:TI中文支持网 » DS90UB934-Q1: 如何配置934寄存器才可以让CPU通过I2C访问到挂在933上的I2C设备
分享到: 更多 (0)