[APM32E0] DMA的NDATAT传输数值怎么理解?

[复制链接]
1135|38
janewood 发表于 2026-3-3 19:41 | 显示全部楼层
NDTR (Number of Data to Transfer) 寄存器中的数值代表“传输次数”,而不是总字节数。
deliahouse887 发表于 2026-3-3 20:30 | 显示全部楼层
在 DMA 传输过程中,读取 NDTR 寄存器可以得到剩余传输次数。
ccook11 发表于 2026-3-3 21:12 | 显示全部楼层
超过需分多次传输或用循环模式。              
olivem55arlowe 发表于 2026-3-4 21:37 | 显示全部楼层
在DMA传输中,NDTR寄存器配置的值是“传输的次数”,而非“字节数”。
claretttt 发表于 2026-3-5 15:51 | 显示全部楼层
PERSIZE和MSIZE如何影响传输数据量?
fengm 发表于 2026-3-6 11:36 | 显示全部楼层
NDATAT寄存器的单位是什么?
saservice 发表于 2026-3-6 13:34 | 显示全部楼层

NDATAT乘以PERSIZE是否等于总传输字节数?
jtracy3 发表于 2026-3-6 18:13 | 显示全部楼层
DMA传输的总字节数由 NDTR初始值 × 数据宽度 决定。
qiufengsd 发表于 2026-3-7 19:47 | 显示全部楼层
实际传输的总字节数 = NDTR × Min(PERSIZE, MSIZE)
mattlincoln 发表于 2026-3-7 21:56 | 显示全部楼层
DMA 控制器每次触发,会从源地址搬运一个“数据单元”到目的地址。这个“数据单元”的大小由 外设数据宽度  和  内存数据宽度  决定。
10299823 发表于 2026-3-8 07:41 | 显示全部楼层
常用于判断进度或实现环形缓冲区。
zerorobert 发表于 2026-3-9 12:50 | 显示全部楼层
DMA控制器按照您设定的“事务”单元来工作。一个“事务”包含了一次数据传输动作。
guijial511 发表于 2026-3-9 13:01 来自手机 | 显示全部楼层
对于MCU而言,一定要用好DMA功能,能够达到事半功倍的效果。
louliana 发表于 2026-3-9 15:19 | 显示全部楼层
NDTR 数的是“趟数”,每趟搬多少由 SIZE 决定。
lihuami 发表于 2026-3-10 09:49 | 显示全部楼层
NDTR是DMA控制器中的关键寄存器,用于记录剩余待传输的数据项数量。
dspmana 发表于 2026-3-10 13:59 | 显示全部楼层
NDATAT 寄存器配置的是“传输的次数”,而不是“字节数”。
wilhelmina2 发表于 2026-3-10 17:53 | 显示全部楼层
总传输的数据量 = NDTR x PERSIZE
usysm 发表于 2026-3-11 20:58 | 显示全部楼层
NDATAT  在计数什么?              
葡萄又绿江南岸 发表于 2026-3-12 09:38 | 显示全部楼层
输数,每完成 1 次数据传输,该值自动减 1,直到变为 0 时传输结束。可通过读取该寄存器实时查看 DMA 传输进度,比如初始设 100,传输 50 个后 NDATAT 值为 50,值为 0 代表传输完成,是判断 DMA 传输状态的关键指标。
总结
NDATAT 表示 DMA剩余待传输数据个数,而非已传输数;
传输过程中 NDATAT 逐次减 1,初始值为总传输数;
该寄存器可实时查看传输进度,值为 0 代表传输完成。
暗夜幽灵骑士 发表于 2026-3-16 09:45 | 显示全部楼层
对的,NDATAT寄存器的值乘以PERSIZE(数据项的大小)就得到了总的字节数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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