STM32的PWM精讲()

上传人:小** 文档编号:139277153 上传时间:2022-08-22 格式:DOC 页数:21 大小:519KB
收藏 版权申诉 举报 下载
STM32的PWM精讲()_第1页
第1页 / 共21页
STM32的PWM精讲()_第2页
第2页 / 共21页
STM32的PWM精讲()_第3页
第3页 / 共21页
资源描述:

《STM32的PWM精讲()》由会员分享,可在线阅读,更多相关《STM32的PWM精讲()(21页珍藏版)》请在装配图网上搜索。

1、STM32的PWM精讲通过对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。配置好各通道后,编译运行工程;点击MDK的Debug菜单,点击Start/StopDebugSes

2、sion;通过示波器察看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处理器概述STM32F103xx增强型系列产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多

3、12个输入捕获、输出比较或PWM通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一个标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。2.4.2高级控制定时器22高级控制定时器(TIM1)由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。它适合多种用途,包含测输入信号的脉冲宽(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补PWM等)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是

4、完全独的,它们共享任何资源,它们可以同步操作。高级控制定时器(TIM1)可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。四个独立的通道可以用于:输入捕获;输出比较;产生PWM(边缘或中心对齐模式);单脉冲输出;反相PWM输出,具有程序可控的死区插入功能;配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0100%)。在调试模式下,计数器可以被冻结。很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。TIM1定时器的

5、功能包括:16位上,下,上/下自动装载计数器;16位可编程预分频器,计数器时钟频率的分频系数为165535之间的任意数值;4个独通道:-输入捕获;-输出比较;-PWM生成(边缘或中间对齐模式);-单脉冲模式输出;-死区时间可编程的互补输出。使用外部信号控制定时器和定时器互连的同步电;在指定数目的计数器周期之后更新定时器寄存器;刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态;如下事件发生时产生中断/DMA:-新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发);-触发事件(计数器启动,停止,初始化或者由内部/外部触发计数);-输入捕获;-输出比较;-刹车信号输入

6、。时基单元可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运读写仍然有效。时基单元包含:计数器寄存器(TIM1_CNT);预分频器寄存器(TIM1_PSC);自动装载寄存器(TIM1_ARR);周期计数寄存器(TIM1_RCR);自动装载寄存器是预先装载的。写或读自动重装载寄存器将访问预装载寄存器。根据在TIM1_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被永久地或在每次的更新事件U

7、EV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIM1_CR1寄存器中的UDIS位等于0时,产生新事件。更新事件也可以由软件产生。随后会详细描述每一种配置下更新事件的产生。计数器由预分频器的时钟输出CK_CNT驱动,仅当设置计数器TIM1_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。(有关更多的计数器使能的细节,请参见控制器的从模式描述)。注:真正的计数器使能信号CNT_EN是在CEN后的一个时钟周期后被设置。预分频器描述。预分频器可以将计数器的时钟频按1到65536之间的任意值分频。它是基于一个(在TIM1_PSC寄存器中的)16位寄存器控制的16

8、位计数器。因为这个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器的参数在下一次更新事件到来时被采用。图2-4和图2-5给出一些在预分频器工作时,改其参数的情况下计数器操作的例子。CNT-ENTimerdock=CKcntniwumuitootCounterregiswF74#Updateevent(UEV)PreMaierconingregisterAciteane#valueinTIM1PSCPrescaiartMirrsrPrescalercounter图2-4当预分频器的参数从1变到2时,计数器的时序图图2-5当预分频器的参数从1变到4时,计数器的时序图2.4.3小结经过比较和

9、针对设计需要,使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是完全独立的,不共享任何资源,可以同步操作。高级控制定时器(TIM1)还可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。因此该设计选择高级控制定时器(TIM1)。PWM概述PWM是PulseWidthModulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方

10、式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于PWM技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进

11、行编码。多数负载(无论是电感性负载还是电容性负载)需要的调制频率高10Hz,通常调制频率为1kHz到200kHz之间。占空比是接通时间与周期之比;调制频率为周期的倒数。目前,运动控制系统或电动机控制系统中实现PWM的方法主要有传统的数字电路方式、专用的PWM集成电路、单片机实现方式和可编程逻辑器件实现方式。用传统的数字电路实现PWM,电路设计较复杂,体积大,抗干扰能力差,系统的控制周期较长。专用的PWM集成电路或带有PWM的单片机价格较高。对于单片机中无PWM输出功能的情况,实现PWM将消耗大量的时间,大大降低了CPU的效率,而且得到的PWM信号精度不太高15。PWM模式脉冲宽调制模式可以产生

