Ti 工程师,
您们好,
我的开发环境是这样的, sensor+913+964+MCU,
MCU可以通过964、913配置sensor,但是只要给sensor使能(sensor有个寄存器配置power on)之后,MCU就不能通过I2C配置913和sensor了,
报NACK错误,像是感觉913工作不正常了。 如果我把sensor连接到913的 data lines,PCLK,HSYNC,VSYNC断开,无论怎么配sensor(包括给sensor使能)
都不会报错。请问这是什么原因呢
谢谢
Kailyn Chen:
确认两个问题;
Q:sensor使能(sensor有个寄存器配置power on)之后,MCU就不能通过I2C配置913和sensor了,报NACK。像是感觉913工作不正常了。
A:这句的意思是说,MCU无法通过I2C和913通讯了,您的意思是因为将sensor使能导致的。sensor disable之后,913和MCU I2C时序正常?
Q:如果我把sensor连接到913的 data lines,PCLK,HSYNC,VSYNC断开,无论怎么配sensor(包括给sensor使能)都不会报错。请问这是什么原因呢
A: sensor和913断开了,这里的不会报错指的还是913吗?
能否把I2C的几个寄存器配置发来看下。
yan fang:
回复 Kailyn Chen:
hi Kailyn,
谢谢你的回复,
A1: sensor使能之后,再对913 和 sensor 进行I2C读写都不成功,所以也无法再disable sensor了,不过这个情况下我通过gpio引脚复位sensor之后,913和sensor
又可以正常读写了 , 这应该相当于sensor disable后,通讯恢复正常
A2: 指913 和 sensor 都能正常通讯,(sensor i2 还连着 913, 只是pclk,hsync和数据线断开)
因为MCU的速率是100kbits,所以都是采用默认的配置
ds90ub964_read_reg(client,0x5b,&i2c_913_addr); printk("913 i2c addr = 0x%x\n",i2c_913_addr); ds90ub964_write_reg(client,0x4c,0x01); //select RX0 for RW ds90ub964_write_reg(client,0x58,0x58); ds90ub964_write_reg(client,0x5c,0xB2); // 913 addr ds90ub964_write_reg(client,0x4c,0x01); //select RX0 for RW ds90ub964_write_reg(client,0x58,0x58); ds90ub964_write_reg(client,0x5c,0xB2); // serial ID ds90ub964_write_reg(client,0x5d,0x78); //slave id addr ds90ub964_write_reg(client,0x65,0x78); //slave alias addr
//B2 913 i2c addr
ds90ub913_write_reg(client,0xB2>>1,0×11,0x82); //SCL high time ds90ub913_write_reg(client,0xB2>>1,0×12,0x82); //SCL low time
RENPENG CAI:
回复 yan fang:
你好,能把ds90ub964_write_reg 和ds90ub913_write_reg函数定义发下参考一下吗,非常谢谢!