STM32之DMA:
STM32 DMA
2023-09-27 14:22:00 时间
typedef struct
{
__IO uint32_t CCR; //复位
__IO uint32_t CNDTR; //传输的数据量
__IO uint32_t CPAR; //外设地址
__IO uint32_t CMAR; //存储器地址
} DMA_Channel_TypeDef;
用二维数组做DMA缓冲的串口发送:
发送函数先送到指定的二维缓冲数组中;
在定时回调函数里面看如果数组的前2个字节(长度信息不为0),就将其该数组的地址和长度信息给DMA的相关配置寄存器即启动DMA发送
DMA的buf与BURST:
对于STM32F4来讲,每个DMA stream都有4个字的FIFO可用。它用来暂存来自DMA源端的数据,每当FIFO里存放的数据达到设定的阈值后,数据就会被移走。阈值可以设置为从1个字到4个字的深度。启用DMA的FIFO可以最大程度地避免数据传输过程中的溢出问题,可以减少DMA对内存的访问次数从而减少总线访问竞争,通过BURST分组传输优化传输带宽以提升芯片性能。利用FIFO,通过对源端/目标端的数据进行打包或拆包以适应不同数据宽度的访问需求.让DMA的使用更为方便灵活.
FIFO阈值设置为1/4满,自源端的4个Byte被封装成1个word字。数据会按字方式逐一写入内存.传输过程中如果发生被打断的情况,此时就会遇到数据损坏的风险。因此就引入了DMA BURST传输,或称DMA节拍传输.
即几个数据【4/8/16】被封装成1组,或称1个burst,或称1节.对于每1节内的数据传输,DMA对总线的占用不会被总线矩阵仲裁器解除或打断,以保证每节数据的可靠完成。
相关文章
- STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁
- STM32学习笔记之__attribute__ ((at())绝对定位分析
- STM32启动过程解读与跟踪验证
- STM32之CAN
- STM32使用注意事项
- STM32通过FSMC驱动3.2寸液晶屏实现的音乐频谱
- STM32库开发实战指南(光盘内容另行下载,地址见书封底)
- STM32与机器视觉(转)
- Read UNIQUE ID and flash size method for stm32
- STM32软件复位(基于库文件V3.5)
- STM32 IAP 固件升级设计/U盘升级固件
- stm32 DMA数据搬运 [操作寄存器+库函数](转)
- STM32 FLASH模拟EEPROM 使用和优化(转)
- stm32 Bootloader设计(YModem协议) (转)
- Eclipse + CDT + YAGARTO + J-Link,STM32开源开发环境搭建与调试
- STM32 实现 BootLoader功能(奉上源码)