版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CKS32F103微控制器教学课件10DMA
(DirectMemoryAccess)控制器DMA的定义:DMA即直接存储器访问,是一种允许硬件设备(如ADC、UART、SPI等外设)绕过CPU,直接与存储器(SRAM、Flash)进行高速数据传输的机制。核心价值:解放CPU无DMA:CPU需通过“读取外设数据寄存器→写入内存”的方式逐字节搬运数据,占用大量CPU周期,效率低下。有DMA:CPU只需初始化配置DMA控制器,后续数据传输由DMA硬件自动完成,CPU可并行执行其他复杂任务本质:一个专门用于数据搬运的“硬件搬运工”,接管数据传输任务。10.1.CKS32F103DMA控制器特点及结构双DMA控制器拥有DMA1和DMA2两个独立控制器,总计提供12个独立通道,可同时并行处理多个不同的DMA请求,大幅提升数据吞吐效率。•DMA1:7个通道(F103)•DMA2:5个通道(仅大容量产品)灵活的传输方向支持外设到存储器、存储器到外设双向传输,以及DMA1独有的存储器到存储器高速数据块复制,满足多样化数据搬运需求。•典型应用:ADC采集、UART发送、SRAM数据搬运可编程的数据宽度外设和存储器的数据宽度可独立配置,支持8位(字节)、16位(半字)、32位(字)三种传输粒度,适配不同外设接口和数据类型。•优势:精细化控制数据传输,减少CPU干预DMA控制器的特点优先级管理软件优先级:每个通道可配置为四种优先级:非常高、高、中、低,灵活适配业务需求。硬件优先级:通道编号越小优先级越高;DMA1整体优先级高于DMA2,保障高优数据优先传输。循环缓冲管理循环模式(Circular):传输完成后自动重载计数器,开启新一轮传输,完美适配ADC连续采样等不间断数据流场景。正常模式(Normal):单次传输完成后自动停止,需软件手动重启,适用于单次批量数据搬运任务。丰富的中断功能多事件中断支持:每个通道在关键节点均可产生中断,便于软件实时监控与精细化控制:•传输完成(TC):全部数据传输完毕时触发。
•半传输(HT):传输过半时触发,支持双缓冲处理。
•传输错误(TE):数据传输异常时触发,提升系统鲁棒性。10.1.CKS32F103DMA控制器特点及结构DMA控制器的特点10.1.CKS32F103DMA控制器特点及结构特点描述DMA控制器数量1个DMA控制器DMA1,(F103xC及以上型号支持DMA2)通道数量7个通道(DMA1_Channel1~DMA1_Channel7),但同时只能有一条选中数据传输方向外设→内存,内存→外设,内存→内存支持的数据宽度8位、16位、32位(需设置传输大小位宽)地址自增模式支持对内存和/或外设地址进行递增传输模式正常传输模式(NormalMode);循环传输模式(CircularMode)优先级配置每个通道支持4级优先级:低、中、高、非常高内存到内存传输支持,需开启MEM2MEM位最大传输长度每通道最多可传输65535个数据,可编程中断支持每通道支持3种中断:传输完成TC,半传输完成HT,传输错误TE外设映射方式每个通道固定映射到特定外设,如ADC、USARTx、SPIx、TIMx等DMA请求源支持来自多个外设的数据传输请求启动方式软件设置寄存器或由外设触发,如ADC自动触发与NVIC配合DMA中断需配置NVIC控制器中的中断向量DMA控制器的特点10.1.CKS32F103DMA控制器特点及结构2.DMA控制器的结构10.1.CKS32F103DMA控制器特点及结构2.DMA控制器的结构DMA控制器7个通道中的每个通道都可配置源地址、目标地址、传输数据量和传输模式等参数。DMA控制器主要由DMA通道、仲裁器、总线接口单元和中断接口等部分组成DMA仲裁器用于分配总线使用权,解决多个DMA通道同时请求访问时的竞争问题。DMA的优先级管理分为软件阶段和硬件阶段。软件优先级通过
DMA_CCRx
寄存器配置,分为非常高、高、中、低四个等级。当多个通道软件优先级相同,硬件仲裁则按通道编号决定优先权,编号越小优先级越高,例如通道2优先于通道4。在大容量或互联型产品中,DMA1控制器的优先级高于DMA210.5DMA相关寄存器及关键位配置寄存器基地址为0x40020000,复位值都为0x00000000。DMA传输时需要配置方向DIR、地址增量PINC/MINC、数据宽度PSIZE/MSIZE、传输数量CNDTR、循环模式等。中断标志需配合中断使能位TCIE/HTIE/TEIE使用,中断服务程序中需通过DMA_IFCR清除对应标志,否则中断持续触发。当多个DMA通道同时请求总线时,PL位的数值决定优先级,高优先级先传输,避免数据冲突名称偏移地址功能及关键位描述中断状态寄存器:DMA_ISR0x00R:通道x的中断状态,硬件自动置位,x=1~7;D[4x−4]:GIFx,通道x的全局中断标志,1=产生了TE、HT或TC事件;D[4x−3]:TCIFx,通道x的传输完成标志,1=产生了传输完成事件TC;D[4x−2]:HTIFx,通道x的半传输标志,1=产生了半传输事件HT;D[4x−1]:TEIFx,通道x的传输错误标志,1=发生了传输错误TE;10.5DMA相关寄存器及关键位配置中断标志清除寄存器:DMA_IFCR0x04RW:软件清除通道x的中断标志,x=1~7;D[4x−4]:CGIFx,清除通道x的全局中断标志,1=清除通道0所有标志;D[4x−3]:CTCIFx,清除通道x的传输完成标志,1=清除TCIFx标志;D[4x−2]:CHTIFx,清除通道x的半传输标志,1=清除HTIFx标志;D[4x−1]:CTEIFx,清除通道x的传输错误标志,1=清除TEIFx标志;通道x配置寄存器:DMA_CCRx0x08+N×0x14;N=x–1RW:配置通道x的传输模式、方向、数据宽度,中断允许和通道使能启动等;D0:EN,通道使能,1=启动DMA传输,0=关闭通道;D1、D2、D3:TCIE、HTIE、TEIE,设置传输完成、半传输和传输错误中断使能,1=使能,0=禁止(故障处理必需);D4:DIR,传输方向,1=存储器→外设,0=外设→存储器;D5:CIRC,循环模式,1=连续传输,0=单次传输;D6:PINC,外设地址增量,1=外设地址自动递增,0=固定地址;D7:MINC,存储器地址增量,1=存储器地址自动递增,0=固定地址;D[9:8]:PSIZE[1:0],外设数据宽度:00=8位,01=16位,10=32位;D11:10]:MSIZE[1:0],存储器数据宽度:00=8位,01=16位,10=32位;D[13:12]:PL[1:0],通道优先级:00=低,01=中,10=高,11=极高;通道x传输数量寄存器:DMA_CNDTRx0x0C+N×0x14RW:数据传输数量,只能在通道不工作时写入,通道开启后变为只读,指示剩余的待传输字节数目;D[15:0]:NDT[15:0],数据传输数量,范围为1~65535,每传输1个数据自动减1,数据传输结束后,寄存器的内容或者变为0,或者当该通道配置为自动重加载模式时,寄存器的内容将被自动重新加载为之前配置时的数值。当寄存器的内容为0时,无论通道是否开启,都不会发生任何数据传输。通道x外设地址寄存器:DMA_CPARx0x10+N×0x14RW:外设数据寄存器的基地址,作为数据传输的源或目标;D[31:0]:PA[31:0],外设数据寄存器地址为固定值,如&USART1->DR、&ADC1->DR;当PSIZE=01,不使用PA[0]位,操作自动地与半字地址对齐;当PSIZE=10,不使用PA[1:0]位,操作自动地与字地址对齐;通道x存储器地址寄存器:DMA_CMARx0x14+N×0x14RW:存储器的基地址,作为数据传输的源或目标,根据传输方向DIR设置;D[31:0]:MA[31:0],储存器地址;当MSIZE=01,不使用MA[0]位,操作自动地与半字地址对齐;当MSIZE=10,不使用MA[1:0]位,操作自动地与字地址对齐;10.2.DMA数据传输10.2.1数据格式数据格式主要涉及大小端模式、数据宽度和对齐方式。大小端模式与Cortex-M3默认一致,固定为小端存储不可配置。传输宽度可通过寄存器设置。对齐方式需由用户保证,否则可能影响传输效率或导致数据错误数据传输宽度DMA支持的数据传输宽度是8、16和32位,由DMA_CCRx
的位MSIZE[1:0]和DMA_CCRx
的位PSIZE[1:0]设置内存和外设的数据宽度。因为源和目标数据宽度不一定相同,所以共有9种组合方式。2.数据对齐:指一个数据类型所能存放的地址,需要符合一定的规范。是确保DMA正确传输的关键,直接影响传输效率和数据完整性。对齐规则由目标CPU架构决定。对于32位的CKS32系列CPU,8位传输时无对齐要求,地址可以是任意值;16位传输时地址必须对齐到2字节边界,地址最低位为0;32位传输时地址必须对齐到4字节边界,地址最低两位为00。源和目标的数据长度不同时的数据存储实例传输中源地址和目标地址的数据宽度可能不同。若目标宽度大于源宽度,源数据会自动扩展到目标宽度,若目标宽度小于源宽度时,则会发生数据截断导致高位丢失。10.2.DMA数据传输10.2.2数据传输1.传输过程包括初始化配置相关寄存器、触发传输、数据传输和传输结束。触发传输可以通过外设触发和软件触发。外设触发指外设产生数据请求。如USART接收数据、ADC转换完成后向DMA控制器发送请求信号。软件触发指直接通过寄存器设置启动传输,一般适用于内存之间的传输数据传输:指DMA控制器接管总线,根据配置自动从源地址读取数据,写入目标地址。每次传输后,源/目标地址自动递增,传输计数器递减。数据读写过程中CPU可执行其他任务,不参与数据搬运。传输结束:指当传输计数器减为0时,DMA自动停止传输,设置完成标志位。若使能了中断,DMA向CPU发送中断请求,CPU可在中断服务程序中处理后续操作,如处理数据、重新配置传输等10.2.DMA数据传输10.2.2数据传输DMA中断和错误管理每个DMA通道都可以在传输过半、传输完成和传输错误时产生中断。配置DMA通道中断使能寄存器的相关位,可以选择性地使能这些中断。当DMA访问保留的地址区域或非法外设地址时,会触发DMA传输错误。例如,在CKS32F103C6T6芯片上,只有USART1和USART2外设,但USART3的地址范围0x40004800~0x40004BFF属于保留区域。如果程序配置DMA(或CPU)去访问USART3的寄存器,就会引发DMA传输错误,从而置位相应的错误标志一旦DMA传输发生错误,硬件会自动停止该通道的传输,并置位传输错误标志位TEIFx。10.3.DMA请求映像请求映像:指外设与DMA通道的硬件连接关系,即不同外设的DMA请求信号固定映射到特定的DMA通道上。如ADC1、TIM2_CH3和TIM4_CH1共享DMA通道1,因通道1数值最小所以具有最高响应优先级。10.4.编程实例源地址和目标地址设置DMA_CMARx为存储器地址寄存器,用于设置存储器的起始地址。当外设发起DMA请求时,数据将写入该地址,实现外设到存储器的数据传输;或从该地址读取数据并写入外设,实现存储器到外设的数据传输。DMA_CPARx为外设地址寄存器,用于设置外设寄存器地址。数据传输方向由
DMA_CCRx
的DIR位配置。10.4.1
通道配置步骤设置源地址和目标地址传输数据量优先级传输模式和中断启动DMA通道2.数据量设置在DMA_CNDTRx
寄存器中设置要传输的数据量,每完成一次数据搬运,该值自动递减1。3.优先级设置在
DMA_CCRx
的PL[1:0]位中配置通道优先级,可选非常高、高、中、低。4.传输模式设置在
DMA_CCRx
中设置数据的传输方向、循环模式、外设地址和存储器的地址增量模式、数据宽度以及半传输或传输完成是否产生中断。5.启动DMA通道设置
DMA_CCRx
的EN位,使能该通道的DMA传输10.4.编程实例传输方向(DIR)由DMA_CCRx寄存器的DIR位配置数据传输方向:•0:外设到存储器(Peripheral-to-Memory)•1:存储器到外设(Memory-to-Peripheral)•特殊:当MEM2MEM位置1时,固定为存储器到存储器传输模式,忽略DIR位设置。数据宽度(PSIZE&MSIZE)分别配置外设和内存的数据总线宽度,支持不同位宽的数据交互:•外设(PSIZE):00=8位(Byte),01=16位(Half-Word),10=32位(Word)•内存(MSIZE):00=8位(Byte),01=16位(Half-Word),10=32位(Word)注意:数据宽度不匹配时,DMA会自动进行字节对齐或数据合并操作。核心能力:独立配置与自动转换
外设和内存的数据宽度可以完全独立配置。这意味着DMA控制器能够自动处理不同位宽接口之间的数据传输,实现高效的数据打包(Packing)和解包(Unpacking),极大地提升了系统的数据处理灵活性。10.4.1
通道配置步骤10.4.编程实例10.4.2基于DMA的USART数据传输到SRAM例程传输要求采用DMA传输方式将USART1的数据转存到SRAM缓冲区。USART1RX默认对应DMA1通道5,缓冲区大小设为64字节,USART1的波特率115200,数据帧格式为8位数据位、无校验,1位停止位。程序主要包括初始化配置和中断处理程序。初始化包括启动GPIO和USART1的时钟、USART1的波特率、引脚等设置,DMA1通道5的方向、地址、长度、触发方式设置,启用DMA和USART1的DMA功能设置等。10.4.编程实例10.4.2基于DMA的USART数据传输到SRAM例程2.CODE。#include"CS32F103.h"//头文件#defineRX_BUFFER_SIZE64uint8_trxBuffer[RX_BUFFER_SIZE];voidDMA1_Channel5_Init(void);voidUSART1_Init(void);//初始化USART1voidUSART1_Init(void){//1.使能GPIOA和USART1时钟RCC->APB2ENR|=RCC_APB2ENR_IOPAEN|RCC_APB2ENR_USART1EN;//2.配置GPIOA9(TX)为复用推挽输出,GPIOA10(RX)为浮空输入GPIOA->CRH&=~((0xF<<4)|(0xF<<8));//清除PA9/PA10配置GPIOA->CRH|=(0xB<<4)|(0x4<<8);//PA9=AF推挽输出,PA10=浮空输入10.4.编程实例10.4.2基于DMA的USART数据传输到SRAM例程//3.配置波特率(假设PCLK2=72MHz)//USARTDIV=72MHz/115200=625//BRR=625->Mantissa=625,Fraction=0USART1->BRR=625;//4.配置8N1数据格式USART1->CR1&=~(USART_CR1_M|USART_CR1_PCE);//M=0(8位),PCE=0(无校验)USART1->CR2&=~USART_CR2_STOP;//1停止位//5.使能USART1接收与DMAUSART1->CR3|=USART_CR3_DMAR;//使能接收DMAUSART1->CR1|=USART_CR1_RE|USART_CR1_UE;//使能接收和USART}
//初始化DMA1Channel5(对应USART1_RX)voidDMA1_Channel5_Init(void){10.4.编程实例10.4.2基于DMA的USART数据传输到SRAM例程//1.使能DMA1时钟RCC->AHBENR|=RCC_AHBENR_DMA1EN;//2.禁用DMA通道以便配置DMA1_Channel5->CCR&=~DMA_CCR_EN;//3.配置DMA参数D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物业管理员(师)职业能力等级评价考试(助理物业管理师)能力提高训练题及答案
- 2026年四川省机关事业单位考调、选调工作人员考试(综合知识、综合应用能力测试)练习题及答案
- 2026年全国统一高考历史试卷(新课标ⅰ)及答案
- 2026年吉林省公开遴选公务员考试(综合能力测试、政治理论素养与工作能力)考前模拟试题及答案
- 2026年湖北省武汉市专业技术职务水平能力测试(新闻)模拟试题及答案
- 2026年湖北省工程专业职务水平能力测试(纺织)冲刺模拟试题及答案
- 2026年高中英语教师资格证考试综合素质真题及答案解析试卷
- 广东省深圳市多校2025-2026学高三上学期一模物理试卷(解析版)
- 2025年全国物业管理师资格考试(物业管理实务)(建设部)冲刺模拟试题及答案
- 2025江西军转干考试(计算机)模拟试题及答案
- T-GDHES 003-2024 预应力混凝土U形板桩应用技术规程
- 2024年湖北省中考道德与法治真题(原卷版)
- 【MOOC】跨文化交际入门-华中师范大学 中国大学慕课MOOC答案
- 中医基础理论考试重点
- 大中型灌区管理手册-参考本
- 《养老护理员》-课件:协助老年人穿脱简易矫形器
- 汽车式起重机作业安全管理
- 【徐福记食品公司盈利能力分析案例报告10000字】
- 《集装箱结构》课件
- 端午节里话香囊课件
- 2022年江苏省徐州医药高等职业学校工作人员招聘考试真题
评论
0/150
提交评论