CPU作为master,通过I2C接934,934通过FD-LINK线连接933,I2C设备挂在933上,I2C地址为0X25
请问要配置934的那些寄存器,才可以让CPU可以通过I2C访问到挂在933上的I2C设备,谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
CPU作为master,通过I2C接934,934通过FD-LINK线连接933,I2C设备挂在933上,I2C地址为0X25
请问要配置934的那些寄存器,才可以让CPU可以通过I2C访问到挂在933上的I2C设备,谢谢!
您好。关于您的问题,您可以先参考下这篇应用手册,它是以DS90UB913/DS90UB914为例介绍如何实现remote通信:
https://www.ti.com.cn/cn/lit/an/snla222/snla222.pdf
如果有其他疑问,再联系。
我结合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 f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
0x3d对应的是934,0x58对应的是933.
将0x4A(I2C设备地址)写入寄存器0x5d中,并在寄存器0x65中写入0x4b,但在总线上没有扫描到0x25的I2C设备。
两点需要注意,第一,I2C设备地址和Alise 地址是否都需要左移一位?要看下设备地址给出的是7bit地址,如果是的话需要左移一位。
即0x4A <<1即0x94,0x4b<<1即0x96
第二,0x58是否已经enable I2C pass through?
那看起来配置I2C 设备的寄存器看起来没有问题了。
那先读取下934的寄存器0x5B,如果和934和933能正常link,那么933的地址会自动加载到0x5B中去。
所以您先读取下0x5B看是否能读取到933的地址。
如果不能,要检查下933+934的连接。
934的寄存器值如下,0X5B中是可以读到933的地址的
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 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?.......????2
50: 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..........
您好,我看了寄存器的配置,I2C device的寄存器都配置了,也已经enable pass through,使用的cable时coax,数据类型为RAW10.这里配置都没问题。
另外,要看下硬件MODE 引脚是否都配置的没问题?
MODE的上下拉电阻和寄存器的配置是一致的,没有问题。
您是通过示波器观察I2C的时序发现不能和I2C设备通信的吗?
我建议您用示波器测试下,主机发送的任何地址为0x4B的命令都由934重新映射到camera 0x4A上。
所以您可以看下I2C的时序,当主机发送0x4B地址时是否能收到camera的ACK信号?
我是通过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 2
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- UU -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- 58 -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --