PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)

文章目录

  • 前言
  • 一、PWM(脉宽调制)
  • 二、通过PWM控制蜂鸣器(PWM定时器操作产生脉冲信号)
    • 1.蜂鸣器电路及引脚
    • 2.流程
    • 3.代码实现
  • 总结


前言

本期和大家来分享一下S3C2440平台下PWM的使用原理,以及PWM控制板子蜂鸣器的具体过程;建立一个从认识PWM信号到对PWM信号使用的全过程,希望各位小伙伴们加油哦!


一、PWM(脉宽调制)

1、PWM一般指脉冲宽度调制。
2、PWM是Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。
3、它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式。
4、其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习PWM具有十分重要的现实意义。

在单片机中,pwm是脉宽调制器,制作频率和占空比均可调整的脉冲信号,通过指定引脚输出
时间:依赖脉冲信号,一个周期的时间 高低变化信号的时间

pwm电路工作原理:
电路按照固定频率对一个数值进行减法操作,并且控制引脚输出,当被减值和预设比较值相等时,引脚输出反转,继续减法操作,直到减为0

二、通过PWM控制蜂鸣器(PWM定时器操作产生脉冲信号)

1.蜂鸣器电路及引脚

以下是S3C2440蜂鸣器的原理图,可见蜂鸣器由GPB0来进行控制,因此GPB0口需要输出一个PWM波来实现对蜂鸣器的控制;
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第1张图片
接下来看一下GPB0对应的主控芯片的引脚功能,这里GPB0表示此引脚具有输入输出引脚的基本特性,TOUT0表示此引脚可以通过定时器来输出PWM信号:
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第2张图片

2.流程

(1)设置GPB0为PWM功能也就是(TOUT0);如下图所示:
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第3张图片
(2)固定的频率:电路要以一个固定的频率对其进行减法操作;
定时器输入时钟频率 = PCLK / {预分频值+1} / {分频值}
TCFG0 一级分频值(预分频值)
TCFG1 二级分频值(分频值)
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第4张图片
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第5张图片

(3). 被减值和比较值
TCNTB0 被减值初值 确定频率
TCMPB0 比较值 确定占空比
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第6张图片
TCNTO0 减法计数器的当前数值
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第7张图片
(4) 引脚输出信号,TCON 第2位(控制变相器)
电路使能
TCON 第0位 使能
第1位 手动更新(实时更新TCNTB0,TCMPB0到减法计数器,只需要更新一次)
第3位 自动更新(减为0时TCNTB0,TCMPB0到减法计数器)
在这里插入图片描述
PWM定时器产生周期方波驱动蜂鸣器(S3C2440裸机开发)_第8张图片

3.代码实现

接下里看一下通过定时器功能来实现引脚输出一个占空比为50%的波;这里需要注意的是如果是设置PWM输出模式,那么这里必须给TCMPB0 进行赋值,只有当单纯的使用PWM定时器的功能时是不需要给TCMPB0 进行赋值操作的;但是不论是哪一种情况,这里都需要将初始值手动更新给减法计数器,最后再启动自动重载功能,就不需要每次当TCNTB0 在减法计数器中减为零时进行手动更新的操作了;

代码如下(示例):

void pwm_init()
{
	GPBCON &= ~0x3;
	GPBCON |= 0x2;				//设置GPB0为pwm功能
	
	//目标  1k  占空比50%
	TCFG0 &= ~0xff;
	TCFG0 |= 24;
	TCFG1 &= ~0xf;			   //减法计数器频率=50M/(24+1)/2=1M
	TCNTB0 = 1000;  		   //被减值初值,确定频率(频率=1M/TCNTB0 = 1KHz)
	TCMPB0 = TCNTB0>>1;		   //向右平移一位表示将TCNTB0的值变为原来的一半
	TCON |= 1<<1; 			   //手动更新TCNTB0和TCMPB0到减法计数器
	TCON &= ~0xf;
	TCON |= 1<<3;  			   //开启启动更新
}

void pwm_start()
{
	TCON |= 1; //开始定时器
}

那么这里的现象也是非常简单的,实现的是蜂鸣器响的这么一个操作;


总结

本期主要分享的使用PWM定时器输出周期方波以此来驱动板载的蜂鸣器,主要具体介绍了输出PWM方波的整个详细流程,希望各位小伙伴们能够认真掌握这个流程,必要的时候可以用示波器对信号进行捕捉,来验证自己设置的信号究竟是否正确;最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

你可能感兴趣的:(ARM体系结构与接口技术,arm开发,linux,嵌入式硬件,ARM汇编,定时器)