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.
您好!
我正在探索 MSP-M0G3607 MCU。 我将 CCS Theia 0.9与 SDK 0.58配合使用。 我需要在串行控制台上转储一组数据。 为此、 我将使用"uart_tx_console_multibyte_fifo_dma"示例。 我在 UART DMA 中断中观察到了问题。 我已配置 UART、如下图所示。
在串行控制台上转储特定量的数据后、我无法获得如下图所示的 DMA 中断。
我在这里缺少什么吗? 请引导我。
谢谢并重新毕业、
Virendra Dalal.
eInfochips
尊敬的 Virendra:
在您从下载的 MySecureSoftware 文件夹中有一个文档、其中包含早期样片和量产样片之间的勘误表和增强功能。 查找"早期样品功能差异文档"
这听起来像是文档中的 UART_05问题。
您是否可以在下面添加以下内容,在 UART 处理程序中设置 gConsoleTxDMATransrecent 标志?
DEBUG_UART_INST->INT_EVENT2.IMASK = UART_INT_EVENT2_IMASK_TXINT_CLR;
过去、我发现这确实必须在解决方法中所述的 DMADONE 中断内完成。 生产器件上不需要此权变措施。
此致、
Brandon Fisher
尊敬的 Brandon:
感谢您的快速响应。
正如您提到的、 我已更新了处理程序、如下图所示。
但是、添加此函数后、会导致 DMA 中断卡在第一个 UART 事务中、如下图所示。
另外、我不知道它是否相关、但在我的应用程序中、我还配置了 ADC、PWM 和 SysTick 中断。 这些中断中的任何一个都可以引起 UART DMA 中的问题吗?
请帮我解决这个问题。
此致、
Virendra Dalal.
eInfochips
尊敬的 Virendra:
还请注释掉对以下内容的调用:DL_UART_disableDMATransmitEvent (DEBUG_UART_INST);
我们正在将变通办法的这一部分有效地移动到中断处理程序、使其快速发生而不被抢占、因此您应该在此处将其注释掉。
另外、我不知道它是否相关、但在我的应用程序中、我还配置了 ADC、PWM 和 SysTick 中断。 这些中断中的任何一个都可以引起 UART DMA 中的问题吗?
[/报价]您是否有可能将 DMA 与这些外设中的任何一个配合使用? 这将是我要找的第一个地方。
此致、
Brandon Fisher
尊敬的 Brandon:
感谢您的快速响应。
我已尝试注释掉"DL_UART_disableDMATransmitEvent (DEBUG_UART_INST);"。 但问题仍然存在。
另外、我不知道它是否相关、但在我的应用程序中、我还配置了 ADC、PWM 和 SysTick 中断。 这些中断中的任何一个都可以引起 UART DMA 中的问题吗?
您是否有可能将 DMA 与这些外设中的任何一个配合使用? 这将是我要找的第一个地方。
[/报价]否、我没有将 DMA 与任何外设结合使用。
我随附了 syscfg 文件中 UART 配置的屏幕截图、以供参考。
此致、
Virendra Dalal.
eInfochips
尊敬的 Virendra:
我在这里看不到任何明显错误的东西。 您是否更改了关于 UART 示例的任何其他内容、例如波特率或时钟设置?
在我的设置中、该示例在该配置下正常运行。
UART 是每次都在一致的地方发生故障、还是看起来是随机的?
此致、
Brandon Fisher
尊敬的 Brandon:
您是否更改了有关 UART 的示例的任何其他内容(如波特率或时钟设置)?
否、我具有 与 UART DMA 示例完全相同的配置。 一个示例项目运行正常、但我的固件应用程序不工作。
UART 是否每次都在一致位置失败或似乎是随机的? [/报价]是的、在同一个地方也是失败的。 固件应用程序基本上会首先 初始化所有外设、然后等待按钮中断。 初始化完成后、我在 UART 上打印了一条欢迎消息、这可以正常工作。 但当我得到按钮中断时、我开始采集 ADC 样本并通过 UART 打印这些样本。 在第一次打印样本时、它始终会卡住。
我还尝试更改 FIFO 电平、如下面的快照所示。
我还尝试了"MSPM0_EarlySamplesFunctionDifferences_v1p0"文档中建议的相同配置。
我是否缺少任何其他 UART 配置? 或者您能建议其他方式吗?
谢谢。此致、
Virendra Dalal.
eInfochips
尊敬的 Virendra:
当您开始采集 ADC 样本时、接下来如何将消息打印到 UART?
我想、可能有一些提示表明了 ADC 是如何触发 UART 的、因为此处出现了故障。
您是否从 ADC 完成 ISR 内部调用 uart_console_write 函数? 这种结构看起来是什么样子的?
此致、
Brandon Fisher
尊敬的 Brandon:
当您开始采集 ADC 样本时、接下来如何将消息打印到 UART?
我想、可能有一些提示表明了 ADC 是如何触发 UART 的、因为此处出现了故障。
您是否从 ADC 完成 ISR 内部调用 uart_console_write 函数? 这种结构看起来是什么样子的?
[/报价]是的、回答正确。 我错误地 在 ADC ISR 中打印了一行。 我现在可以打印所有 ADC 样本、不会出现任何问题。
感谢您的持续支持。
我对 PWM API 确实有一个疑问。 我已经 为两个通道配置了 PWM0、如下图所示:
有没有任何方法可以停止一个 PWM 通道? 我已经尝试将第一个 PWM 通道捕获比较值设置为0、但似乎不起作用。 我需要使用"DL_TimerG_stopCounter"方法来停止整个 PWM 组。
您能建议我用什么方法做这个吗?
谢谢。此致、
Virendra Dalal.eInfochips
尊敬的 Virendra:
是的、回答正确。 我错误地 在 ADC ISR 中打印了一行。 我现在可以打印所有 ADC 样本、不会出现任何问题。
感谢您的持续支持。
[/报价]太好了、很高兴听到 UART 输出现在工作。
[/quote]有没有任何方法可以停止一个 PWM 通道? 我已经尝试将第一个 PWM 通道捕获比较值设置为0、但似乎不起作用。 我需要使用"DL_TimerG_stopCounter"方法来停止整个 PWM 组。
[/报价]您是否希望 PWM 引脚在空闲/断开时变为低电平或高电平?
通过将 CCP 值设置为加载值、您应该能够将占空比设置为0%。
或者、应注意的是、我以前实际上还没有尝试过该方法、您还可以 使用 IOMUX 从相关引脚上断开 TIMx 通道。 在该模式下、可以将其保持为高阻态或以 GPIO 的形式重新连接并以所需的任何方式驱动。
此致、
Brandon Fisher
尊敬的 Brandon:
但我确实设法停止了单个 PWM 通道。 我可以单独正确地运行两个 PWM 通道。 问题是、我已将最大 CCP 值设置为16000、这基本上是0%占空比。 为了使它正常工作、我需要将此值设置为15999。
感谢您的全力支持。
谢谢。此致、
Virendra Dalal.
eInfochips