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

ds90ub934_BCC-I2C_slaveID问题

ds90ub934_i2c_write(0x4C, 0x01);
ds90ub934_i2c_write(0x5C, (0x58<<1));  // 933的Alias, 0x58 是 测量到的933-ID(0xB0)右移1位
ds90ub934_i2c_write(0x5D, (0x10<<1));  // 摄像头的I2C地址(即远程从机): 写0x20, 读0x21, 即7位地址为0x10
ds90ub934_i2c_write(0x65, (0x10<<1)); // 摄像头的alias

读取<远程933寄存器>正确, 认为串行通道没有问题;

此时, 示波器测量<摄像头的I2C引脚>, 发现I2C波形不对(不是常见的I2C波形); 

如果将摄像头0x10地址, 随机改为0x11, 摄像头的I2C引脚波形是正确的, 只是一直提示NACK

为什么0x10地址, I2C波形不对? 哪里出错??

Kailyn Chen:

您好,0x10<<1之后写0X20是对的。
0X10的I2C波形是什么样的? 附上波形看下。
另外,0X20的I2C波形正常吗?别随机改0X11,0X11不是它的从机地址,所以收不到ACK信号。

,

Zhang Qing:

,

Zhang Qing:

Sensor厂家说的地址:0x20 是 示波器上显示的地址, 其7位地址 应该是 0x10
开始我是向 934写入0x20,波形OK, 但收不到 Sensor应答;Sensor厂家说 地址不正确
于是我改成 向 934写入0x10, 但此时 波形有点奇怪!

,

Kailyn Chen:

您好,先确认7bit地址, 厂家说的地址,是否指的是在最高位补零?但实际I2C从机地址需要左移一位,写操作在最低为补零。
比如如果厂家说0X10, 7bit地址为0010000,这样的话I2C写地址为0X20.
但厂家如果说地址为0X20,那么7bit地址有可能是0100000,这样的话,左移一位的话,I2C 从机地址应该为0X40.

,

Zhang Qing:

最后发现: 0x10地址 对应的波形是正常的(与手册上常见的I2C波形有点不同, 也可能是示波器捕捉时机有关), 只是获得的寄存器值不对;
为此修改933/934的I2C-High/Low参数, 即可获得正确的寄存器值;

,

Kailyn Chen:

非常感谢您的反馈。

赞(0)
未经允许不得转载:TI中文支持网 » ds90ub934_BCC-I2C_slaveID问题
分享到: 更多 (0)