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.
尊敬的所有人:
我当前正在尝试配置 MSPM0G3507、工作方式如下:
-使用 DMA 发送/接收的 UART (UART0)。
- PWM (TIMA1)处于中心对齐模式、并在每个 PWM 周期的中间触发 ADC0和 ADC1。
- ADC (ADC0/1)、用于转换多个通道(启用 FIFO 的序列模式)、并使用 DMA 将数据传输到全局变量 gAdc0Values 和 gAdc1Values 中。
- DMA 被配置为"重复块"、并且在 ADC0/1发出 DMADONE 中断时重新使能
我的测试应用程序当前执行以下任务:
1)使用自动生成的代码 fom sysconfig 来初始化外设(SYSCFG_DL_init())。
2) 2)为 ADC0和 ADC1配置 DMA
3) 3)为 UART0配置 DMA
4.a)在无限循环中发送"Hello\r\n"
4.b)发出 DMADONE 中断时、在相应中断服务例程中重新启用 ADC0、ADC1和 DMA。
问题1)"gAdc0Values "(resp."gAdc1Values" )中的 AD 值在主循环中不可用。
当我在 ADC0或 ADC1的 ISR 中设置断点时、数组 gAdc0Values/"gAdc1Values 包含有效的 AD 值。 但是、如果我在主线中设置断点、则整个数组都设置为0。 因此、数组似乎在某个时候过载、但我不知道原因。
问题2) ADC+DMA 似乎会在一段时间后阻止 UART/DMA。
主循环在无限循环中发送"Hello\r\n"、因此等待传输完成、然后再启动另一个循环。 发送945字节后、函数残桩等待 DMA 通道完成、但这永远不会发生。 该问题可以重现、并且始终在发送相同数量的字节数后发生。 禁用 ADC 后、不会出现此问题、因此它在某种程度上可能是相关的。
感谢任何帮助。
此致、
Thomas
您好、Thomas
感谢您的提问!
示例代码上不发生问题、您可以选择禁用器件。 请尝试比较驱动程序库示例代码和 SysConfig 中的代码。
尊敬的 Li:
感谢您的快速响应。 我试图打开演示应用程序的配置(*.syscfg),以便将它们与我自己的应用程序进行比较。 很遗憾、所有配置都无法打开、但出现以下错误、即使使用兼容模式也无法正常运行。 :
我之前使用过以下 SDK + SysConfig 中的示例、但都没有成功:
- mspm0_SDK_0_56_00_01_eng + SysConfig-1.15.0_2729
- mspm0_SDK_1_00_00_04 + SysConfig_1.15.0_2826
您知道一个有效的组合吗?
此致、
Thomas
请参考以下内容:e2e.ti.com/.../faq-mspm0-sdk-important-note-for-early-mspm0-customers