尊敬的香榭丽舍
有关 LCD DMA、下面是一些需要确认的问题。
LCD DMA 是否独立于 UDMA?
2.如果是、我们如何设置 LCD DMA 优先级?
3.在20.3.2.1.2光栅模式部分中,DMA 引擎 生成中断。 如何排列 LCD DMA 中断的优先级?
如果您有任何建议、请随时告诉我。
非常感谢。
此致、
Janet
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.
尊敬的香榭丽舍
有关 LCD DMA、下面是一些需要确认的问题。
LCD DMA 是否独立于 UDMA?
2.如果是、我们如何设置 LCD DMA 优先级?
3.在20.3.2.1.2光栅模式部分中,DMA 引擎 生成中断。 如何排列 LCD DMA 中断的优先级?
如果您有任何建议、请随时告诉我。
非常感谢。
此致、
Janet
您好!
[引用 user="Janet Shen"]1. LCD DMA 是否与 UDMA 无关? [/报价]
是的、LCD DMA 引擎独立于 UDMA 模块。
µDMA 数据表、DMA 控制器被称为微 DMA (μ DMA)。 μ µDMA 控制器提供了一种从 Cortex-M4F 处理器卸载数据传输任务的方法、从而可以更高效地使用处理器和可用的总线带宽。 μ µDMA 控制器可以在存储器和外设之间执行传输。 它为每个受支持的片上模块提供专用通道、并且可通过编程自动执行外设和存储器之间的传输、因为外设已准备好传输更多数据。
LCD 控制器有其自己的专用高优先级 DMA 引擎、因此它不必从系统中的微 DMA (UDMA)模块窃取周期。 LCD DMA 引擎具有一个小型 FIFO、并且允许根据需要进行周期性中断。
[引用用户="Janet Shen"]2. 如果是、我们如何设置 LCD DMA 优先级? [/报价]
LCD DMA 引擎中断看起来都是高优先级的、但看起来并不是相互优先级。 我认为这是因为这些中断仅与 LCD 模块相关、或者这可能意味着当任何一个中断被置位时、LCD 模块无法正常工作。 我将减少对优先级的关注、而是了解如何处理每个中断所代表的场景。
[引用用户="Janet Shen"]3. 在20.3.2.1.2光栅模式部分中、DMA 引擎 生成中断。 如何排列 LCD DMA 中断的优先级?[/QUERP]
请参阅我对问题2的评论。
此致、
James
Janet、您好!
感谢您分享这些内容。 我看到 LCD_RISSET_FIFOU 设置为1。 根据 TRM、这意味着 LCD DMA 引擎无法跟上 LCD 消耗的数据速率。 该数据速率由 LCDCP 设置决定。 这可能是由于系统内存吞吐量问题或 LCDCP 设置不正确所致。 当发生此错误时、LCD 中断原始状态和置位寄存器(LCDRISSET)中的 FIFOU 位将置位。
我看到 LCD_DMACTL_FIFORDY 设置为0x6 (512个字)、LCD_DMACTL_BURSTSZ 设置为0x4 (突发大小为16)。 这似乎是最大传输量、因此 LCD DMA 可能没有足够的时间在 LCD 数据速率的一个周期内传输所有数据。 尝试调整 LCDCP 设置。
此致、
James
尊敬的 James:
是的、我尝试将 LCDCP 从30000000 (30MHz)更改为6000000 (6MHz)。 但问题仍然存在。
MAP_LCDModeSet (LCD0_BASE、LCD_MODE_RICG|LCD_MODE_AUTO_UFLOW_RESTART、6000000、ui32SysClock);
因此、我仍然认为 LCD DMA 设置有问题。 您对 LCD 和 LCD DMA 引擎的设置有什么建议吗?
请随时告诉我任何想法。
非常感谢。
此致、
Janet
Janet、您好!
感谢您分享这些详细信息。 回顾一下您的初始帖子、我想知道您是否在询问是否更改与 NVIC 相关的中断优先级、而不是不同的 DMA 中断优先级。
数据表(第6.3.3节)和 TRM (第2.2.2节)中讨论了中断优先级。 此外,我在 DriverLib API 指南 中发现,API IntPriorityGet ()和 IntPrioritySet ()可用于读取中断优先级,然后更改该优先级。
此致、
James