当前位置:首页 > 单片机 > 单片机
[导读]这两天应工作需求研究了一下M3处理器的PWM(脉宽调制)实现对蜂鸣器的异步控制。鉴于阻塞式对蜂鸣器的控制比较耗时,影响用户体验,因此对原有阻塞式控制方案进行了改善,提出了异步控制蜂鸣器的实现方法。以下主要对

这两天应工作需求研究了一下M3处理器的PWM(脉宽调制)实现对蜂鸣器的异步控制。鉴于阻塞式对蜂鸣器的控制比较耗时,影响用户体验,因此对原有阻塞式控制方案进行了改善,提出了异步控制蜂鸣器的实现方法。以下主要对实现中需要注意的重点知识以及所遇到的问题进行了讨论。

PWM波利用M3的定时器产生,出于对平台资源的有效利用,选择定时器1用来输出脉宽调制信号。这就引出了本文的重点,M3定时器的应用。

M3的定时器资源一共有11个,其中两个高级定时器(Timer1和Timer8)、4个通用定时器(Timer2-Timer5)、2个普通定时器(Timer6-Timer7)、2个看门狗定时器以及一个SysTick定时器。相对于普通定时器来说,高级定时器的功能更为强大,相对应的应用自然更为复杂,这个主要体现在电机控制中,比如直接输出具有调节死区时间的PWM。不过本项目的应用不涉及此点,也就不做讨论了。

M3的高级定时器理解为一个可供用户编程的预分频器驱动16bit的计数器。主要功能包括利用它的输入捕获模式可以实现对输入信号脉冲宽度的测量,利用PWM和输出比较模式可以实现波形输出。

M3具有复杂的时钟系统,它的外设都有自己独立的时钟控制,这就造成在应用上相对比较复杂一些,但是这为系统在降低功耗方面带了不小的优势。在实际应用中我们可以关掉那些不用的外设,这样就可以大大的降低功耗。因此,要想熟练的掌握M3,就必须对它的时钟树要很清楚,定时器的应用当然也不例外。我们就从时钟开始一步步的揭秘M3定时器的奥妙之处。

高级定时器1的时钟信号流向通过图1可以清楚的看到。M3处理器使用外部8M高速时钟,然后通过内部的倍频因数为9的锁相环将频率加倍到72M,将此时钟作为系统时钟。系统时钟通过分频因数为1的AHB预分频器将72M时钟提供给AHB总线,AHB总线通过分频因数为1的APB2预分频器将72M的时钟提供给APB2总线。APB2总线将时钟通过一个倍频器,与其他倍频器不同的是这个倍频器根据APB2分频因数有系统自动设置,如果APB2分频因数为1,则保持时钟不变,否则进行2倍频。通过倍频之后,接将72M的时钟信号提供给高级定时器1,而时钟信号在定时器内部又通过PSC的分频来驱动定时器1的计数器。我们对定时器的操作实际上主要是通过设置PSC的分频值和计数器的装载值来达到准确的定时和输出需要的波形等功能。。

图1 Timer1的时钟信号流向

理解了定时器的工作原理及时钟信号工作情况后,我们就来具体分析一下如何应用。从上文可以看出要想让M3的定时器工作首先必须得打开时钟,因此在系统进行初始化后得到72M的时钟后,打开Timer1的时钟。这个可以通过设置PB2ENR寄存器的第二位实现,后者也可以利用库函数RCC_APB2PeriphClockCmd直接使能。接下来就需要设置计数器初始装载值TIME1_ARR、分频器PSC,具体设置根据公式1进行设置。例如定时器1输入时钟为72M时,设置PSC(预分频器)为7199,当ARR(计数器装载数)为9时,一次中断我们就可以得1ms的定时。至于怎么配置中断函数以及中断函数然后编写此处不做赘述,详情可以参考STM32中文参考手册。

Time = (1+ARR)*(1+PSC)/Fsys

公式1 定时器时间计算公式

接下来讨论一下PWM的产生,在STM32定时器1-8中除了Timer6和Timer7不能产生PWM外,其它都可以产生。高级定时器1和8可以产生7路的PWM波,其它的可以产生4路。对于波的输出频率也利用公式1进行计算,至于波的占空比取CCR/ARR。我们以图2中3路不同占空比的波来看,它们的频率都一样约为1.2khz,计算值与测量值存在13hz的误差,这个是处理器本身的精度造成的。对于第一个波形来说ARR = 59999、CCR = 30000,就得到了约等于1.2Khz且50%占空比的波。而第二个波的ARR = 59999、CCR = 15000,就得到了频率约为1.2khz且25%占空比的波。


图2 Time1 PWM波仿真图

既然需要输出波对Beep进行控制,那么就需要进行IO口的设置,基本IO口的设置大家应该比较清楚,这里只介绍比较容易出错的地方,这就是关于管脚重映射,具体设置见图表1。由于在本项目中Beep是连接到PA11的,由表1可见PA11没有完全映像,因此对它只进行复用设置或者设置成部分映像。这里对时钟的设置除了打开PA口时钟,还需打开复用时钟。

表1 定时器1管脚复用功能映像



除了以上设置之外当然还有一些基本设置比如设置计数器向上加模式、极性为正、输出使能、使用PWM模式1或者模式2、使能预装载寄存器等基本设置。

因为要实现异步控制,因此还利用了M3的定时器2,利用定时器2对PWM波的输出进行控制。定时器2的应用与1类似,只需配置成定时模式即可。根据需要定时一定的时间,在中断处理函数中关掉定时器1即可。

转载请注明出处。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将对pwm的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: pwm 脉冲宽度调制

在下述的内容中,小编将会对PWM控制器的相关消息予以报道,如果PWM控制器是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: pwm 控制器 pwm控制器

电磁式蜂鸣器是蜂鸣器的一种,区别于压电式蜂鸣器,电磁式蜂鸣器是利用电磁线圈对蜂鸣片的作用来发声的电子响讯器,用来给电子产品作发声器件。

关键字: 电磁 蜂鸣器 响讯器

蜂鸣器是一种发声设备,可以将音频信号转换为声音信号。通常由直流电压供电。它广泛用作警报器,计算机,打印机和其他电子产品中的声音设备。

关键字: 蜂鸣器 计算机 打印机

大家要了解有源和无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。

关键字: 有源 无源 蜂鸣器 震荡源

蜂鸣器也叫压电陶瓷蜂鸣片,是压电陶瓷中应用最广的产品之一。

关键字: 蜂鸣器 极性 压电陶瓷蜂鸣片

蜂鸣器的作用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

关键字: 蜂鸣器 复印机 报警器

在下述的内容中,小编将会对PWM的相关消息予以报道,如果PWM是您想要了解的焦点之一,不妨和小编共同阅读这篇文章哦。

关键字: pwm 变换器

在这篇文章中,小编将为大家带来PWM变换器的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: pwm 变换器 pwm变换器

pwm控制器将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对pwm控制器的相关情况以及信息有所认识和了解,详细内容如下。

关键字: pwm 控制器 mppt
关闭
关闭