我们相同的硬件和相同的软件以前用没问题,但是现在会卡在IIC的写byte上。
当前的情况是可以读到MPU6050的寄存器数据,但是无法写入数据。
extern uint8 IICreadBytes(uint8 dev, uint8 reg, uint8 length, uint8 *data) {uint8 ret = 0;uint8 i = 0;volatile static uint8 cnt = 0;cnt = 0;USCI_B_I2C_setSlaveAddress(USCI_B0_BASE, dev);if(USCI_B_I2C_masterSendMultiByteStartWithTimeout(USCI_B0_BASE, reg, IIC_TIMEOUT)){// Can't lack 会卡在这个地方while(!USCI_B_I2C_getInterruptStatus(USCI_B0_BASE, USCI_B_I2C_TRANSMIT_INTERRUPT));// Can't clear transmit interrupt here, will cause error!!!USCI_B_I2C_masterReceiveMultiByteStart(USCI_B0_BASE);for(i=0; i<length-1; i++){cnt++;while(!USCI_B_I2C_getInterruptStatus(USCI_B0_BASE, USCI_B_I2C_RECEIVE_INTERRUPT));data[i] = USCI_B_I2C_masterReceiveMultiByteNext(USCI_B0_BASE);}while(!USCI_B_I2C_getInterruptStatus(USCI_B0_BASE, USCI_B_I2C_RECEIVE_INTERRUPT));cnt++;ret = USCI_B_I2C_masterReceiveMultiByteFinishWithTimeout(USCI_B0_BASE, &data[i], IIC_TIMEOUT);}return ret; }
可以读到器件的WHO_AM_I器件地址,但是无法对其他寄存器写入。
user4790217:
求TI一波暖心援助
Susan Yang:
“相同的硬件和相同的软件以前用没问题” 现在使用的软硬件都和之前是一样的?
您可以看一下 github.com/…/F5539_MPU6050
Butterfly:
I2C波形看过吗?MPU6050的应答看过吗?
灰小子:
建议观察一下iic的时序。这种问题一般都是时序问题