Other Parts Discussed in Thread: LP-MSPM33C321A
器件型号: MSPM33C321A
您好的团队、
我正在使用 LP-MSPM33C321A、能够使计时器正常工作、但在向 I2C 传感器发送数据时出现问题。 以下代码应向传感器发送一个字节寄存器地址和一个字节的数据、但始终会在 Tx 缓冲区为空的情况下一直等待:DL_I2CC_isTXFIFOEmpty (I2C_INST);
这可能是什么导致它坚持在这里? 使用前是否需要配置 FIFO 大小/阈值? 我正在使用的示例具有 64 字节的 FIFO 大小(可能对于 2 字节的数据传输来说太大?)
I2C 总线通过 10K 电阻器拉至 3.3V、并且我可以测量总线上的电压是正确的。
void Sensor_write_reg(uint8_t reg, uint8_t data)
{
transmitData[0] = reg; // Reg address
transmitData[1] = data; // Data to the Reg
/*
* Fill FIFO with data.
*/
Size = DL_I2CC_fillTXFIFO(I2C_INST, &transmitData[0], CommandSize);
// Start transfer
DL_I2CC_startTransfer(I2C_INST,I2C_TARGET_ADDRESS,DL_I2CC_DIRECTION_TX, CommandSize);
// Wait for TX FIFO ready but the code waits here forever..........
while (DL_I2CC_isTXFIFOEmpty(I2C_INST) == 0 && DL_I2CC_getStatus(I2C_INST) != DL_I2CC_STATUS_ERROR) {
};
/* Wait for I2C to be Idle */
while (!(DL_I2CC_getStatus(I2C_INST) & DL_I2CC_STATUS_IDLE))
;
/* Add delay between transfers */
delay_cycles(1000);
}
此致、
Luke