打印
[其他产品]

有没有一种方法让DMA信道连续触发直到小区传输完成

[复制链接]
1224|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
probedog|  楼主 | 2024-8-11 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我有一个SSD1963连接到我的PIC32MX570F512L PMP端口。我有一个用例,用于使用DMA将单个16位值从存储器重复地写入PMDOUT寄存器。用例是这样的,每当需要将一种颜色写入大量像素(例如,背景填充)时,我希望能够将DMA设置为从单个内存位置重复写入PMDOUT寄存器。直到CELL_COMPLETE DMA中断被触发,DMA一直写入PMDOUT寄存器。目前,我的源大小和目标大小都是2(16位颜色值和PMDOUT寄存器),并且在1次传输(块传输)之后,信道自动复位,重新绑定,准备好f或者启动另一个传输的另一个触发器,但是为了发生以下传输,应该设置CFORCE,或者应该触发其他中断。我知道我可以通过检查块传输完成事件来处理这个问题,然后再次设置CFORCE,但是这类似于在主循环中写入PMP端口,我想避免这种情况,因为它会消耗大量的CPU时间。在两个信道之间某种自触发环路来实现这一点。有没有一种方法让DMA信道连续触发直到小区传输完成?

使用特权

评论回复
沙发
caigang13| | 2024-8-13 08:06 | 只看该作者
DMA是传输完成一次就产生中断,数据大小是可以配置的。

使用特权

评论回复
板凳
kaif2n9j| | 2024-10-14 11:44 | 只看该作者
在你的用例中,你希望使用DMA将单个16位值从内存重复写入PMDOUT寄存器,直到CELL_COMPLETE中断被触发。为了实现这一点,你可以考虑使用DMA的自触发机制

使用特权

评论回复
地板
t1ngus4| | 2024-10-14 12:51 | 只看该作者
设置源地址为一个固定的内存位置,存储16位颜色值。设置目标地址为PMDOUT寄存器。设置源大小和目标大小为2(16位)。配置DMA通道为块传输模式,并在每次传输完成后自动复位

使用特权

评论回复
5
w2nme1ai7| | 2024-10-14 14:00 | 只看该作者
使用DMA的自触发机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。

使用特权

评论回复
6
p0gon9y| | 2024-10-14 15:17 | 只看该作者
设置DMA通道的触发条件为“块传输完成”事件。

使用特权

评论回复
7
b5z1giu| | 2024-10-14 16:22 | 只看该作者
在CELL_COMPLETE中断服务程序中,检查是否需要继续传输。如果需要,重新配置DMA通道并触发下一次传输

使用特权

评论回复
8
y1n9an| | 2024-10-14 18:33 | 只看该作者
使用DMA的循环缓冲区,配置DMA通道为循环缓冲区模式,使得每次传输完成后,DMA通道自动重新绑定并触发下一次传输

使用特权

评论回复
9
liu96jp| | 2024-10-15 09:00 | 只看该作者
在CELL_COMPLETE中断服务程序中,检查是否需要继续传输。如果需要,重新配置DMA通道并触发下一次传输。

使用特权

评论回复
10
lix1yr| | 2024-10-15 10:00 | 只看该作者
使用DMA的链式传输,DMA通道为链式传输模式,使得每次传输完成后,DMA通道自动重新绑定并触发下一次传输

使用特权

评论回复
11
cen9ce| | 2024-10-15 13:05 | 只看该作者
使用DMA的链式传输机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。设置DMA通道的触发条件为“块传输完成”事件

使用特权

评论回复
12
ex7s4| | 2024-10-15 19:25 | 只看该作者
使用DMA的循环缓冲区机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。设置DMA通道的触发条件为“块传输完成”事件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

385

主题

2087

帖子

3

粉丝