开发板FS4412-PWM 实验

目录

一、PWM简介

蜂鸣器工作原理

二、Exynos4412下的PWM控制器

三、PWM寄存器详解

四、PWM编程


一、PWM简介

蜂鸣器工作原理

蜂鸣器

  • 有源蜂鸣器只要接上额定电源就可以发出声音 (GPIO控制

  • 无源蜂鸣器利用电磁感应原理,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜(20-20000HZ可被人耳接收)发声(PWM控制

无源蜂鸣器的控制方式: 

1.GPIO控制

CPU会陷入到Delay中,浪费CPU资源,方法不好用

while(1)
{   
    GPX2.DAT=GPX2.DAT | (1 << 7); 
    Delay(1000000);
    GPX2.DAT=GPX2.DAT & (~(1 << 7));                                                       c        
    Delay(1000000);
}   

2.PWM控制

PWM 即脉冲宽度调制,通过对脉冲的宽度进行调制,来获得所需要波形

          2.1PWM参数

1.周期

2.占空比

二、Exynos4412下的PWM控制器

4412芯片手册中的PWM控制

5个PWM控制器,前4个能产出连续的PWM控制 外部设备,最后一个没有引脚与外部有连接,只能用于芯片内部,本质还是一个递减计数器和看门狗差不多;PWM0可用于大电流设备;

使用PCLK时钟,一级分频器8位分频器可编程(1-256倍分频);time0和time1共用一个分频器;每个定时器都有各自的二级分频器,2/4/8/16倍

 举例说明PWM原理

产生一个低电平50,高电平109,周期就是159 占空比:109/159

  • 初始化TCNTBn寄存器设置周期159, 初始化TCMPBn寄存器初始化设置高电平所占时间109
  • 使能定时器
  • TCNTBn的值加载到递减计数器中,然后在引脚上输出低,如果递减后的值到和TCMPBn值一样时开始输出高电平
  • TCNTBn的值当减到0时,PWM会产生中断(这个实验没用到)
  • 递减计数器为0后会自动加载TCNTBn,再重新一个周期
  • 周期不仅和TCNTBn大小有关还和递减计数器的频率(PCLK时钟源分频后)有关

 PWM控制器逻辑框图

 

反向输出功能

默认是先输出低电平再高电平,反向输出时,先输入高再低

默认是先50低电平,后109高电平,开启反转后就是先159-109高电平,159-0低电平

、PWM寄存器详解

TCFG0 一级分频;设置死区宽度保护大功率大电流 设备

TCFG1  二级分频

1.TCFG0:一级分频;设置死区宽度保护大功率大电流 设备

 2.TCFG1:二级分频

 3.TCON 使能控制器

 

4.TCNTB0寄存器:控制time0的周期

TCMPB0:控制time0的高电平时间,需要注意的是TCMPB一定比TCNTB小

四、PWM编程

实验目的:

#include "exynos_4412.h"
void Delay (unsigned int Time)
{
	while (Time-- );
}



int main()
{
	//1.将GPD0_0设置成PWM的输出引脚
	GPD0.CON = GPD0.CON & (~(0xF )) | (0x2);
	//2.设置PWM的一级分频
	PWM.TCFG0 = PWM.TCFG0 & (~(0xFF)) | 99;
	//3,设置二级分频,二级分频为1倍,递减计数器递减频率为 
	//= PLCK/(99+1)/1=1M/S
	PWM.TCFG1 = PWM.TCFG1 & (~(0xFF));
	//4.设置PWM0 为自动重装载,使其能够产生连续的脉冲信号
	PWM.TCON = PWM.TCON | (1 << 3);
	//5.设置pwm的频率500hz
	PWM.TCNTB0 = 2000;
	//6.设置PWM的占空比为50%
	PWM.TCMPB0 = 1000;
	//7.将TCNTB0的值手动装载到递减计数器中
	PWM.TCON = PWM.TCON | (1 << 1);
	//8.关闭手动更新,使其自动重装载
	PWM.TCON = PWM.TCON & (~(1<<1));
	//9.使能PWM0,递减计数器开始递减
	PWM.TCON =PWM.TCON |1 ;

	while(1)
	{
		PWM.TCON =PWM.TCON | 1;
		Delay(1000000);
		PWM.TCON =PWM.TCON & (~(1));
		Delay(1000000); 
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值