DMA常见问题

1. DMA传输会用到拍的概念,什么是拍 (Beat)?

  • 拍 (Beat) 是IC层面常用到的一个术语,表示单次数据访问使用的位宽,在嵌入式领域一般是8bit、16bit、32bit,对应C程序的基础数据类型char、short和int (32bit)。

    • 如果访问数据位宽使用的8bit (char),1拍对应的数据长度是1字节。

    • 如果访问数据位宽使用的16bit (short),1拍对应的数据长度是2字节。

    • 如果访问数据位宽使用的32bit (int),1拍对应的数据长度是4字节。

2. 是否可以将同一个DMA实例的同一个DMA通道同时配置给不同的外设使用?

  • 只有配置为Memory to Memory的DMA实例及通道,可以在各种Memory(如SRAM、PSRAM及完成Memory Mapped配置的NOR Flash地址空间)之间使用。

  • 在其他DMA传输模式下,目前的驱动框架不支持将同一个DMA实例的同一个通道同时分配给不同外设使用;但可以分时使用,每次使用前后要进行外设及DMA的初始化和反初始化(除非DMA通道不够用,否则不建议这样使用,不熟悉的情况下容易造成Bug)。