水之呢喃 发表于 2025-7-30 20:34

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

DMA的NDATAT传输数值怎么理解?DMA的配置过程中需要PERSIZE和MSIZE,我在串口通讯时使用8bit类型,在SPI传输时使用32bit类型。然后应该配置一下NDATAT寄存器,设置传输的个数。这里,我有一个问题,这个NDATAT寄存器的个数是字节数,还是传输的次数,即传输的字节数为 NDATAT x PERSIZE的结果?

DKENNY 发表于 2025-7-31 09:25

NDATA(APM32的 DMA_NDATA 寄存器)是传输次数,表示DMA要传输多少个“数据单元”。

- 每个“数据单元”的大小由 PERSIZE(外设数据宽度)决定:
- 串口:PERSIZE = 8位(1字节),NDT = 100,传输100次 = 100字节。
- SPI:PERSIZE = 32位(4字节),NDT = 100,传输100次 = 100 × 4 = 400字节。

可以说,NDATA不是字节数,是传输次数。字节数 = NDT × PERSIZE的字节数。

梦塑者 发表于 2025-7-31 14:39

DKENNY 发表于 2025-7-31 09:25
NDATA(APM32的 DMA_NDATA 寄存器)是传输次数,表示DMA要传输多少个“数据单元”。

- 每个“数据单元”的 ...

我也是这么理解的。
从设计的角度上讲,我只是发送次数,至于位宽是多少,要看你自己设置的MSIZE来定了
页: [1]
查看完整版本: DMA的NDATAT传输数值怎么理解?