This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28388D:CM I2C 通信主机发送多个数据

Guru**** 2392665 points
Other Parts Discussed in Thread: TMP275

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1041190/tms320f28388d-cm-i2c-communication-master-transmit-of-multiple-data

器件型号:TMS320F28388D
主题中讨论的其他器件: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);

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的 SCL/SDA 线路被拉低。 看起来 TMP275将总线保持在低电平。 请检查原因?

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已确认网未正确连接到 tmp275。
    之后、它正常工作。
    谢谢你。