




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档-下载后可编辑STM32中采用DMA实现方波的产生和捕获-技术方案1STM32微控制器介绍
STM32系列微控制器是ST公司基于Cortex-M3内核的高集成度的微控制器。它在性能、价格、功耗和实时性方面树立了一个新的标杆,集成了Cortex-M3内核,以及双ADC、多用途的通用时钟TIMx、RTC、I2C、SPI、UART、CAN、DMA、USB等丰富的外设。其功耗在全速72MHz所有模块都打开时也仅仅为36mA,在低功耗模式下其功耗仅为2μA。
2DMA和TIMx简介
STM32系列微控制器均含有DMA和通用时钟TIMx模块。其低端型号中仅包含DMA1,支持7个通道;高端型号还包括DMA2,支持5个通道。它的每个通道可任意指定工作模式,如内存到内存、内存到外设或外设到内存等。当涉及到外设时,一般是由外设来触发DMA的传输,如串口收到数据的标志位可触发DMA。
DMA的每次传输都分为4个阶段:申请仲裁、地址计算、总线存取和应答。除总线存取阶段,其他3个阶段都只需要一个系统周期,并且不占用总线,可在DMA控制器内部并发地执行。总线存取阶段,每个字(4字节)的传输需要3个系统周期。DMA和CPU工作在交替方式下,不会相互阻塞。DMA各个通道可独立设置优先级,当访问同一资源时高优先级通道先获得资源。
DMA的使用比较简单,每路DMA仅包括4个寄存器,用于指定DMA的工作模式、源地址、目标地址和传输次数。ST公司提供了很好的驱动库,简化了外设的使用,方便阅读和移植。本文采用库函数来展示功能。
其通用时钟是很有特色的外围模块,可实现多种复杂的功能。时钟模块内部主要包含一个计数器和4个通道的比较/捕获寄存器。时钟可工作在捕获或比较模式。在捕获模式下,若有对应的触发信号,计数器的值会保存到比较/捕获寄存器,并触发中断或DMA;在比较模式下,若计数器的值与比较/捕获寄存器的值相等,则对外输出预选设定好的信号,如高电平、低电平或电平反转等。
3采用DMA+TIMx实现多路方波的产生
采用时钟的4个比较/捕获通道加DMA可以产生出4路不同频率和占空比的方波。这里为简化篇幅,只列出了产生一路方波的代码。基本原理是:将时钟的4个通道设置为反转模式(即计数器与比较捕获寄存器相等时,其对应的CPU引脚电平发生反转),设置计数器为向上计数到0xFFFF的模式;然后预先计算好需要引脚反转的时刻,并使能对应通道的DMA请求。这样,当计数器与比较/捕获寄存器的值相等时,由DMA将下一个需要引脚电平反转的时刻送入到比较/捕获寄存器。
这里将DMA设置为从内存到外设的半字(2个字节)环形传输。开启DMA全满和半满中断,在中断处理函数中不断填充新的时刻值,即可保证产生的波形不间断。假设存放时刻值的缓冲长度为N,则每N/2个点才中断,这样CPU就不需要频繁进入中断,执行效率比较高。由此也可以看出,缓冲越大,对中断响应的实时性要求也越低,当然这时中断的处理时间也越长。以下为示例代码:
需要注意的是,比较/捕获寄存器的预加载功能必须禁止掉。我们需要的是写入比较/捕获寄存器的值立即与计数器相比较输出,而无需等待一个更新事件。
4采用DMA+TIMx实现多路方波的捕获
假设有一个方波需要记录并分析。一种方案是设置CPU引脚在上升沿和下降沿中断,然后在中断中记录该时刻。这种处理方式的实时性和效率会差一些,因为进出中断本身就需要一定的指令周期(Cortex-M3为12+12或6+12个系统周期),而且需要考虑多个中断同时发生的坏情况,对可检测方波的频率有一定的限制。另一种方案是采用轮询的方式不断查询该引脚的状态并记录上升沿和下降沿的时刻,这种方式下系统几乎不能处理其他的任务了。
采用DMA+TIMx的方式来捕获上升沿和下降沿时刻,有利于提高系统的实时性和执行效率。通过TIMx的捕获功能将方波的电平跳变时刻记录在比较/捕获寄存器中,然后DMA将该值自动传输到内存,只有当DMA触发半满或全满事件时CPU才需要进入中断处理数据。通过记录方波的上升沿和下降沿时刻,然后将两个时刻相减,进而就能得到所有低沿和高沿的宽度,进行后续的分析处理。这种方式下中断频率仅为方波频率的4/N(N为缓冲区大小)。
图1为TIMx工作在捕获模式下一个通道的示意图。
其中TI1为CPU引脚的输入,经过滤波(新的电平必须保持一定时间才认为有效,以防止高频噪声的干扰)后进入后继的边沿极性选择,经过分频作为捕获信号的输入。这里TI2F为相邻通道经过滤波后的信号,也就是说一个引脚的信号可作为TIMx两个通道的输入捕获信号,这样信号只需要接一个CPU引脚就可以触发两个时钟通道了。
将输入方波接到CPU一个引脚上,假设该引脚对应于图上的TI1,设定其在下降沿触发通道1的捕获事件,而其在上升沿触发通道2的捕获事件,事件发生后申请DMA将捕获的比较/捕获寄存器的值保存起来。示例代码如下:
其他部分与第3节中比较输出的代码基本一致。
5总结
测试中STM32系列微控制器工作在36MHz,可产生出1路1.5MHz的方波,可捕获1MHz的方波,而此时CPU的执行几乎不受影响。这里采用DMA来实现方波的产生和捕获,极大地提高了系统的实时性和执行效率,减少了中断次数,节省了宝贵的资源。这种方案也可以用来实现高效的模拟串口。
DMA的传输需要多个系统周期的,例如采用DMA实现内存到内存的搬移,每次传输需要5个系统周期,而内存到外围的传输需
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电子式燃气表合作协议书
- 2025年电子商务平台风险管理与合规性审查服务合同
- 二零二五年度短视频行业内容审核与版权保护合同
- 2025年度水上作业劳保鞋专项采购合同
- 2025版自卸车租赁与冷链运输服务合同
- 二零二五年度教育资源开发劳务安全免责合作协议
- 二零二五年度太阳能防盗窗工程设计与施工合同
- 二零二五年度大厦商场租赁合同附能源管理责任协议
- 二零二五年度社保缴纳与员工培训激励协议
- 2025年厨房设备安装与维护保养服务合同范本
- (完整版)英语26个字母测试题
- 境外安全管理培训(海外)课件
- 塔吊基础沉降观测记录
- 京瓷哲学78条内容
- 教师职业道德(高职)PPT完整全套教学课件
- GB/T 13660-2008201×7强碱性苯乙烯系阴离子交换树脂
- GB/T 12325-2008电能质量供电电压偏差
- CB/T 702-1992船用柴油机铸铁气缸套技术条件
- 埃美柯阀门检验报告汇总-391黄铜调节阀
- 函数的奇偶性 省赛一等奖 公开课教学设计
- YYT 1182-2020 核酸扩增检测用试剂(盒)
评论
0/150
提交评论