12、一个由TIM1_ARR寄存器确定频、由TIMl_CCRx寄存器确定占空比的信号。在TIMl_CCMRx寄存器中的OCxM位写入“11O”PWM模式1)或“111”PWM模式2),能够独立地设置每个通道工作在PWM模式,每个OCx输出一路PWM。必须通过设置TIM1_CCMRx寄存器OCxPE位使能相应的预装载寄存器,最后还要设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数或中心对称模式中)。因为仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIM1_EGI寄存器中的UG位来初始化所有的寄存器。OCx的极性可以

13、通过软件在TIM1_CCER寄存器中的CCxP位设置,它可以设置为高电平有效活和低电平有效oOCx输出通过CCxE、CCxNE、MOE、OSSI和OSSR位(在TIM1_CCER和TIM1_BDTR寄存器中)的组合控制。在PWM模式(模式1或模式2)下,TIM1_CNT和TIM1_CCRx始终在进行比较,(依据计数器的计数方向)以确定是否符合TIM1_CCRxWTIM1_CNT或者TIM1_CNTWTIM1_CCRx。根据TIM1_CR1寄存器中CMS位的状态,定时器能够产生边沿对齐的或中央对齐的PWM信号。PWM边沿对齐模式向上计数配置当TIM1_CR1寄存器中的DIR位为低的时候执行向上计

14、数。当TIM1_CNTTIM1_CCRx时参考信号OCxREF为低,否则为高。如果TIM1_CCRx中的比较值大于TIM1_ARR中的自动重装载值,则OCxREF保持为“1。该模式下不能产生0%的PWM波形。PWM中央对齐模式当TIM1_CR1寄存器中的CMS位不为00时为中央对齐模式(所有其他的配置对OCxREF/OCx信号都有相同的作用)。根据不同的CMS位的设置,比较标志可能在计数器向上计数时被置1、在计数器向下计数时被置1、或在计数器向上和向下计数时被置1TIM1_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。图3-2给出了一些中央对齐的PWM波形的例子TIM1_A

15、RR=8;PWM模式1;TIM1_CR1寄存器中的CMS=01,在中央对齐模式1时,当计数器向下计数时标志被设置。21COimferregislerCCxIFCMS=D1CMS=tCCMS=1IOOREFCCRs=-6CCkIFCCxIFCM5=D1CMS=1OCMS=11OCxREFCCRxBCCkIFcms=hiCMS=10CMS=I1OCnREFCCF&=CCkIFCMS=C1CMS=10CMS=11图3-2中央对齐的PWM波形(APR=8)3.1.2互补输出与死区插入高级控制定时器TIM1能够输出两路互补信号并且能够管理输出的瞬时关断和接通。这段时间通常被称为死区,应该根据连接到输出的

16、器件和它们的特性(电平转换的延时、电源开关的延时等)来调整死区时间。配置TIM1_CCER寄存器中的CCxP和CCxNP位,可以为每一个输出独立地选择极性(主输出OCx或互补输出OCxN)。互补信号OCx和OCxN通过下列控制位的组合进行控制:TIM1_CCER寄存器的CCxE和CCxNE位,TIM1_BDTR和TIM1_CR2寄存器中的MOE、OISx、OISxN、OSSI和OSSR位,带刹车功能的互补输出通道OCx和OCxN的控制位。特别的是,在转换到IDLE状态时(MOS下降到0)死区被激活。同时设置CCxE和CCxNE位将插入死区,如果存在刹车电,则还要设置MOE位。每一个通道都有一个

17、10位的死区发生器。参考信号OCxREF可以产生2路输出OCx和OCxN。如果OCx和OCxN为高有效: OCx输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟。 OCxN输出信号与参考信号相反,只是它的上升沿相对于参考信号的下沿有一个延迟。图3-4死区波形延迟大于负脉冲如果延迟大于当前有效的输出宽度(OCx或OCxN),则不会产生相应的脉冲。图3-3,3-4显示死区发生器的输出信号和当前参考信号OCxREF之间的关系(假设CCxP=0、CCxNP=0、M0E=1、CCxE=1并且CCxNE=1)。OCxREFOCxdelayOCxNdelay图3-3带死区插入的互补输出

18、OCxREFOCxOCxN3.2PWM输出的实现12STM32的高级定时器时钟TIM1CLK为固定72MHz,TIM1预分频为0x0(系统高速时钟不分频),所以TIM1计数器时钟频率为72MHzI/O口时钟为固定值50MHz,PA8、PA9、PA10、PAll设为推拉模式。TIM1在下面定义的频率下工作:TIM1频率=TIM1CLK/(TIM1_Period+1)=17.57KHz。TIM1CC1寄存器的值为0x7FFF,所以TIM1_CH1和TIM1_CH1N产生一个频率为17.57KHz的信号,这个信号的占空比为:TIM1_CH1占空比=TIM1_CCR1/(TIM1_Period+1)=

