i2c连续写入卡死,
void I2C_WriteReg(uint8_t DevAddr,uint8_t reg_addr, uint8_t *reg_data, uint16_t count)
{
uint8_t I2Ctxbuff[50] = {0x00};
I2Ctxbuff[0] = reg_addr;
uint8_t i, j = 1;
for (i = 0; i < count; i++) {
I2Ctxbuff[j] = reg_data[i];
j++;
}
DL_I2C_fillControllerTXFIFO(I2C_INST, &I2Ctxbuff[0], count+1);
/* Wait for I2C to be Idle */
while (!(DL_I2C_getControllerStatus(I2C_INST) & DL_I2C_CONTROLLER_STATUS_IDLE));
DL_I2C_startControllerTransfer(I2C_INST, DevAddr,DL_I2C_CONTROLLER_DIRECTION_TX, count+1);
while (DL_I2C_getControllerStatus(I2C_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);
/* Wait for I2C to be Idle */
while (!(DL_I2C_getControllerStatus(I2C_INST) & DL_I2C_CONTROLLER_STATUS_IDLE));
DL_I2C_flushControllerTXFIFO(I2C_INST);
}
卡死在while (DL_I2C_getControllerStatus(I2C_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);函数,i2c写入不正常
检查客户使用的API时
此API应返回未填充的剩余数据,请确保数据长度小于8,或者应使用以下示例:“i2c_controller_rw_multibate_fifo_interrupts”来处理逻辑。