各位大神好:
我在使用DS90UB914+DS90UB913实现CPU和Camera Sesnor之间的单对差分(STP)线传输视频数据的功能。其连接结构如下图所示。我
我现在能通过驱动程序读写DS90UB914,能读DS90UB913和Camera Sesnor的寄存器。可是,当Camera Sensor驱动程序中向Camera Sensor写数据时,报以下NOACK错误:
[10.455268] set sensor gpio as PA-low-10bit [10.461612] @@@@@@@probe ok ------->jxh62 [10.515683] JXh62_read [10.519178] -----jxh62_detect: 424 ret = 0, v = 0xa0 [10.519186] JXh62_read [10.522673] -----jxh62_detect: 432 ret = 0, v = 0x62 [10.522684] jxh62 chip found @ 0x30 (i2c0) [10.541753] jxh62_init [10.544191] JXh62_write_array [10.548089] JXh62_write [10.550611] client addr = 0x30,buf[0]=0x12,buf[1]=0x00,ret=1 [10.556472] vals->reg_num:12, vals->value:0 [11.178615] i2c i2c-0: i2c_jz_irq 441, I2C transfer error, ABORT interrupt [11.185740] i2c i2c-0: --I2C txabrt: [11.189427] i2c i2c-0: --I2C TXABRT[3]=I2C_TXABRT_ABRT_XDATA_NOACK [11.195831] JXh62_write [11.198351] client addr = 0x30,buf[0]=0x0e,buf[1]=0x11,ret=-11 [11.204358] Failed to deinit the pipeline of (null).
我读取到的DS90UB914、DS90UB913和Camera Sensor(JXh62)的部分寄存器信息如下:
[43.846100] ds90ub914q reg value: [43.851168] sensor_read: addr=0x0 value = 0xc0 [43.856253] sensor_read: addr=0x3 value = 0xe9 [43.861316] sensor_read: addr=0x6 value = 0xb4 [43.866396] sensor_read: addr=0x7 value = 0xb2 [43.871498] sensor_read: addr=0x8 value = 0x60 [43.876582] sensor_read: addr=0x10 value = 0x60 [43.881334] ds90ub913q reg value: [43.885230] sensor_read: addr=0x0 value = 0xb0 [43.890478] sensor_read: addr=0x3 value = 0xc5 [43.895755] sensor_read: addr=0x8 value = 0x0 [43.900821] sensor_read: addr=0x10 value = 0x17 [43.906057] sensor_read: addr=0x6 value = 0xc0 [43.911205] sensor_read: addr=0x7 value = 0x0 [43.915792] jxh62_sinfo reg value: [43.920267] sensor_read: addr=0x0 value = 0x0 [43.925812] sensor_read: addr=0x1 value = 0xff [43.931440] sensor_read: addr=0xa value = 0xa0 [43.937085] sensor_read: addr=0xb value = 0x62 [43.942714] sensor_read: addr=0xc value = 0x40 [43.948444] sensor_read: addr=0xd value = 0x50 [43.954160] sensor_read: addr=0xe value = 0x10 [43.959806] sensor_read: addr=0x12 value = 0x0
请TI专家帮忙解答一下问题:
1、由于采用的是视频SOC官方调试好的驱动,在没有接FPD-LinkIII接口电路时,Camera Sensor的驱动程序能正常读写。我采用FPD-Link III接口时,用同样的Camera Sensor驱动程序,能正常读取到的DS90UB914、DS90UB913和Camera Sensor(JXh62)的寄存器,
为什么在写Camera Sensor时,会报I2C_TXABRT_ABRT_XDATA_NOACK错误?我采用的Pass through模式,需要设置DS90UB914Q的0x03 General configuration1寄存器Auto ACK位为1吗?
2、Pass throught 模式和Pass through ALL模式的主要区别是什么?我能否直接把DS90UB914Q设置为Pass throught ALL模式,让主CPU直接访问Camera Sensor?
非常感谢!
Kailyn Chen:
您好,pass through和pass through all的区别在于,pass through all 的意思通过serial link来进行主控和其他device的通讯,而不是通过寻址local device的方法。 在SNLA222.pdf中有详细介绍pass though和pass though all的配置区别:
www.ti.com/…/snla222.pdf