实验4PWM控制蜂鸣器实验1、实验目的�熟悉了解S3C2410APWMtimer的工作原理。�掌握S3C2410APWMtimer使用方法。2、实验设备�PC机、ARM仿真器、GEC2410开发板。3、实验内容�设置S3C2410A的timer0,时钟周期为300~3400Hz,即音频频率,控制蜂鸣器。4、实验原理脉宽调制(PWM)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。模拟电路模拟信号的值可以连续变化,其时间和幅度的分辨率都没有限制。9V电池就是一种模拟器件,因为它的输出电压并不精确地等于9V,而是随时间发生变化,并可取任何实数值。与此类似,从电池吸收的电流也不限定在一组可能的取值范围之内。模拟信号与数字信号的区别在于后者的取值通常只能属于预先确定的可能取值集合之内,例如在{0V,5V}这一集合中取值。模拟电压和电流可直接用来进行控制,如对汽车收音机的音量进行控制。在简单的模拟收音机中,音量旋钮被连接到一个可变电阻。拧动旋钮时,电阻值变大或变小;流经这个电阻的电流也随之增加或减少,从而改变了驱动扬声器的电流值,使音量相应变大或变小。与收音机一样,模拟电路的输出与输入成线性比例。尽管模拟控制看起来可能直观而简单,但它并不总是非常经济或可行的。其中一点就是,模拟电路容易随时间漂移,因而难以调节。能够解决这个问题的精密模拟电路可能非常庞大、笨重(如老式的家庭立体声设备)和昂贵。模拟电路还有可能严重发热,其功耗相对于工作元件两端电压与电流的乘积成正比。模拟电路还可能对噪声很敏感,任何扰动或噪声都肯定会改变电流值的大小。数字控制通过以数字方式控制模拟电路,可以大幅度降低系统的成本和功耗。此外,许多微控制器和DSP已经在芯片上包含了PWM控制器,这使数字控制的实现变得更加容易了。简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。大多数负载(无论是电感性负载还是电容性负载)需要的调制频率高于10Hz。设想一下如果灯泡先接通5秒再断开5秒,然后再接通、再断开……。占空比仍然是50%,但灯泡在头5秒钟内将点亮,在下一个5秒钟内将熄灭。要让灯泡取得4.5V电压的供电效果,通断循环周期与负载对开关状态变化的响应时间相比必须足够短。要想取得调光灯(但保持点亮)的效果,必须提高调制频率。在其他PWM应用场合也有同样的要求。通常调制频率为1kHz到200kHz之间。硬件控制器许多微控制器内部都包含有PWM控制器。例如,Microchip公司的PIC16C67内含两个PWM控制器,每一个都可以选择接通时间和周期。占空比是接通时间与周期之比;调制频率为周期的倒数。执行PWM操作之前,这种微处理器要求在软件中完成以下工作:设置提供调制方波的片上定时器/计数器的周期,在PWM控制寄存器中设置接通时间设置PWM输出的方向,这个输出是一个通用I/O管脚启动定时器使能PWM控制器虽然具体的PWM控制器在编程细节上会有所不同,但它们的基本思想通常是相同的。通信与控制PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。PWM广泛应用在多种系统中。作为一个具体的例子,我们来考察一种用PWM控制的制动器。简单地说,制动器是紧夹住某种东西的一种装置。许多制动器使用模拟输入信号来控制夹紧压力(或制动功率)的大小。加在制动器上的电压或电流越大,制动器产生的压力就越大。可以将PWM控制器的输出连接到电源与制动器之间的一个开关。要产生更大的制动功率,只需通过软件加大PWM输出的占空比就可以了。如果要产生一个特定大小的制动压力,需要通过测量来确定占空比和压力之间的数学关系(所得的公式或查找表经过变换可用于控制温度、表面磨损等等)。例如,假设要将制动器上的压力设定为100psi,软件将作一次反向查找,以确定产生这个大小的压力的占空比应该是多少。然后再将PWM占空比设置为这个新值,制动器就可以相应地进行响应了。如果系统中有一个传感器,则可以通过闭环控制来调节占空比,直到精确产生所需的压力。总之,PWM既经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。5、S3C2410APWM时钟控制器S3C2410A有5个16bit的时钟(timer)timer0、1、2和3有PWM(PulseWidthModulation)功能。Timer4只是内部时钟而没有外部引脚。Timer0和timer1共用一个8bit的prescaler,而timer2、3、4共享另外一个8bit的prescaler,每个时钟都有一个时钟分频器。输出的波形占空比可调,可以采用自动加载的方式启动timer。5.1预分频器和分割器定时器0和定时器1分享同一个8位的预分频器,定时器2,3和4分享一个预分频器。8位预分频器和一个独立的4位分割器组合起来可以产生如下频率的定时器时钟源输出:分频器5.2PWM调制PWM脉冲频率由TCNTBn决定。PWM脉冲宽度值则由TCMPBn的值来决定。如下图所示。如果要得到一个较低的PWM脉宽输出值,就可以减少TCMPBn的值。要得到一个更高的PWM的输出值,增加TCMPBn的值。如果输出反转器被使能,增加和减少的结果也将是反转的。基于双缓冲器的特性,下一个PWM周期的TCMPBn值可以通过ISR或其它手段,在当前PWM周期中的任何一点写入。5.3S3C2410APWM控制器寄存器TCFG0――时钟配置寄存器0定时器输入时钟频率=PCLK/{预分频值}/{分割值}{预分频值}=1~255;{分割值}=2,4,8,16,32TCFG1――时钟配置寄存器1TCON――时钟控制寄存器TCNTB0――timer0计数缓存寄存器TCMPB0――timer0比较缓存寄存器TCNTB1――timer1计数缓存寄存器TCMPB1――timer1比较缓存寄存器6、实验电路图GEC2410开发板将S3C2410A的TOUT0端口(定时器0的脉冲输出端口,GPB0)与蜂鸣器的脉冲输入端口相连。蜂鸣器的接口电路图如下:使TOUT0输出300~3400Hz的时钟信号来驱动蜂鸣器。7、实验步骤1.连接好实验环境,将串口线一端接到PC机,另一端接到GEC2410的UART0接口(即P1口);打开串口超级终端dnw.exe,设置串口BaudRate为115200,选择COM1。3.打开ADSCodeWarrior,在ADSCodeWarrior中打开实验工程GEC2410_SONG.mcp;并对工程进行编译。3.在串口超级终端DNW.exe程序中,选择GEC2410_EINT目录下的bin文件下载到SDRAM。4.下载结束后,会提示是否要立即运行,这时输入“Y”,执行程序。5.修改程序,通过PC键盘改变蜂鸣器鸣叫频率,+号表示增加频率,-号表示降低频率,ESC表示退出。测试主函数:5.修改程序,通过PC键盘改变蜂鸣器鸣叫频率,实现电子琴控制,ESC表示退出。测试主函数: