当前位置: 首页 > news >正文

8 DWA(一)

8 DWA

DMA简介

DMA(Direct Memory Access)直接存储器存取(可以直接访问32内部存储器,包括内存SRAM,Flash)
DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源
存储器和存储器(软件触发);外设和存储器(硬件触发)
12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道)
每个通道都支持软件触发和特定的硬件触发STM32F103C8T6 DMA资源:DMA1(7个通道)

8.1 DWA直接存储读取

存储器映像

类型起始地址存储器用途
ROM(只读)0x0800 0000程序存储器Flash存储C语言编译后的程序代码
0x1FFF F000系统存储器存储BootLoader,用于串口下载
0x1FFF F800选项字节存储一些独立于程序代码的配置参数
RAM(随机存储器)0x2000 0000运行内存SRAM存储运行过程中的临时变量
0x4000 0000外设寄存器存储各个外设的配置参数
0xE000 0000内核外设寄存器存储内核各个外设的配置参数(NVIC和SysTick)

DMA框图

在这里插入图片描述

DMA基本结构

在这里插入图片描述

DMA进行转运的条件:

第一,就是开关控制,DMA_Cmd必须使能;
第二,传输计数器必须大于0;
第三,触发源必须由触发信号;

DMA请求

在这里插入图片描述

数据宽度与对齐

在这里插入图片描述

数据转运+DMA

将DataA转到DataB,外设地址给DataA数组地址,有储器地址给Data B的首地址,宽度按8位字节传输,两地址都自增,传输计数器给7,无需自动重装,用软件触发,调用DMA_ Cmd( )

在这里插入图片描述

ADC扫描模式+DMA

DMA最常见的用途就是配合ADC的扫描模式

外设地址给ADC_DR地址,有储器地址在SRAM中定一个数组ADValue,以16位半字转输

在这里插入图片描述

函数解释:

void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);		//恢复缺省配置
void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct); //初始化
void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);		//结构体初始化void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);		//DMA通道使能
void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);	//中断输出使能
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); //设置当前传输数据寄存器
uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);	//获取当前传输数据寄存器FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);	//获取标志位状态
void DMA_ClearFlag(uint32_t DMAy_FLAG);			   //清除标志位
ITStatus DMA_GetITStatus(uint32_t DMAy_IT);		   //获取中断状态
void DMA_ClearITPendingBit(uint32_t DMAy_IT);	   //清除中断挂起位
http://www.lryc.cn/news/62480.html

相关文章:

  • mysql慢查询日志
  • Sentinel介绍及搭建
  • 最受信任的低代码平台排行榜
  • Django框架之创建项目、应用并配置数据库
  • 软件测试之基础概念学习篇(需求 + 测试用例 + 开发模型 + 测试模型 + BUG)
  • Windows下版本控制器(SVN) - 1、开发中的实际问题+2、版本控制简介
  • Learning Dynamic Facial Radiance Fields for Few-Shot Talking Head Synthesis 笔记
  • SpringBoot 项目整合 Redis 教程详解
  • 3ASC25H214 DATX130以力控制为基础的装配应用方面已经形成了一个解决方案
  • Java的位运算
  • FastDFS分布式文件存储
  • Android的AAC架构
  • 高功率激光切割中不良现象的排除技巧
  • MySQL-----复合查询
  • 10.Yarn概述
  • MFC实现背景透明,控件不透明的对话框,且点击图片有事件响应
  • 案例01-tlias智能学习辅助系统01-增删改查+参数传递
  • Spring之Bean的配置与实例
  • “不保留活动”打开,导致app返回前台崩溃问题解决
  • 解读vue3源码(3)——watch
  • 优秀简历的HR视角:怎样打造一份称心如意的简历?
  • 系统集成项目管理工程师——考试重点(三)项目管理一般知识
  • 为什么医疗保健需要MFT来帮助保护EHR文件传输
  • 对项目总体把控不足,项目经理应该怎么办?
  • 【学习笔记】CF603E Pastoral Oddities
  • 如何使用ESP32-CAM构建一个人脸识别系统
  • JavaWeb分页条件查询参数特殊字符处理
  • ubuntu18服务安装
  • 这些使用工具大推荐,现在知道不晚
  • 【Java|golang】1048. 最长字符串链