19、50%。TIM1CC2寄存器的值为0x3FFF,所以TIM1_CH2和TIM1_CH2N产生一个17.57KHz的信号,它的占空比为:TIM1_CH2占空比=TIM1_CCR2/(TIM1_Period+1)=25%。TIM1CC3寄存器的值为0x1FFF,所以TIM1_CH3和TIM1_CH3N产生一个17.57KHz的信号,它的占空比为:TIM1_CH3占空比=TIM1_CCR3/(TIM1_Period+1)=12.5%。TIM1波形可以在示波器上显示出来。输出信号观察下列引脚分别依次接到示波器上(两个一组),示波器接线正接触线下列引脚,负接触线接地(GND)。 TIM1_CH1pin(

20、PA8); TIM1_CH1Npin(PB13); TIM1_CH2pin(PA9); TIM1_CH2Npin(PB14); TIM1_CH3pin(PA10); TIM1_CH3Npin(PB15); TIM1_CH4pin(PA11)。第4章软件设计4.1开发环境4.1.1 STM32的开发软件STM32自问世至今,采用过如下软件,皆有利弊。IARIAR是STM32开发使用最多的软件平台。IAR官方提供IARforARM两种类型的版本供免费评估:32K学习版,只能支持编译32K目标代码,等效无时间限制;30天评估版,无编译代码限制。MDK自从keil被ARM收购以后,在keil中集成了A

21、RM自己的编译器,改名MDK。RIDE该软件支持GCC编译器开发STM32产品。该套开发板使用keilmdk370开发软件,该软件使用简单,keil是众多单片机应用开发的优秀软件之一,它集编辑编译仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面清晰,易学易懂。这里选用的是keilmdk370,4.1.2节着重介绍。4.1.2 MDK37011RealViewMDKCMiertocontrollerDevelopmentKit)是ARM公司最先推出的基于ARM微控制器的专业嵌入式开发工具。它采用了ARM的最新技术编工具RVCT,集成了享誉全球的uVisionIDE,因此特别易于使用,同时

22、具备非常高的性能。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者MDK包括符合工业标准的RealView编译工具、测试器以及实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。MDK提供启动代码生成向导提高开发效率;MDK提供强大的设备模拟器缩短开发周期:目标设备的所有组件都可仿真,代码可在整个设备上运行。完全的目标硬件仿真,完整的目标,高效指令集仿真,中断仿真,片内外围设备有ADC,DAC,EBI,Timers,UART,CAN,I2C,包含外部信号和I/O。充足的仿真信息,包含在设备数据库里。MDK提供高效的性能开发工具;MDK支持最新

23、的Cortex-M3处理器:Cortex-M3处理器是ARM公司推出的最新的针对微控制应用的内核,提供业界领先的高性能和低成本解决方案,将成为MCU应用的热点和主流。但是目前能支持Cortex-M3构架的开发工具很少,包括SDT,ADS1.2等多数开发工具都不支持MDK是目前性价比最高的支持Cortex-M3处理器的开发工具。MDK集成了Flash编程模块;MDK提供业界最好的卩VisionIDE易学易懂。4.2软件实现4.2.1设计标准该设计对TIM1定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为17.57KHZ。I/O口时钟为固定值50MHz,PA8、PA9、P

24、A10、PA11设为推拉模式。其中,通道1输出的占空比为50%,通道2输出的占空比为25%,通道3输出的占空比为12.5%。各通道互补输出为反相输出TIM1定时器的通道1到4的输出分别对应PA.08、PA.09、PA.10引脚,而通道1到3的互补输出分别对应PB.13、PB.14和PB.15引脚,这些处理器引脚在开发板上已经以插针形式引出。由于TIM1计数器的时钟频率为72MHz,各通道输出频率fTIM1为17.57KHz,根据:fTIM1=TIM1CLK/(TIM1_Period+1),可得到TIM1预分频器的TIM1_Period为OxFFFF。根据通道输出占空比TIM1_CCRx/(TI

25、M1_Period+1),可以得到各通道比较/捕获寄存器的计数值。其中:TIM1_CCR1寄存器的值0x7FFF、TIM1_CCR2寄存器的值为0x3FFF、TIM1_CCR3寄存器的值为0x1FFF。程序部分原代码:/*Channel1,2,3and4ConfigurationinPWMmode*/TIM1_OCInitStructure.TIM1_OCMode=TIM1_OCMode_PWM2;TIM1_OCInitStructure.TIM1_OutputState=TIM1_OutputState_Enable;TIM1_OCInitStructure.TIM1_OutputNStat

