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.

[参考译文] AM2431:AM2431 I2C 从器件配置

Guru**** 2963630 points

Other Parts Discussed in Thread: LP-AM243, AM2434

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration

器件型号:AM2431
主题中讨论的其他器件:LP-AM243、 AM2434

我们的团队正在探索如何使用 AM4231代替我们当前的 MCU TM4C129。

我正在努力启动 I2C 目标模式。 我按如下方式配置了 I2C 目标、但它无法向控制器发送 ACK。  我是否可以参考一个示例来正确设置从模式? I2C0和 I2C1之间的配置是否不同? 由于 I2C0是开漏、I2C1是仿真开漏。  

    //todo check out of bound condition
    i2cHandle = gI2cHandle[i2c_num];

    /* Set default transaction parameters */
    I2C_Transaction_init(&i2cTransaction);

    //todo check I2C timeout accuracy in ms
    i2cTransaction.timeout = 1000;

    i2cTransaction.readBuf      = i2c_slave_rx_buf;
    i2cTransaction.readCount    = size;
    i2cTransaction.masterMode   = false;


    status = I2C_transfer(i2cHandle, &i2cTransaction);

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

    您好、Hong、

    [引用 userid="542779" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration "]是否有一个示例可供我参考以正确设置从模式?[/quot]

    我在 SDK 中看不到 I2S 从模式的示例。 除了 ACK 之外、I2C 在响应来自外部器件的事务时的行为是怎样的?

    [引用 userid="542779" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration ]I2C0和 I2C1之间的配置是否不同? 由于 I2C0是开漏、I2C1是仿真开漏。  [/报价]

    我正在与硬件应用团队的一位同事交流、以帮助解决 I2C 开漏问题。

    此致、
    弗兰克

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

    更具体地说、我在 LP-AM243评估板上将 I2C0_SCL 连接到 I2C1_SCL、将 I2C0_SDA 连接到 I2C1_SDA、以实施外部环回测试、测试主模式和从模式功能。   

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

    您好、Hong、

    关于开漏与仿真开漏的实现、只要总线上的高电压电平与引脚的数字高电压相同(1.8V 或3.3V、与设计上的实现相同)、就没有功能差异。

    谢谢、
    Mike

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

    您好、Hong、

    您能否分享您的示例代码以便我了解一下?

    此致、
    弗兰克

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

     //todo check out of bound condition
        i2cHandle = gI2cHandle[i2c_num];
    
        /* Set default transaction parameters */
        I2C_Transaction_init(&i2cTransaction);
    
        //todo check I2C timeout accuracy in ms
        i2cTransaction.timeout = 1000;
    
        i2cTransaction.readBuf      = i2c_slave_rx_buf;
        i2cTransaction.readCount    = size;
        i2cTransaction.masterMode   = false;
    
    
        status = I2C_transfer(i2cHandle, &i2cTransaction);

    示例代码如上所示。 我使用 AM243启动板上的设置从 I2C0和 I2C1回路。 由于 I2C 支持多从模式、我希望线路上的多个器件都能正常工作。 但是、外部回路似乎不像我预期的那样工作。  

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

    洪

    不、我的意思是您能否共享整个应用程序、而不仅仅是代码片段?

    谢谢、
    弗兰克

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

    您好 Frank、  

    我在 I2C 从设备端应用程序上取得了一些进展。 使用外部 I2C 作为主器件、连接到  LP-AM243板上的 I2C1、I2C 从器件能够接收数据。 但是、如果我在 LP-AM243x 电路板上执行从 I2C1到 I2C0的外部回送、则从 I2C0发送数据、而作为从器件的 I2C1仍然无法接收数据。  我的问题更多是关于设置问题:考虑到 I2C0上还有两个附加器件和一个 LP 滤波器存在、是否可以像在电路板上那样从 I2C0到 I2C1进行外部回送?   

    谢谢、

    洪  

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

    您好、Hong、

    [引用 userid="542779" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration/4396589 #4396589"]假设 I2C0[/quot]上还有两个附加器件

    您是指 U17 AT24CM01和 U35 TPIC2810D 吗?

    [引用 userid="542779" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration/4396589 #4396589"]和存在 LP 过滤器[/quot]

    您是指 I2C 引脚的 LPF 吗?

    从软件的角度来看、我不知道有任何限制或特殊的设置要求。 我将让 Mike 评论任何硬件限制。

    您能否共享环回示例代码(整个 CCS 项目)以便我可以帮助调试此问题?

    此致、
    弗兰克

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

    您好、Hong、

    I2C 旨在用作多器件总线协议。  只要总线上的所有从器件具有不同的地址、您就可以在总线上拥有所需的从器件数量。  另外两个器件(EEPROM 和 LED 驱动器)的地址为0x50和0x60。  只要您将环回测试的从端配置为具有与0x50和0x60不同的地址、并将主器件设置为与该地址通信、您就可以正常工作。

    关于 LPF、这只是为了清除进入 AM243上 I2C0的信号。  滤波器的存在确实意味着当 AM2434上的 I2C0在事务期间将 SCL 或 SDA 驱动为低电平时、滤波器的另一侧(以及在环回配置中连接到 I2C1的元件)将看到~0.22*VSYS_3V3为"低电平"。  虽然高于正常值,但仍低于数据表中 I2C 输入的0.3 VDD 的低最大电压,在这种情况下,VDD 对应于 LP 上的 VSYS_3V3。

    除了为 Frank 提供示例项目外、如果您能够在环回测试的 I2C 事务期间获取 SCL 和 SDA 线路的示波器图像、并在连接探针的原理图上进行标记、这也会很有帮助。

    谢谢、
    Mike

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



    根据我可以看出、信号在进入适当的低电压时存在问题。  

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

    您好、Hong、

    [引用 userid="542779" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167614/am2431-am2431-i2c-slave-configuration/4400536 #4400536"]从我可以看出、信号在达到适当的低电压时存在问题。  [/报价]

    如果看一下我的最后一个答复,我提到 LPF 会阻止电压一直上升到0V,但只要它低于0.3*VDD,它仍然会被读作低电平。  因此、当 I2C0将线路驱动为低电平时、预计线路不会一直变为0V。  如果您担心这一点、则可以用短路或低得多的电阻(即47欧姆)替换 LPFS 中的两个串联电阻(R93和 R97)、当 I2C0驱动线路时、您将得到更接近"0V"的低电平。

    从第一个波形看、I2C1似乎向地址0x11发出写入命令、该地址为 ACK。  第二个示波器屏幕截图显示了写入地址0x1C 的情况、即 NACK。

    第一个示波器屏幕截图显示了 I2C 事务成功。  要进一步调试您的系统、您需要向 Frank 提供 CCS 项目、以便他查看完整的 I2C 配置。

    谢谢、
    Mike

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

    Mike 和 Frank、您好!

    将两个串联电阻 R93和 R97短接后、I2C1和 I2C0之间的外部环回测试效果良好。 器件能够正确接收数据。  

    非常感谢您的帮助、

    洪