STM32控制器

DMA控制器

DMA是一种嵌入式系统中用于高速传输数据的机制,提供在外设与存储器、存储器和存储器之间的高速数据传输,它允许外设中的数据直接传输到系统存储器,而无需通过CPU的干预(它主要做数据传输的工作)

STM32F407有2个DMA控制器,每个控制器有8个数据流,每个数据流有8个通道,1个数据流每次只能搬运1个通道的数据。

DMA的仲裁器(处理事件的先后顺序)

DMA的仲裁器是一个用于管理多个DMA通道之间竞争访问系统总线的组件。当系统多个外设或DMA设备需要访问系统内存时,让优先级高的先访问;判断优先级高低还分为软件优先级与硬件优先级;

软件优先级有:最高/高/中等/低优先级

硬件优先级是判断:当有两个相同的软件优先级的请求,较低编号的通道比较高编号的通道有更高的优先权;DMA不会抢占通道,不是跟中断一样一个低优先级的进程没结束就去执行高优先级的进程

FIFO模式是作为数据缓存的

DMA的指针增量

在直接模式下,不允许与目标的传输数据宽度不同,两者必须相等,并由DMA_SxCR中的PSIZE位定义,MSIZE位无效

当PSIZE和MSIZE不相等时:

在DMA_SxNDTR寄存器中配置的要传输的数据项目数目的数据宽度等于外设总线的宽度(由PSIZE位配置决定宽度)

地址递增

DMA控制器HAL库接口

HAL_DMA_Start是一个DMA启动函数,使用DMA中断的方式检测数据的状态而不用轮询

中断触发函数搬运数据

它是一个串口发送DMA的一个函数;由串口控制器提供的函数接口,不是DMA控制器提供的;它配合DMA初始化这个函数一起使用(transmit传输),先初始化之后,才能使用这个函数;

发送时存储器到外设这个方向

串口接收是外设到存储器,指定DR地址作为外设地址,

相关推荐
虎王物联7 小时前
STM32 HAL库串口DMA空闲中断:高效接收不定长Modbus数据帧
stm32·单片机·嵌入式硬件·dma·modbus
自小吃多7 小时前
DXF文件导入与PCB板框定义笔记
笔记·嵌入式硬件
SUNNYSPY0017 小时前
AO4402-ASEMI便携设备电源开关AO4402
单片机
单片机仿真设计10 小时前
【proteus仿真】基于 STC89C52 单片机家用智能台灯设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
2601_9507906810 小时前
深圳国产单片机厂商怎么选?技术能力与服务能力检查表
单片机·嵌入式硬件·国产mcu·芯片厂商·深圳单片机·单片机选型
hongmai66688812 小时前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
笨笨饿12 小时前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
西城微科方案开发12 小时前
高精度低功耗胎压计方案——气压表解决方案
单片机·嵌入式硬件
LavaLin0114 小时前
STM32H562RGT6 与 STM32F722RET6 规格对比
stm32
VALENIAN瓦伦尼安教学设备14 小时前
设备状态检测振动分析实训台案例分析
大数据·数据库·人工智能·嵌入式硬件·算法