介绍
- DMA 允许外设(如串口、SPI、ADC 等)直接与内存进行数据传输,而无需 CPU 的频繁干预,大大提高了数据传输效率,减轻了 CPU 的负担。
- 串口数据收发:在串口通信中,当需要发送或接收大量数据时,可以使用 DMA 来实现数据的自动传输。例如,在进行串口文件传输时,DMA 可以将内存中的数据快速地发送到串口发送缓冲区,或者将串口接收缓冲区中的数据快速地存储到内存中,而 CPU 只需在传输开始前进行一些配置和传输结束后进行一些简单处理。
- SPI 数据传输:在 SPI 通信中,DMA 可以用于高速地传输数据,如与外部 Flash 芯片进行数据读写操作时,利用 DMA 可以大大提高数据传输速度,实现快速的文件存储和读取等功能。
- ADC 数据采集:在 ADC 进行数据采集时,DMA 可以实时地将 ADC 转换后的数据存储到内存中。这样可以实现连续的高速数据采集,而不会因为 CPU 的处理延迟而丢失数据,非常适合用于需要实时采集大量数据的应用,如音频信号采集、传感器数据采集等。
传输
接收
一般情况下DMA接受没有意义,得加上idle中断
IDLE 中断是串口通信中的一种中断机制。当串口接收线路在一段时间内没有数据传输,即处于空闲状态时,会触发 IDLE 中断。利用这个特性,可以判断一帧数据是否接收完毕。