DMA:

← 返回 Cortex-M4内核原理 | ← 主页


原理:

  1. 更好的阅读体验:这里有关于总线部分的内容
  2. 通过总线矩阵的不同路径,避免和cpu公用同一条AHB
  3. 通过FIFO减少并行时SBUS和DMA仲裁导致丢数据,FIFO是一个DMA的缓存,可以等待SBUS使用完总线, 在此期间先写到FIFO里,然后又SBUS使用完再一次性写入,减少总线仲裁 如果没有FIFO,就有可能发生溢出错误,因为DMA得不到写入机会,下一个数据又已经完成,就会覆盖 注意FIFO的读写不是并行的
  4. 通过stream流,让peripheral port和memory port之间有不同的FIFO可以用(可以看总线矩阵的第3张图)
  5. 每个stream只能选一个channel,每个channel对应对应不同外设(可以看总线矩阵的第4张图)
  6. 如果stream同时来,会有仲裁器,判断软件设置的优先级,如果优先级一样就看谁的数字小谁先
  7. Burst+FIFO,每次搬运多个字节,且搬运时占用总线(SBUS无法打断),传输占用总线次数更少 实现AHB更快运行,防止外设溢出,宽位填冲(内存对齐)

操作