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.

[参考译文] LP-MSPM0G3507:使用 DMA 的 I2C 不触发中断

Guru**** 2030840 points
Other Parts Discussed in Thread: MSPM0G3507, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1341394/lp-mspm0g3507-i2c-using-dma-not-triggering-interrupt

器件型号:LP-MSPM0G3507
主题中讨论的其他器件:MSPM0G3507SysConfig

大家好、是极客!

我使用的是 Launchpad  MSPM0G3507。

我已实现不带 DMA 的 I2C、用于采用8位 EEPROM 器件的写入数据接口。 就表示工作正常。

现在、我尝试了使用 DMA 实现 I2C、不是将数据写入 i2c 从器件。 问题可能在于我认为的配置。

从数据表来看、通读 DMA 引擎后并不清楚。

我想与大家分享一些将 DMA 用于 I2C 的示例工程。

提前感谢您。

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

    尊敬的 Ddnr:

    我们目前没有使用 DMA 作为 I2C 的示例项目。

    您是否使用过 SysConfig 工具来配置 DMA 传输? 您能否发布配置映像以及用于启动 DMA 的代码?

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

    您好、Obrien:

    感谢您的立即响应。

    我们不使用 SysConfig。 我们使用 vscode 进行开发并从寄存器创建宏。

    是的、我可以共享配置片段。

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

    我的第一条建议是使用 SysConfig 在初始化 DMA 时所执行的相同步骤、即使您选择不在最终工程中使用 SysConfig。 这将保证初始化代码的完整和正确。  

    完成此操作后、您的代码更有可能快速工作、且调试将更容易。 如果您在此过程中遇到问题、敬请告知。

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

    您好!

    下面是使用 DMA 的 I2C (单次传输)的配置。 请告诉我是否按建议这样做。

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

    尊敬的 Ddnr:

    如果不知道您的宏映射到了什么、我就无法告诉您这是否正确。 根据宏名称、好像您遗漏了一些初始化设置。  

    一般过程应为:

    初始化传输模式、目的和源地址增量、目的和源数据宽度、触发和触发类型。

    然后、设置源地址、目标地址和传输大小、并启用通道。

    这些是我们 SDK 中的示例为正确初始化 DMA 系统而执行的步骤。