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.

[参考译文] F28377D-SEP:在处理器卡中未检测到 I2C 从器件地址

Guru**** 2782635 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1612462/f28377d-sep-i2c-slave-address-not-detect-in-the-processor-card

器件型号: F28377D-SEP
主题: C2000WARE 中讨论的其他器件

F28379D 控制器 I²C 两个 μ s 接口:I2C0 和 I2C1。
在 I2C0 上、连接了 EEPROM 和 RTC、该接口工作正常。

现在、我尝试通过背板将 I2C1 连接到处理器。 我已经将从器件地址配置为 0x4A、但不确定该地址是否正确。 在这里、F28379D 被配置为处理器卡的 I²C Ω 从器件。

但是、在处理器卡上未检测到 I²C 从器件地址。 我想确认将 F28379D 配置为 0 Ω 从器件是否 I²C 此设置。
我的从属地址是否正确?
请检查我的以下代码。


#define I2C1_SLAVE_ADDR 0x31 //选择任何空闲的 7 位地址


void i2c1_slave_init (void)

  //配置前禁用模块
  I2C_disableModule (I2CB_BASE);

  //初始化时钟(与从设备无关的速度,但需要)
  I2C_initController (I2CB_BASE、
            DEVICE_SYSCLK_FREQ、
            100000、
            I2C_DUTYCYCLE_50);

  // 配置为从属设备
  I2C_setConfig (I2CB_BASE、I2C_SLAVE_RECEIVE_MODE);

  // 设置自己的从地址(这是主器件扫描的地址)
  I2C_setOwnAddress (I2CB_BASE、I2C1_SLAVE_ADDR);

  // 7 位寻址
  I2C_setAddressMode (I2CB_BASE、I2C_ADDR_MODE_7BITS);

  //标准 8 位数据
  I2C_setBitCount (I2CB_BASE、I2C_BITCOUNT_8);

  //禁用环回
  I2C_disableLoopback (I2CB_base);

  //由于没有数据传输、因此不需要 FIFO
  I2C_disableFIFO (I2CB_BASE);

  //清除待定状态
  I2C_clearStatus (I2CB_BASE、
          I2C_STS_NO_ACK |
          I2C_STS_ARB_LOST |
          I2C_STS_STOP_CONDITION);

  //启用模块
  I2C_enableModule (I2CB_BASE);
}

 

在 main 中调用以下函数

i2c1_slave_init();

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

    尊敬的 Saravanan:

    现在、我正在尝试通过背板将 I2C1 连接到处理器。 我已经将从器件地址配置为 0x4A、但不确定该地址是否正确。 I²C、F28379D 配置为处理器卡的 μ A 从器件。
    #define I2C1_SLAVE_ADDR 0x31 //选择任意空闲的 7 位地址

     您在这里提到地址为 0x4A、但您的代码将其配置为 0x31。 配置看起来正常、但在目标模式下不需要以下内容:

    //初始化时钟(速度与从设备无关,但需要)
      I2C_initController (I2CB_BASE、
                DEVICE_SYSCLK_FREQ、
                100000、
                I2C_DUTYCYCLE_50);

    请仅使用 I2C_setConfig()。

    此外、为什么未使用 I2C_INT_ADDR_TARGET 中断? 请参阅 C2000WARE 示例、了解如何配置控制器与目标 I2C 模式。

    此致、

    Aishwarya