Nanger 发表于 2024-3-22 12:10:32

DMA的存储数据的那些地址能不能搞成环形队列的样式,当里面数据没有发完的话,当再次写入数据时直接在队尾往里写数据,这样就不会产生覆盖原数据的危险了是吧?
不知道这样可行否?

芯LYS 发表于 2024-3-22 13:10:54

Nanger 发表于 2024-3-22 12:08
陈老师 STC8H8K64U 的范例程序有么?我这边想测试一下然后移植

范例供参考:

乘风飞扬 发表于 2024-3-22 15:16:30

这种需求可以考虑使用双缓冲区交替使用的方式,演示视频:
https://www.stcaimcu.com/plugin.php?id=x7ree_v:x7ree_v&code_7ree=1&id_7ree=46

Nanger 发表于 2024-3-25 09:08:54

我在 xdata定义了256个字节的空间,但是我只写入 100个数据后就启动发送,DMA自动外发前 100个字节的数据,后面的156个字节没有数据的话也是一直往外发是么?是要发 156个 00么?

乘风飞扬 发表于 2024-3-25 13:37:16

Nanger 发表于 2024-3-25 09:08
我在 xdata定义了256个字节的空间,但是我只写入 100个数据后就启动发送,DMA自动外发前 100个字节的数据, ...

如果只要发送100字节数据的话,在启动DMA发送前,将DMA发送的字节数(DMA_UR1T_AMT)设置为99即可(n+1)。

Nanger 发表于 2024-3-26 10:33:03

乘风飞扬 发表于 2024-3-25 13:37
如果只要发送100字节数据的话,在启动DMA发送前,将DMA发送的字节数(DMA_UR1T_AMT)设置为99即可(n+1) ...

收到,理论上一次发送就是全部发出去是吧,为 00的空间也要全部发送出去是吧

乘风飞扬 发表于 2024-3-26 11:27:17

Nanger 发表于 2024-3-26 10:33
收到,理论上一次发送就是全部发出去是吧,为 00的空间也要全部发送出去是吧 ...

从指定的缓冲区起始地址开始,收发设置的字节数,不管是什么内容。
页: 1 [2]
查看完整版本: 视频讲解: DMA 原理及应用,DMA支持的4组串口,SPI, ADC等