基于STM32定时器产生PWM的研究.docx
- 文档编号:5838558
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:26
- 大小:361.39KB
基于STM32定时器产生PWM的研究.docx
《基于STM32定时器产生PWM的研究.docx》由会员分享,可在线阅读,更多相关《基于STM32定时器产生PWM的研究.docx(26页珍藏版)》请在冰豆网上搜索。
基于STM32定时器产生PWM的研究
基于STM32定时器产生PWM的研究
作者姓名:
111专业班级:
222指导老师:
222
摘要
随着科技水平的提高,ARM的应用越来越广泛。
Withthedevelopoftechnology,ARMisusedinvarioussituations.
旨在对ARM的深入学习,论文对 STM32定时器产生PWM(脉冲宽度调制)输出进行了研究。
OntheintentionofstudyonARM,timerofSTM32producepulsesPWM(widthmodulation)isstudiedinthispaper.
PWM就是某个频率占空比的方波,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、甚至某些音频放大器,因此研究PWM技术具有十分重要的现实意义。
PWMisthesquarewavewhichhasasureduty-cycleandfrequency.Itsapplicationfieldsincludemeasurement,communication,powercontrolandtransform,motorcontrol,servocontrol,evensomeaudioamplifier.ThereforeitisimportanttoresearchPWMtechnology.
本设计采用 STM32定时器产生PWM。
ItiseasytousethetimerofSTM32toproducePWMoutput.
STM32的PWM由定时器产生,PWM的周期即定时器定时的时间,通过计算方波的频率,占空比,配置定时器和IO口,最后用示波器显示相应通道占空比的方波即可。
PWMisproducedbythetimerofSTM32.ThecycleofPWMisthetimer’sregulartime.Bycalculatingthefrequencyofsquarewave,duty-cycle,configuringthetimerandIO,thenuseoscilloscopedisplayedthePWM.
经对STM32开发板的研究学习,通过对STM32定时器等的配置,用示波器显示,完成了PWM输出。
BasedontheSTM32,byconfiguringthetimerofSTM32,PWMisdisplayedbyoscilloscope.
关键词
STM32,定时器,PWM
StudyfortheoutputofPWMproducebytimerofSTM32BasedonMDK
Abstract:
Withthedevelopmentoftechnology,ARMisusedinvarioussituations.OntheintentionofstudyonARM,timerofSTM32producepulsesPWM(widthmodulation)isstudiedinthispaper.PWMisthesquarewavewhichhasasureduty-cycleandfrequency.Itsapplicationfieldsincludemeasurement,communication,powercontrolandtransform,motorcontrol,servocontrol,evensomeaudioamplifier.ThereforeitisimportanttoresearchPWMtechnology.ItiseasytousethetimerofSTM32toproducePWMoutput. PWMisproducedbythetimerofSTM32.ThecycleofPWMisthetimer’sregulartime.Bycalculatingthefrequencyofsquarewave,duty-cycle,configuringthetimerandIO,thenuseoscilloscopedisplayedthePWM.BasedontheSTM32,byconfiguringthetimerofSTM32,PWMisdisplayedbyoscilloscope.
Keywords:
STM32,timer,PWM
目录
第1章前言5
1.1ARM应用背景5
1.2研究内容6
1.3研究成果7
第2章STM32处理器概述8
2.1STM32简介8
2.2内部资源10
2.3Cortex-M3内核简介10
2.4STM32定时器简介12
2.4.1通用定时器12
2.4.2高级控制定时器12
2.4.3小结15
第3章PWM概述16
3.1原理16
3.1.1PWM模式16
3.1.2互补输出与死区插入19
3.2PWM输出的实现21
第4章软件设计22
4.1开发环境22
4.1.1STM32的开发软件22
4.1.2MDK37022
4.2软件实现23
4.2.1设计标准23
4.2.2程序流程图25
第五章测试及结果26
5.1JTAG仿真器介绍26
5.2测试27
5.3现象及结果28
结论31
致谢32
参考文献33
第1章前言
1.1ARM应用背景
如今,学习一种处理器的就有许多ARM内核的处理器可供使用,现在社会已步入嵌入式学习阶段。
在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUI,TCP/IP,FILESYSTEM等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。
现在越来越多的产品在选型的时候考虑到使用ARM处理器,ARM的应用是相当的广泛。
ARM的嵌入式控制应用如:
汽车、电子设备、保安设备、大容量存储器、调制解调器、打印机等。
一个典型的ARM嵌入式工业控制系统的功能模块如图1-1所示。
输入输出
图1-1ARM嵌入式工业控制系统的功能模块
目前已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
ARM在此方面的应用如:
手提式计算机、移动电话、PDA等。
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上进行了优化,并获得广泛支持。
ARM技术在目前流行的数字音频播放器、数字机顶盒、游戏机、数码相机、数字式电视机、GPS、机顶盒中得到广泛采用。
现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。
如图1-2所示是基于ARM技术的数码相机的功能模块[9]。
图1-2基于ARM技术的数码相机的功能模块
1.2研究内容
本设计旨在加深对ARM的学习,巩固大学四年所学专业知识,提升动手能力和思考问题解决问题的能力。
本设计选择意法半导体的STM32F开发板,通过对该开发板的研究学习,和对STM32F103C8T6芯片的学习,掌握其各种外设功能。
通过对TIM1定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为17.57KHz。
其中,通道1输出的占空比为50%,通道2输出的占空比为25%,通道3输出的占空比为12.5%。
各通道互补输出为反相输出。
TIM1定时器的通道1到4的输出分别对应PA.08、PA.09、PA.10和PA.11引脚,而通道1到3的互补输出分别对应PB.13、PB.14和PB.15引脚,中止输入引脚为PB.12。
将这些引脚分别接入示波器,在示波器上观查相应通道占空比的方波[12]。
本文第一章讲述了该论文写作背景,主要阐述了ARM应用范畴,以及该论文研究的内容;第二章讲述了该研究课题使用的开发板的内部资源和开发板核心芯片STM32F103C8的各项参数;第三章着重介绍了PWM的原理及实现方法;第四章介绍了本研究的软件设计模块;第五章介绍了测试方法和结果。
1.3研究成果
配置好各通道后,编译运行工程;点击MDK的Debug菜单,点击Start/StopDebugSession;通过示波器察看PA.08、PA.09、PA.10、PB.13、PB.14、PB.15的输出波形,其中PA.08和PB.13为第一通道和互补通道,PB.09和PB.14为第二通道和其互补通道,PB.10和PB.15为第三通道和其互补通道;第一通道显示占空比为50%,第二通道占空比为25%,第三通道占空比为12.5%。
第2章STM32处理器概述
2.1STM32简介[24]
STM32F103xx增强型系列使用高性能的ARM/Cortex-M3/32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。
所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:
多达2个I2C和SPI、3个USART、一个USB和一个CAN。
STM32F103xx增强型系列工作于-40℃至+105℃的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。
完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。
下面给出了该系列产品中所有外设的基本介绍。
这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:
·电机驱动和应用控制;
·医疗和手持设备;
·PC外设和GPS平台;
·工业应用:
可编程控制器、变频器、打印机和扫描仪;
·警报系统,视频对讲,和暖气通风空调系统;
2.1.1STM32F103C8的参数
STM32开发板核心芯片的参数如表2-1
表2-1器件功能和配置(STM32F103xx增强型)
芯片引脚图如图2-2:
图2-2STM32F103xx增强型LQPFP48管脚图
2.2内部资源
STM32有丰富的内部资源,如下所示:
·RealViewMDK(MiertocontrollerDevelopmentKit)基于ARM微控制器的专业嵌入式开发工具;
·内置闪存存储器;
·内置SRAM;
·嵌套的向量式中断控制器(NVIC);
·外部中断/事件控制器(EXTI);
·时钟和启动;
·自举模式;
·DMA;
·RTC(实时时钟)和后备寄存器;
·窗口看门狗;
·I2C总线;
·通用同步/异步接受发送器(USART);
·串行外设接口(SPI);
·控制器区域网络(CAN);
·通用串行总线(USB);
·通用输入输出接口(GPIO);
·ADC(模拟/数字转换器);
·温度传感器;
·串行线JTAG调试口(SWJ-DP)。
2.3Cortex-M3内核简介
Cortex-M3内核包含一个适用于传统Thumb和新型Thumb-2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。
Cortex-M3处理器是首款基于ARMv7-M架构的ARM处理器。
中央Cortex-M3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率(1.25DMIPS/MHz)。
Cortex-M3处理器是一个32位处理器,带有32位宽的数据路径、寄存器库和基于传统ARM7处理器的系统只支持访问对齐的数据,沿着对齐的字边界即可对数据进行访问和存储。
Cortex-M3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。
Cortex-M3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。
凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,Cortex-M3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。
表2-3为Cortex-M3处理器与ARM7作比较。
表2-3Cortex-M3与ARM7相比较
2.4STM32定时器简介
2.4.1通用定时器[22]
STM32F103xx增强型系列产品中内置了多达3个同步的标准定时器。
每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。
它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。
在调试模式下,计数器可以被冻结。
任一个标准定时器都能用于产生PWM输出。
每个定时器都有独立的DMA请求机制。
2.4.2高级控制定时器[22]
高级控制定时器(TIM1)由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。
它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补PWM等)。
使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。
高级控制(TIM1)和通用(TIMx)定时器是完全独立的,它们不共享任何资源,它们可以同步操作。
高级控制定时器(TIM1)可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。
四个独立的通道可以用于:
·输入捕获;
·输出比较;
·产生PWM(边缘或中心对齐模式);
·单脉冲输出;
·反相PWM输出,具有程序可控的死区插入功能;
配置为16位标准定时器时,它与TIMx定时器具有相同的功能。
配置为16位PWM发生器时,它具有全调制能力(0~100%)。
在调试模式下,计数器可以被冻结。
很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。
TIM1定时器的功能包括:
·16位上,下,上/下自动装载计数器;
·16位可编程预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值;
·4个独立通道:
−输入捕获;
−输出比较;
−PWM生成(边缘或中间对齐模式);
−单脉冲模式输出;
−死区时间可编程的互补输出。
·使用外部信号控制定时器和定时器互连的同步电路;
·在指定数目的计数器周期之后更新定时器寄存器;
·刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态;
·如下事件发生时产生中断/DMA:
−更新:
计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发);
−触发事件(计数器启动,停止,初始化或者由内部/外部触发计数);
−输入捕获;
−输出比较;
−刹车信号输入。
时基单元
可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。
这个计数器可以向上计数、向下计数或者向上向下双向计数。
此计数器时钟由预分频器分频得到。
计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运行读写仍然有效。
时基单元包含:
·计数器寄存器(TIM1_CNT);
·预分频器寄存器(TIM1_PSC);
·自动装载寄存器(TIM1_ARR);
·周期计数寄存器(TIM1_RCR);
自动装载寄存器是预先装载的。
写或读自动重装载寄存器将访问预装载寄存器。
根据在TIM1_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被永久地或在每次的更新事件UEV时传送到影子寄存器。
当计数器达到溢出条件(向下计数时的下溢条件)并当TIM1_CR1寄存器中的UDIS位等于0时,产生更新事件。
更新事件也可以由软件产生。
随后会详细描述每一种配置下更新事件的产生。
计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIM1_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。
(有关更多的计数器使能的细节,请参见控制器的从模式描述)。
注:
真正的计数器使能信号CNT_EN是在CEN后的一个时钟周期后被设置。
预分频器描述。
预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。
它是基于一个(在TIM1_PSC寄存器中的)16位寄存器控制的16位计数器。
因为这个控制寄存器带有缓冲器,它能够在工作时被改变。
新的预分频器的参数在下一次更新事件到来时被采用。
图2-4和图2-5给出了一些在预分频器工作时,更改其参数的情况下计数器操作的例子。
图2-4当预分频器的参数从1变到2时,计数器的时序图
图2-5当预分频器的参数从1变到4时,计数器的时序图
2.4.3小结
经过比较和针对设计需要,使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。
高级控制(TIM1)和通用(TIMx)定时器是完全独立的,不共享任何资源,可以同步操作。
高级控制定时器(TIM1)还可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。
因此该设计选择高级控制定时器(TIM1)。
第3章PWM概述
3.1原理
PWM是PulseWidthModulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。
它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于PWM技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。
PWM是一种对模拟信号电平进行数字编码的方法。
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。
电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。
通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
只要带宽足够,任何模拟值都可以使用PWM进行编码。
多数负载(无论是电感性负载还是电容性负载)需要的调制频率高10Hz,通常调制频率为1kHz到200kHz之间。
占空比是接通时间与周期之比;调制频率为周期的倒数。
目前,运动控制系统或电动机控制系统中实现PWM的方法主要有传统的数字电路方式、专用的PWM集成电路、单片机实现方式和可编程逻辑器件实现方式。
用传统的数字电路实现PWM,电路设计较复杂,体积大,抗干扰能力差,系统的控制周期较长。
专用的PWM集成电路或带有PWM的单片机价格较高。
对于单片机中无PWM输出功能的情况,实现PWM将消耗大量的时间,大大降低了CPU的效率,而且得到的PWM信号精度不太高[15]。
3.1.1PWM模式
脉冲宽度调制模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRx寄存器确定占空比的信号。
在TIM1_CCMRx寄存器中的OCxM位写入“110”(PWM模式1)或“111”(PWM模式2),能够独立地设置每个通道工作在PWM模式,每个OCx输出一路PWM。
必须通过设置TIM1_CCMRx寄存器OCxPE位使能相应的预装载寄存器,最后还要设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数或中心对称模式中)。
因为仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIM1_EGR寄存器中的UG位来初始化所有的寄存器。
OCx的极性可以通过软件在TIM1_CCER寄存器中的CCxP位设置,它可以设置为高电平有效活和低电平有效。
OCx输出通过CCxE、CCxNE、MOE、OSSI和OSSR位(在TIM1_CCER和TIM1_BDTR寄存器中)的组合控制。
在PWM模式(模式1或模式2)下,TIM1_CNT和TIM1_CCRx始终在进行比较,(依据计数器的计数方向)以确定是否符合TIM1_CCRx≤TIM1_CNT或者TIM1_CNT≤TIM1_CCRx。
根据TIM1_CR1寄存器中CMS位的状态,定时器能够产生边沿对齐的或中央对齐的PWM信号。
PWM边沿对齐模式
·向上计数配置
当TIM1_CR1寄存器中的DIR位为低的时候执行向上计数。
当TIM1_CNT 如果TIM1_CCRx中的比较值大于自动重装载值(TIM1_ARR),则OCxREF保持为“1"。 如果比较值为0,则OCxREF保持为“0"。 图3-1为TIM1_ARR=8时边沿对齐的PWM波形实例。 图3-1边沿对齐的PWM波形(ARR=8) ·向下计数的配置 当TIM1_CR1寄存器的DIR位为高时执行向下计数。 在PWM模式1,当TIM1_CNT>TIM1_CCRx时参考信号OCxREF为低,否则为高。 如果TIM1_CCRx中的比较值大于TIM1_ARR中的自动重装载值,则OCxREF保持为“1"。 该模式下不能产生0%的PWM波形。 PWM中央对齐模式 当TIM1_CR1寄存器中的CMS位不为00时为中央对齐模式(所有其他的配置对OCxREF/OCx信号都有相同的作用)。 根据不同的CMS位的设置,比较标志可能在计数器向上计数时被置1、在计数器向下计数时被置1、或在计数器向上和向下计数时被置1。 TIM1_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。 图3-2给出了一些中央对齐的PWM波形的例子 ·TIM1_ARR=8; ·PWM模式1; ·TIM1_CR1寄存器中的CMS=01,在中央对齐模式1时,当计数器向下计数时标志被设置。 [21] 图3-2中央对齐的PWM波形(APR=8) 3.1.2互补输出与死区插入 高级控制定时器TIM1能够输出两路互补信号并且能够管理输出的瞬时关断和接通。 这段时间通常被称为死区,应该根据连接到输出的器件和它们的特性(电平转换的延时、电源开关的延时等)来调整死区时间。 配置TIM1_CCER寄存器中的CCxP和CCxNP位,可以为每一个输出独立地选择极性(主输出OCx或
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 定时器 产生 PWM 研究