基于STM32定时器产生
PWM的研究
时间:2021.02.05 创作:欧阳科 作者姓名:222专业班级:222指导老师:222
摘要
随着科技水平的提高,ARM的应用越来越广泛。With the develop of technology, ARM is used in various situations.
旨在对ARM的深入学习,论文对 STM32定时器产生PWM(脉冲宽度调制)输出进行了研究。On the intention of studyon ARM,timer of STM32 produce pulses PWM (width modulation) is studied in this paper.
PWM就是某个频率占空比的方波,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、甚至某些音频放大器,因此研究PWM技术具有十分重要的现实意义。PWMis the square wave which has a sure dutycycle and frequency. Its application
fieldsincludemeasurement,communication,power control and transform,motor control,servocontrol, even
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
someaudioamplifier.Therefore it is important to researchPWMtechnology.
本设计采用 STM32定时器产生PWM。It is easy to use the timer of STM32 to produce PWM output.
STM32的PWM由定时器产生,PWM的周期即定时器定时的时间,通过计算方波的频率,占空比,配置定时器和IO口,最后用示波器显示相应通道占空比的方波即可。PWMis producedby the timer of STM32.The cycle of PWMis the timer’s regular time.By calculating the frequency of square wave, dutycycle, configuring the timer and IO, thenuseoscilloscope displayed the PWM.
经对STM32开发板的研究学习,通过对STM32定时器等的配置,用示波器显示,完成了PWM输出。Basedonthe STM32,by configuring the timer of STM32,PWMis displayed by oscilloscope.
关键词
STM32,定时器,PWM
Study for the outputof PWM produce by timer of
STM32Based onMDK
Abstract:
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
With the development of technology, ARM is used in various situations.On the intention of study on ARM,timer of STM32 produce pulses PWM (width modulation) is studied in this paper. PWMis the square wave which has a sure dutycycle
and
frequency.
Its
application
control even to
fieldsincludemeasurement,communication,power and
transform,motor
control,servocontrol,
it
is
someaudioamplifier.Therefore important
researchPWMtechnology. It is easy to use the timer of STM32 to produce PWM output. PWMis producedby the timer of STM32.The cycle of PWMis the timer’s regular time.By calculating the frequency of square wave, dutycycle, configuring the timer and IO, thenuseoscilloscope displayed the PWM. Basedonthe STM32,by configuring the timer of STM32,PWM is displayed by oscilloscope. Key words:
STM32,timer,PWM
目录
第1章前言5
1.1 ARM应用背景5 1.2 研究内容6
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
1.3 研究成果7
第2章 STM32处理器概述8 2.1 STM32简介8 2.2 内部资源10
2.3 CORTEXM3内核简介10 2.4 STM32定时器简介12 2.4.1 通用定时器12
??
??????
高级控制定时器
2.4.3 小结15
第3章 PWM概述16
??
????
原理错误!未指定书签。
3.1.1 PWM 模式16
3.1.2 互补输出与死区插入193.2 PWM输出的实现21 第4章软件设计22 4.1 开发环境22
4.1.1 STM32的开发软件22
错误!未指定书签。 错误!未指定书签。
26
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
4.2.2 程序流程图25 第五章测试及结果26 5.1 JTAG仿真器介绍26 5.2 测试27
5.3 现象及结果28 结论31 致谢32 参考文献33
第1章 前言
1.1 ARM应用背景
如今,学习一种处理器的就有许多ARM内核的处理器可供使用,现在社会已步入嵌入式学习阶段。在嵌入式领域,8位处理器已经不再胜任一些复杂的应用,比如GUI,TCP/IP,FILESYSTEM等,而ARM芯片凭借强大的处理能力和极低的功耗,非常适合这些场合。现在越来越多的产品在选型的时候考虑到使用ARM处理器,ARM的应用是相当的广泛。
ARM的嵌入式控制应用如:汽车、电子设备、保安设备、大容量存储器、调制解调器、打印机等。一个典型的ARM
欧阳科创编 2021.02.05 LCD LED 键盘 欧阳科创编 2021.02.05
嵌入式工业控制系统的功能模块如图11所示。 输入输出
图11ARM嵌入式工业控制系统的功能模块
目前已有超过85%的无线通信设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。ARM在此方面的应用如:手提式计算机、移动电话、PDA等。
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上进行了优化,并获得广泛支持。
ARM技术在目前流行的数字音频播放器、数字机顶盒、游戏机、数码相机、数字式电视机、GPS、机顶盒中得到广泛采用。现在流行的数码相机和打印机中绝大部分采用ARM技术,手机中的32位SIM智能卡也采用了ARM技术。如图12所示是基于ARM技术的数码相机的功能模块[9]。
存储器 ADC CCD ARM 处理器 控制电路和编码电路 主机 接口 LCD 控制器
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
图12基于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的原
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
理及实现方法;第四章介绍了本研究的软件设计模块;第五章介绍了测试方法和结果。 1.3 研究成果
配置好各通道后,编译运行工程;点击MDK 的Debug菜单,点击Start/Stop Debug Session;通过示波器察看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/CortexM3/32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC 、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
个CAN。
STM32F103xx增强型系列工作于40℃至+105 ℃的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。
完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:
·电机驱动和应用控制 ;
·医疗和手持设备 ; ·PC外设和GPS平台;
·工业应用:可编程控制器、变频器、打印机和扫描仪 ; ·警报系统,视频对讲,和暖气通风空调系统 ; 2.1.1STM32F103C8的参数
STM32开发板核心芯片的参数如表21
表21 器件功能和配置(STM32F103xx 增强
型)
芯片引脚图如图22:
图22 STM32F103xx增强型LQPFP48
管脚图
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
2.2 内部资源
STM32有丰富的内部资源,如下所示:
·RealView MDK(Miertocontroller Development Kit)基于ARM微控制器的专业嵌入式开发工具; ·内置闪存存储器; ·内置SRAM;
·嵌套的向量式中断控制器(NVIC); ·外部中断/事件控制器(EXTI); ·时钟和启动; ·自举模式; ·DMA;
·RTC(实时时钟)和后备寄存器 ; ·窗口看门狗; ·I2C总线;
·通用同步/异步接受发送器(USART); ·串行外设接口(SPI); ·控制器区域网络(CAN); ·通用串行总线(USB); ·通用输入输出接口(GPIO); ·ADC(模拟/数字转换器); ·温度传感器;
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
·串行线JTAG调试口(SWJDP)。 2.3 CortexM3内核简介
CortexM3内核包含一个适用于传统Thumb和新型Thumb2指令的译码器、一个支持硬件乘法和硬件除法的先进ALU、控制逻辑和用于连接处理器其他部件的接口。CortexM3处理器是首款基于ARMv7M架构的ARM处理器。中央CortexM3内核使用3级流水线哈佛架构,运用分支预测、单周期乘法和硬件除法功能实现了出色的效率(1.25DMIPS/MHz)。CortexM3处理器是一个32位处理器,带有32位宽的数据路径、寄存器库和基于传统ARM7处理器的系统只支持访问对齐的数据,沿着对齐的字边界即可对数据进行访问和存储。CortexM3处理器采用非对齐数据访问方式,使非对齐数据可以在单核访问中进行传输。
CortexM3处理器是专为那些对成本和功耗非常敏感但同时对性能要求又相当高的应用而设计的。凭借缩小的内核尺寸和出色的中断延迟性能、集成的系统部件、灵活的配置、简单的高级编程和强大的软件系统,CortexM3处理器将成为从复杂的芯片系统到低端微控制器等各种系统的理想解决方案。表23为CortexM3处理器与ARM7作比较。
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
表23 CortexM3与ARM7相比较
2.4 STM32定时器简介 2.4.1 通用定时器[22]
STM32F103xx增强型系列产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比较、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比较或PWM通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。
在调试模式下,计数器可以被冻结。任一个标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。
2.4.2 高级控制定时器[22]
高级控制定时器(TIM1)由一个 16位的自动装载计数器组成,它由一个可编程预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补 PWM等)。
使用定时器预分频器和 RCC时钟控制预分频器,可以
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是完全独立的,它们不共享任何资源,它们可以同步操作。
高级控制定时器(TIM1)可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。四个独立的通道可以用于: ·输入捕获 ; ·输出比较 ;
·产生PWM(边缘或中心对齐模式) ; ·单脉冲输出 ;
·反相PWM输出,具有程序可控的死区插入功能; 配置为16位标准定时器时,它与TIMx定时器具有相同的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。
在调试模式下,计数器可以被冻结。很多功能都与标准的TIM定时器相同,内部结构也相同,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。 TIM1 定时器的功能包括:
·16位上,下,上/下自动装载计数器 ;
·16位可编程预分频器,计数器时钟频率的分频系数
为 1~65535之间的任意数值;
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
·4个独立通道:
−输入捕获; −输出比较;
−PWM生成(边缘或中间对齐模式); −单脉冲模式输出;
−死区时间可编程的互补输出。
·使用外部信号控制定时器和定时器互连的同步电
路;
·在指定数目的计数器周期之后更新定时器寄存器; ·刹车输入信号可以将定时器输出信号置于复位状态
或者一个已知状态;
·如下事件发生时产生中断/DMA:
−更新:计数器向上溢出/向下溢出,计数器初始
化(通过软件或者内部/外部触发);
−触发事件(计数器启动,停止,初始化或者由内
部/外部触发计数);
−输入捕获; −输出比较; −刹车信号输入。
时基单元
可编程高级控制定时器的主要部分是一个 16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。
计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运行读写仍然有效。 时基单元包含:
·计数器寄存器(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后的一个
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
时钟周期后被设置。 预分频器描述 。
预分频器可以将计数器的时钟频率按 1到 65536之间的任意值分频。它是基于一个(在 TIM1_PSC寄存器中的)16位寄存器控制的 16位计数器。因为这个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器的参数在下一次更新事件到来时被采用。
图24和图25给出了一些在预分频器工作时,更改其参数的情况下计数器操作的例子。
图24 当预分频器的参数从 1变到 2时,计数器
的时序图
图25 当预分频器的参数从 1变到 4时,计数器的时序图 2.4.3小结
经过比较和针对设计需要,使用定时器预分频器和 RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒至几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是完全独立的,不共享任何资源,可以同步操作。 高级控制定时器(TIM1)还可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。因此该设计选择高级控制定时器(TIM1)。
第3章 PWM概述
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
3.1 原理
PWM是Pulse Width Modulation的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此研究基于PWM技术的正负脉宽数控调制信号发生器具有十分重要的现实意义。
PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
多数负载(无论是电感性负载还是电容性负载)需要的调制频率高10Hz,通常调制频率为1kHz到200kHz之间。占空比是接通时间与周期之比;调制频率为周期的倒数。
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
目前,运动控制系统或电动机控制系统中实现PWM的方法主要有传统的数字电路方式、专用的PWM集成电路、单片机实现方式和可编程逻辑器件实现方式。用传统的数字电路实现PWM,电路设计较复杂,体积大,抗干扰能力差,系统的控制周期较长。专用的PWM集成电路或带有PWM的单片机价格较高。对于单片机中无PWM输出功能的情况,实现PWM将消耗大量的时间,大大降低了CPU的效率,而且得到的PWM信号精度不太高[15]。 3.1.1 PWM 模式
脉冲宽度调制模式可以产生一个由 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位来初始化所有的寄存器。
欧阳科创编 2021.02.05
欧阳科创编 2021.02.05
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_CR1寄存器的DIR位为高时执行向下计数。 在 PWM模式 1,当 TIM1_CNT>TIM1_CCRx时参考信 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 号 OCxREF为低,否则为高。如果 TIM1_CCRx中的比较值大于 TIM1_ARR中的自动重装载值,则OCxREF保持为“1"。该模式下不能产生 0%的 PWM波形。 PWM 中央对齐模式 当TIM1_CR1寄存器中的CMS位不为 00时为中央对齐模式(所有其他的配置对OCxREF/OCx信号都有相同的作用)。根据不同的CMS位的设置,比较标志可能在计数器向上计数时被置 1、在计数器向下计数时被置 1、或在计数器向上和向下计数时被置 1。TIM1_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。 图32给出了一些中央对齐的PWM波形的例子 · TIM1_ARR=8 ; · PWM模式 1; · TIM1_CR1 寄存器中的 CMS=01,在中央对齐模式 1 时,当计数器向下计数时标志被设置。[21] 图32 中央对齐的 PWM波形(APR=8) 3.1.2互补输出与死区插入 高级控制定时器 TIM1能够输出两路互补信号并且能够管理输出的瞬时关断和接通。这段时间通常被称为死区,应该根据连接到输出的器件和它们的特性(电平转换的延时、电源开关的延时等)来调整死区时间。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 配置 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位。每一个通道都有一个 10位的死区发生器。参考信号 OCxREF可以产生 2路输出 OCx和 OCxN。如果 OCx和 OCxN为高有效: · OCx 输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟。 · OCxN 输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个延迟。 如果延迟大于当前有效的输出宽度(OCx或OCxN),则不会产生相应的脉冲。 图33,34显示了死区发生器的输出信号和当前参考信号 OCxREF之间的关系(假设 CCxP=0、CCxNP=0、MOE=1、CCxE=1并且 CCxNE=1)。 图33 带死区插入的互补输出 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 图34 死区波形延迟大于负脉冲 3.2 PWM输出的实现[12] STM32的高级定时器时钟TIM1CLK为固定72MHz, TIM1 预分频为 0x0(系统高速时钟不分频), 所以TIM1计数器时钟频率为72MHz。I/O口时钟为固定值50MHz,PA8、PA9、PA10、PA11设为推拉模式。 TIM1 在下面定义的频率下工作: TIM1 频率= TIM1CLK/(TIM1_Period + 1) = 17.57 KHz。 TIM1 CC1 寄存器的值为0x7FFF, 所以 TIM1_CH1 和 TIM1_CH1N 产生一个频率为 17.57KHz的信号,这个信号的占空比为: TIM1_CH1 占空比= TIM1_CCR1 /(TIM1_Period + 1) = 50%。 TIM1 CC2 寄存器的值为 0x3FFF, 所以 TIM1_CH2 和 TIM1_CH2N 产生一个 17.57KHz 的信号,它的占空比为: TIM1_CH2 占空比 = TIM1_CCR2 / (TIM1_Period + 1)= 25%。 TIM1 CC3 寄存器的值为 0x1FFF, 所以 TIM1_CH3 和TIM1_CH3N 产生一个 17.57KHz 的信号,它的占空比为: TIM1_CH3 占空比= TIM1_CCR3 / (TIM1_Period + 1) = 12.5%。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 TIM1 波形可以在示波器上显示出来。 输出信号观察 下列引脚分别依次接到示波器上(两个一组),示波器接线正接触线下列引脚,负接触线接地(GND)。 ·TIM1_CH1 pin (PA8); · TIM1_CH1N pin (PB13); · TIM1_CH2 pin (PA9); · TIM1_CH2N pin (PB14) ; · TIM1_CH3 pin (PA10); · TIM1_CH3N pin (PB15); · TIM1_CH4 pin (PA11)。 第4章软件设计 4.1开发环境 4.1.1STM32的开发软件 STM32自问世至今,采用过如下软件,皆有利弊。 ·IAR IAR是STM32开发使用最多的软件平台。IAR官方提供IAR for ARM 两种类型的版本供免费评估:32K学习版,只能支持编译32K目标代码,等效无时间限制;30天评估版,无编译代码限制。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 ·MDK 自从keil被ARM收购以后,在keil中集成了ARM自己的编译器,改名MDK。 ·RIDE 该软件支持GCC编译器开发STM32产品。该套开发板使用keilmdk370开发软件,该软件使用简单,keil是众多单片机应用开发的优秀软件之一,它集编辑编译仿真于一体,支持汇编,PLM语言和C语言的程序设计,界面清晰,易学易懂。 这里选用的是keilmdk370,4.1.2节着重介绍。 4.1.2MDK370[11] RealView MDK(Miertocontroller Development Kit)是ARM公司最先推出的基于ARM微控制器的专业嵌入式开发工具。它采用了ARM的最新技术编工具RVCT,集成了享誉全球的μVision IDE,因此特别易于使用,同时具备非常高的性能。它适合不同层次的开发者使用,包括专业的应用程序开发工程师和嵌入式软件开发的入门者。MDK包括符合工业标准的Real View编译工具、测试器以及实时内核等组件,支持所有基于ARM的设备,能帮助工程师按照计划完成项目。 ·MDK提供启动代码生成向导——提高开发效率; 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 ·MDK提供强大的设备模拟器——缩短开发周期: 目标设备的所有组件都可仿真,代码可在整个设备上运行。完全的目标硬件仿真,完整的目标,高效指令集仿真,中断仿真,片内外围设备有ADC,DAC,EBI,Timers,UART,CAN,I2C,包含外部信号和I/O。充足的仿真信息,包含在设备数据库里。 ·MDK提供高效的性能开发工具; ·MDK支持最新的CortexM3处理器: CortexM3处理器是ARM公司推出的最新的针对微控制应用的内核,提供业界领先的高性能和低成本解决方案,将成为MCU应用的热点和主流。 但是目前能支持CortexM3构架的开发工具很少,包括SDT,ADS1.2等多数开发工具都不支持。MDK是目前性价比最高的支持CortexM3处理器的开发工具。 ·MDK集成了Flash编程模块; ·MDK提供业界最好的μ Vision IDE—易学易懂。 4.2软件实现 4.2.1设计标准 该设计对TIM1定时器进行控制,使之各通道输出插入死区的互补PWM输出,各通道输出频率均为17.57KHz。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 I/O口时钟为固定值50MHz,PA8、PA9、PA10、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为0xFFFF。根据通道输出占空比 TIM1_CCRx/(TIM1_Period + 1),可以得到各通道比较/捕获寄存器的计数值。其中:TIM1_CCR1寄存器的值0x7FFF、TIM1_CCR2寄存器的值为0x3FFF、TIM1_CCR3寄存器的值为0x1FFF。 程序部分原代码: /* Channel 1, 2,3 and 4 Configuration in PWM mode */ TIM1_OCInitStructure.TIM1_OCMode = TIM1_OCMode_PWM2; TIM1_OCInitStructure.TIM1_OutputState = TIM1_OutputState_Enable; 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 TIM1_OCInitStructure.TIM1_OutputNState = 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_Reset; 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) 使用Keil uVision3 编译链接工程; (2) 点击MDK 的Debug菜单,点击Start/Stop Debug Session; 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 (3) 通过示波器察看PA.08、PA.09、PA.10、PB.13、PB.14、PB.15的输出波形,其中PA.08和PB.13为一组,PB.09和PB.14为一组,PB.10和PB.15为一组。 4.2.2程序流程图 整个设计程序流程如图41所示: 初始化 TIM1设置 各通道配置为PWM模式 否 是 TIM1计数使能 否 是 输出使能 读通道数据 第5章测试及结果 输出 5.1JTAG仿真器介绍[11] JLink是支持仿真ARM内核芯片的JTAG仿真器。配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9内核芯片的仿真,通过RDI接口和各集成开发环境无缝连接,操作方便、连接方便、简单易学,是学习开发ARM最好最实用的开发工具。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 DQ电子推出的JLinkV7仿真器采用原版固件,参照原版原理图,经过DQ团队的长时间精工制作,板型合理,元件布局美观大方,走线严谨精致,并且每一个产品都经过功能和老化测试,功能完全与原版一致,支持在线升级。 JLinkARM主要特点: ·IAR EWARM集成开发环境无缝连接的JTAG仿真 器。 ·支持所有ARM7/ARM9内核的芯片,以及 cortexM3,包括Thumb模式。 ·支持ADS,IAR,KEIL,WINARM,REALVIEW等几乎所有 的开发环境。 ·下载速度高达ARM7:600kB/s,ARM9:550kB/s,通过 DCC 最高可达 800 kB/s*最高JTAG速度 12MHz。 ·目标板电压范围1.2V-3.3V。 ·自动速度识别功能。 ·监测所有JTAG信号和目标板电压。 ·完全即插即用。 ·使用USB电源(可接通J12跳线给目标板供电,出 厂时未接通)。 ·带USB连接线和20芯JTAG连接排线。 ·支持多JTAG器件串行连接。 ·标准20芯JTAG仿真插头。 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 ·带JLinkTCP/IPserver,允许通过TCP/IP网络使用 JLink 支持的内核: ·ARM7TDMI(Rev 1); ·ARM7TDMI(Rev 3); ·ARM7TDMIS(Rev 4); ·ARM720T ; ·CORTEXM3。 5.2 测试 在电脑主机USB接口上插入开发板的电源线和JLINK的连接线,同时给示波器供电,示波器两个通道接线的负接线与开发板STM32的GND连接,正接线分别接通道n(n=1,2,3)和其互补通道。其中,通道1到3的输出分别对应PA.08、PA.09、PA.10引脚,而通道1到3的互补输出分别对应PB.13、PB.14、PB.15引脚。前序工作准备好后,再在Keil uVision3 环境里打开TIM1的工程,编译连接运行,观察示波器图像,并记录。 5.3 现象及结果 通道1和其互补通道,频率为17.57kHz,占空比为50%, 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 PWM输出显示如图51: 图51 通道1与其互补通道的PWM输出图 通道2频率17.57 kHz,占空比为25%,其互补通道频率17.57 kHz,占空比为75%, PWM输出显示如图52。 图52 通道2与其互补通道的PWM输出图 通道3频率17.57 kHz,占空比为12.5%,其互补通道频率17.57 kHz,占空比为87.5%, PWM输出显示如图53。 图53 通道3与其互补通道的PWM输出图 结论 通过对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.02.05 欧阳科创编 2021.02.05 本论文从最初的选题到系统设计、程序编写直到论文的撰写过程中都得到了刘易老师的悉心指导与指正,您细心教导和热心关怀使得我能够顺利完成本文。同时,刘易老师在每次论文检查过程中都极其负责任,提出很好的意见和建议,使得我的论文有了更完善的体系结构和更丰富的内容。刘老师热心的工作态度、严谨的治学态度,也使我受益匪浅,终生难忘。 同时要感谢我们测控专业陈茂林同学,你细心地给我分析该设计的设计流程,耐心地讲解程序运行过程,并给设计的不足提出很好的建议和方针,是你的帮助,让我对本设计理解更透彻,在此表示衷心地感谢. 毕业在即,大学四年我过的很充实快乐,大学刚开始的时候,在不熟悉的环境中,感觉很迷茫,不知道怎样走过自己的四年大学生涯,是班主任王敏老师给我了很大的帮助,让自己的目标更清晰,在后面的两年里,接触学习很多专业知识,班主任周建斌老师给予我们的关心,给我们鼓舞,让自己在学习上有了很多自信,还有很多专业课老师,刘易老师,周伟老师,王磊老师,吴旖旎老师等谢谢你们给予我学习上的指导和帮助,是你们的孜孜不倦,让我成长了许多。 大学里我并不孤独,在室友和同学们陪伴下,我度过了愉快的四年,在此衷心感谢大家! 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 参考文献 [1] 康华光.电子技术基础模拟部分第四版[M].北京:高等教育出版社,1999.6. [2] 阎石.数字电子技术基础第四版[M].北京:高等教育出版社,1999.6. [3]王福瑞等.单片微机测控系统设计大全[M].北京航空航天大学出版社,1998(331-337). [4]宁改娣,杨拴科.DSP控制器原理及应用[M].科学出版社,. [5]周立功等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,.1. [6]周立功等.ARM嵌入式系统实验教程[M].北京:北京航空航天大学出版社,.1. [7]唐清善.ProtelDXP高级实例教程[M].中国水利水电出版社,.4. [8]罗浩等.一种新的基于ARM的数据采集系统设计[J].信阳师范学院学报(自然科学版),.4. [9] 秦伟等.基于ARM 处理器的数据采集系统的设计[J].自动化技术与应用. 年第10 期. [10] 杜春雷.ARM体系结构与编程.清华大学出版社,. [11] 李宁.ARM开发工具ReaIView MDK使用入门[M].北京航空航天大学出版社,. 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 [12] 李宁.基于MDK的STM32处理器开发应用[M].北京航空航天大学出版社,. [13]刘黎明等.单片机与嵌入式系统应用[J].英文刊名MICROCON TROLLER&EMBEDDED SYSTEM. (7). [14] 赵葵银,王辉,吴俊.电压空间矢量控制的三相PWM整流器的研究[J].上海第二工业大学学报,(2):4350. [15]吴安顺.高效率抑制PWM逆变器谐波的梯形调制信号[J],电气传动.1987,No6,P10~15. [16] Malinowski Mariusz.Jasin'ski Marek,Kazmierkowski Marian P.Simple Direct Power Control of ThreePhase PWM Rectifier Using SpaceVector Modulation[J].IEEE Transactions on Industrial, Electronics,,51(2):447454. [17] K.S.RAJASHEKARA等.Microprocessoy Based Sinusoidal PWM Imverter by DMA Transfer[J].IEEE.Trans.Ind Electrol,Vol.IE29,No1,1982 P46~51. [18] GIVSEPPE S.BUJA AND GIOVANNI B.INDRI.Optimal Pulsewidth Modulation for Feeding Ac Motors[J].IEEE Trans.Ind Appl,Vol,IA13,No1,1977 P38~44.[19]S.R.BOWES等.New PWM Switching Strategy for Microprocessor Controlled Inveter Drives [1986 J ]P237 .IEE ~ PROCEEDINGS,Vol.133,Pt.B,No4 254.[20]S.R.BOWES等.Suboptimal Switching Strategies for 欧阳科创编 2021.02.05 欧阳科创编 2021.02.05 Microprocessor_Controlled PWM Inverter Drives[J].IEE PROCEEDINGS,Vol.132,Pt.B,No3 1985 P133~148. [21] STM32F10xxx TIM1 application examples[DB/OL]. [22] ARM®based 32bit MCU STM32F103xxFirmware library[DB/OL]. [23] Mediumdensity performance line ARMbased 32bit MCU interfaces[DB/OL]. [24] STM32F103xx Handbook[EB/OL]. 时间:2021.02.05 创作:欧阳科 欧阳科创编 2021.02.05 因篇幅问题不能全部显示,请点此查看更多更全内容