[其他产品] 有没有一种方法让DMA信道连续触发直到小区传输完成

[复制链接]
1875|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通道为块传输模式,并在每次传输完成后自动复位
w2nme1ai7 发表于 2024-10-14 14:00 | 显示全部楼层
使用DMA的自触发机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。
p0gon9y 发表于 2024-10-14 15:17 | 显示全部楼层
设置DMA通道的触发条件为“块传输完成”事件。
b5z1giu 发表于 2024-10-14 16:22 | 显示全部楼层
在CELL_COMPLETE中断服务程序中,检查是否需要继续传输。如果需要,重新配置DMA通道并触发下一次传输
y1n9an 发表于 2024-10-14 18:33 | 显示全部楼层
使用DMA的循环缓冲区,配置DMA通道为循环缓冲区模式,使得每次传输完成后,DMA通道自动重新绑定并触发下一次传输
liu96jp 发表于 2024-10-15 09:00 | 显示全部楼层
在CELL_COMPLETE中断服务程序中,检查是否需要继续传输。如果需要,重新配置DMA通道并触发下一次传输。
lix1yr 发表于 2024-10-15 10:00 | 显示全部楼层
使用DMA的链式传输,DMA通道为链式传输模式,使得每次传输完成后,DMA通道自动重新绑定并触发下一次传输
cen9ce 发表于 2024-10-15 13:05 | 显示全部楼层
使用DMA的链式传输机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。设置DMA通道的触发条件为“块传输完成”事件
ex7s4 发表于 2024-10-15 19:25 | 显示全部楼层
使用DMA的循环缓冲区机制,使得每次传输完成后,DMA通道自动重新触发下一次传输。设置DMA通道的触发条件为“块传输完成”事件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

493

主题

3361

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部