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.

[参考译文] RM57L843:具有重复起始功能的 I2C 通信。

Guru**** 2551110 points
Other Parts Discussed in Thread: RM57L843, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/996697/rm57l843-i2c-communication-with-repeated-start

器件型号:RM57L843
主题中讨论的其他器件: HALCOGEN

尊敬的 TI:

我在 Hercules RM57L843微控制器上的 I2C 通信有问题。  

我尝试与 ST 加速计 LIS2DW12通信。

使用了以下通信方法。

从器件的地址如下:

例如、要从传感器读取寄存器、SAD[0]= 0、我需要以下方法:

发送开始启动-从主器件到从器件

发送 SAD+W (30h)-从主器件到从器件

接收 SAK -从从从器件到主器件

-send sub (我要读取的寄存器地址)-从主器件到从器件

接收 SAK -从从从器件到主器件

发送重新开始-从主器件到从器件

-send SAD+R (31h)-从主器件到从器件

接收 SAK -从从从器件到主器件

接收我要读取的寄存器中的数据-从从从器件读取到主器件读取

发送 NMAK (无主器件确认)-从主器件到从器件(猜我不需要发送任何内容、因为无需主器件确认)

发送停止-从主器件到从器件

MEMS 数字输出运动传感器:高性能超低功耗3轴"飞法"加速计(farnell.com) 这是传感器的文档、6.1.1 I2C 操作部分是我找到这些信息的位置。

我尝试使用 HalCoGen 生成的 I2C 驱动程序来实现这个通信、但是我无法使它正常工作。

我尝试了该主题中的示例代码(HALCOGEN:具有重复启动条件的 I2C 示例、使用 HALCoGen API - Hercules 安全微控制器论坛- Hercules 安全微控制器- TI E2E 支持论坛)阅读内容看起来正常、但我遇到了问题。  写操作完全不起作用。

您能否为此传感器提供任何重复启动条件 I2C 通信的示例代码?

谢谢你。

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

    示例  I2C_Write_M()是在 RTC 中开发的。 它不使用重复模式。 您可以修改 LIS2DW12的代码。  

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

    如何在 I2C_Write_M 中使用重复模式? 我应该在 halcogen 或代码中进行一些修改? (我在 halcogen 中检查了重复模式、但我找不到有关如何使用它的任何示例。

    正如我写过的关于与 LIS2DW12通信的内容、重复模式可以正常工作吗?  

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

    重复起始模式只用于主器件从  LIS2DW12中读取数据。 您不需要启用重复启动模式、而是手动启动以进行读取操作。  

    如果启用了重复启动模式、I2C  主器件会在每个字节的末尾驱动另一个启动条件。 但是、在读取第一个字节之前、LIS2DW12只需要一个 SR。

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

    谢谢您、看来现在通信工作正常。 最后一点是、在调试模式下通信正常、但当代码正常运行时、通信停止。 我无法真正理解为什么。

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

    在调试模式下、使用断点来查找卡住的指令。 I2C 从设备可能有一些特殊要求:例如、在每个 I2C 传输之间添加延迟。