TI你好,我现在使用drv10983控制无刷电机,但是现在I2C写进去的数据再读出来异常。比如:
Drv10983_WriteOneByte(0x03, 0x40); //// Drv10983_WriteOneByte //// I2C_Write
Drv10983_WriteOneByte(0x20, 0x39);
datatemp = Drv10983_ReadOneByte(0x20);
printf("reg20:%x \r\n", datatemp);
先对0x20寄存器写0x39,接着读0x20寄存器的值是0x4A,我对照spec发现这个0x4A是默认值,也就是0x39并没有写进0x20寄存器。这个是什么原因?
我对0x20~0x2B进行读取Drv10983_ReadOneByte(reg),读取到的值如下:
reg:20 = 0x4a
reg:21 = 0x4e
reg:22 = 0x2a
reg:23 = 0x0
reg:24 = 0x98
reg:25 = 0xe4
reg:26 = 0x7a
reg:27 = 0xfc
reg:28 = 0x69
reg:29 = 0xb7
reg:2a = 0xad
reg:2b = 0xc
对比spec,只有0x27的寄存器和0x29寄存器默认值不同,0x27寄存器默认值是0xF4, 0x29寄存器默认值是0xB9,其他读取都是正确的。难道是我的I2C接口驱动有问题吗?但为啥读的数据多数都是OK的,写后再读不行?
请帮忙尽快回复我,在线等,急,谢谢