26、e=TIM1_OutputNState_Enable;TIM1_OCInitStructure.TIM1_Pulse=CCR1_Val;TIM1_OCInitStructure.TIM1_OCPolarity=TIM1_OCPolarity_Low;TIM1_OCInitStructure.TIM1_OCNPolarity=TIM1_OCNPolarity_Low;TIM1_OCInitStructure.TIM1_OCIdleState=TIM1_OCIdleState_Set;TIM1_OCInitStructure.TIM1_OCNIdleState=TIM1_OCIdleState_R

27、eset;TIM1_OC1Init(&TIM1_OCInitStructure);TIM1_OCInitStructure.TIM1_Pulse=CCR2_Val;TIM1_OC2Init(&TIM1_OCInitStructure);TIM1_OCInitStructure.TIM1_Pulse=CCR3_Val;TIM1_OC3Init(&TIM1_OCInitStructure);运行过程:(1) 使用KeiluVision3编译链接工程;(2) 点击MDK的Debug菜单,点击Start/StopDebugSession;(3) 通过示波器察看PA.08、PA.09、PA.10、PB.

28、13、PB.14、PB.15的输出波形,其中PA.08和PB.13为一组,PB.O9和PB.14为一组,PB.1O和PB.15为一组。134.2.2程序流程图整个设计程序流程如图4-1所示:14第5章测试及结果51JTAG仿真器介绍inJ-Link是支持仿真ARM内核芯片的JTAG仿真器。配合IAREWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。DQ电子推出的J-LinkV7仿真器采用原版固件,参照原版原理图,经过DQ团

29、队的长时间精工制作,板型合理,元件布局美观大方,走线严谨精致,并且每一个产品都经过功能和老化测试,功能完全与原版一致,支持在线升级。J-LinkARM主要特点:IAREWARM集成开发环境无缝连接的JTAG仿真器。支持所有ARM7/ARM9内核的芯片,以及cortexM3,包括Thumb模式。支持ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有的开发环境。下载速度高达ARM7:600kB/s,ARM9:550kB/s,通过DCC最高可达800kB/s*最高JTAG速度12MHz。目标板电压范围1.2V3.3V。自动速度识别功能。监测所有JTAG信号和目标板电压。完全即插即用。

30、使用USB电源(可接通J12跳线给目标板供电,出厂时未接通)。带USB连接线和20芯JTAG连接排线。支持多JTAG器件串行连接。标准20芯JTAG仿真插头。带J-LinkTCP/IPserver,允许通过TCP/IP网络使用J-Link支持的内核:ARM7TDMI(Rev1); ARM7TDMI(Rev3); ARM7TDMIS(Rev4); ARM720T; CORTEXM3。5.2测试在电脑主机USB接口上插入开发板的电源线和J-LINK的连接线,同时给示波器供电,示波器两个通道接线的负接线与开发板STM32的GND连接,正接线分别接通道n(n=l,2,3)和其互补通道。其中,通道1到3

31、的输出分别对应PA.08、PA.O9、PA.1O引脚,而通道1到3的互补输出分别对应PB.13、PB.14、PB.15引脚。前序工作准备好后,再在KeiluVision3环境里打开TIM1的工程,编译连接运行,观察示波器图像,并记录。165.3现象及结果通道1和其互补通道,频率为17.57kHz,占空比为50%,PWM输出显示如图5-1:Unnhn图5-1通道1与其互补通道的PWM输出图17图5-2通道2与其互补通道的PWM输出图通道2频率17.57kHz,占空比为25%,其互补通道频率17.57kHz,占空比为75%,PWM输出显示如图5-2。18通道3频率17.57kHz,占空比为12.5

32、%,其互补通道频率17.57kHz,占空比为87.5%,PWM输出显示如图5-3。图5-3通道3与其互补通道的PWM输出图19结论通过对TIM1定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为17.57KHZ。其中,通道1输出的占空比为50%,通道2输出的占空比为25%,通道3输出的占空比为12.5%。各通道互补输出为反相输出。TIM1定时器的通道1到3的输出分别对应PA.08、PA.09、PA.10引脚,而通道1到3的互补输出分别对应PB.13、PB.14和PB.15引脚,将这些引脚分别接入示波器正接线,GND引脚接示波器负接线,在示波器上看到了相应通道占空比的PWM输出。2021

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!