MSPM0G3507: 硬件i2c

Part Number: MSPM0G3507

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写入不正常