主题中讨论的其他器件:TMP275
你(们)好
我正在尝试与28388 CM 上的 TMP275进行 I2C 通信。
向 TMP275写入3个字节、但只写入2个字节 SDA。
配置和源代码如下所示。
问题出在哪里?
源代码
// I2C 初始化
I2C_enableMaster (I2C0_BASE);
I2C_initMaster (I2C0_BASE、I2C_CLK_FREQ、TRUE);//快速模式= 400kHz
I2C_enableSlave (I2C0_BASE);
I2C_setSlaveAddress (I2C0_BASE、TMP_Address、I2C_MASTER_WRITE);
I2C_setOwnSlaveAddress (I2C0_BASE、I2C_SLAVE_ADDR_PRIMARY、TMP_Address);
I2C_configureRxFIFO (I2C0_BASE、I2C_FIFO_CFG_RX_MASTER、I2C_FIFO_CFG_RX_TRIG_1);
I2C_configureTxFIFO (I2C0_BASE、I2C_FIFO_CFG_TX_MASTER、I2C_FIFO_CFG_TX_TRIG_1);
I2C_enableFIFO (I2C0_BASE、I2C_SLAVE_RX_FIFO_ENABLE);
I2C_enableFIFO (I2C0_BASE、I2C_SLAVE_TX_FIFO_ENABLE);
I2C_enableMaster (I2C0_BASE);
// Set_Tmp275 3字节写入
I2C_setMasterConfig (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_START);
tmp_Timeout = 10*1000;
while (I2C_isMasterBusy (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x01;返回;}
}
I2C_putMasterData (I2C0_BASE、0x01);
tmp_Timeout = 10*1000;
while (I2C_isMasterBusy (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{TMP_ERR=0x02;return;}
}
tmp_Timeout = 10*1000;
while (I2C_getMasterErr (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x03;返回;}
}
I2C_setMasterConfig (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_CONT);
tmp_Timeout = 10*1000;
while (I2C_isMasterBusy (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x04;返回;}
}
tmp_Timeout = 10*1000;
while (I2C_getMasterErr (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x05;返回;}
}
I2C_putMasterData (I2C0_BASE、0x60);
tmp_Timeout = 10*1000;
while (I2C_isMasterBusy (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x06;返回;}
}
tmp_Timeout = 10*1000;
while (I2C_getMasterErr (I2C0_BASE))
{
if ((TMP_Timeout --)=0)
{ TMP_ERR=0x07;返回;}
}
I2C_setMasterConfig (I2C0_BASE、I2C_MASTER_CMD_BURST_SEND_STOP);
谢谢