ARMA9接口技术PWM

一、PWM(pulse脉冲 width 宽度modulation 调制timer计数器)
可以用来调制一段特定的脉冲波形。
在这里插入图片描述
可以通过调节PWM控制器的寄存器的参数来调节所要输出波形的参数,来得到我们想要得到的波形(只能调宽度,不能调相幅)
二、
脉冲宽度调制寄存器工作原理:
在这里插入图片描述
我们EXYNOS_4412的PWM控制器里面有五个控制计数器(CONTROL LOGIC)0~3可以通过引脚去输出这个调制的波形。4不可以输出只能再SOC内部使用。
1)logic1和Logic2使用同一个一级分频器:可以设值一个八位的分频1~2^8(1-256)(234)共用一个。
2)每一个计数器有自己独立的二级分频器(1,2,4,8,16)倍分屏
3)然后用TCMFBn、TCNTBn去设置周期,和高电平的时间。
4)通过引脚去输出调制的脉冲
EG:
在这里插入图片描述
1、设置TCNTBn为159(周期)TCMPBn为109(高电平)
2、把TCNTBn的值放到一个递减计数器里面根据频率递减,并设置为低电平。
3、当TCNBn的值(159)在递减计数器里面被减至与TCPMBn(109)一样时,开始输出高电平。
4、当递减计数器里面的值被减为0时,递减计数器的值重新刷新为TCNTBn的值,并且重新输出低电平开始下一个周期。
这就是PWM调制一个周期的步骤。
SO影响PWM调制脉冲的周期(频率)有两个因数
1、我们写的TCNTB里面的值,设定的周期值。
2、我们递减计数器的递减频率(PCLOCK100M经过二次分频所得到的值,我们可以通过设置分屏去设置)

三、配置PWM寄存器。
在这里插入图片描述
1)TCFG0:设置一级分频
2)TCFG1:设置二级分频
3) TCON: pwm控制寄存器
4) TCNTB(0~4):设置对应的第0到4个PWM控制器的脉冲周期
5)TCMPB(0~4):设置对应的第0到4个PWM控制器的脉冲的高电平
6)TCNTO(0~4):递减计数器,只读
7)TINT_CSTAT :中断控制寄存器
四、蜂鸣器实验
蜂鸣器分为有源蜂鸣器和无源蜂鸣器。
在这里插入图片描述
有源蜂鸣器:就直接连高低电平,高电平就响,低点平就不响。
无源蜂鸣器:利用脉冲变化产生的电磁场与振膜相吸的原理产生声音。
并且随着脉冲频率的高低可以调节音调。
实现这个:
在这里插入图片描述
我们找到蜂鸣器的引脚为GPD0_0而且知道用的是第0个PWM控制器。
CONFIG REGISTER:
1)设置一级分频
在这里插入图片描述
【23:16】用于保护大功率电器保护,设置死区。(这里不用)
【15:8】PWM控制器2,3,4共用的同一个一级分频器prescaler1
[7:0]:PWM控制器0,1.共用的同一个一级分频器prescaler 0
所以我们要用TIMER 0就要设置PRESCALER 0的分频倍数。
我们要让我们的分频倍数为1Mhz,那么我们的PCLOCK为100000000hz,要分10000倍。
一级分频为100:
二级分频为:1,2,4,8,16.
比较好的组合就是100和1.
那么我们把一级分频设为250.
2)设置二级分屏
在这里插入图片描述
我们知道PWM下的五个控制器都有自己私有的二级分频器。
所以TCEG1寄存器下有五个四位来设置对应的分频。
我们设置TIMER0为4就可以了。设置【3:0】位
3)设置PWMTIMEER CONTROL
在这里插入图片描述
在这里插入图片描述

也是要控制timer 0就看timer0就可以了
【4】:enable/disable 死区。我们不用就不去写默认为0
【3】:Timer 0 auto reload on/off:自动重新加载的开关,前面说了,递减计数器减到0时会重新加载周期的值写进去:这就是RELOAD重载。如果这里写0只会生成一个周期的脉冲。所以要置1,就会一直生成脉冲。
【2】:反相电路的开关,打开之后我们写的高电平就会变成低电平,低电平就会变成高电平。我们这里不用默认为0
【1】:第一次手动把周期数和高电平数放到递减计数器里面,后面的会自动重载。所以,这里要写一。写完之后要立马改回0,因为有自动重载了,就不需要手动写了。而且要在设置完周期和高电平之后才能开。
【0】:TIMER 0:递减计数器的开关,可以通过开关递减计数器来控制是否产生波形。

4)
在这里插入图片描述
1、TCNTB0:设置周期我们就写一个一百吧。
2.TCMB0:设置高电平我们题目要求占空比为0.6 所以写60.
——————————————————————————
前面写的频率算法有问题
我们重新算一遍:
首先我们要一个频率为1000HZ脉冲信号即周期长度为0.001秒
我们的PCLOCK为100Mhz,经过两个分频器为了好算设为整数倍100。那么递减计数器的频率就为1mhz即一秒减一百万次。
那我们要写一个数,这个数以一秒减一百万次的速度减,再0.001秒的时候减为0,所以这个数为1000.
就1MHZ/1000HZ就好了。
代码:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值