PWM在各个编程中都非常的重要,在学习32单片机,FPGA等中都有学习到,本次文章为介绍汇编语言编写频率或占空比可调的PWM波,从更加底层的方面介绍和去了解pwm波生成的过程,基于S3C2410X/S3C2440X。
目录
一、PWM定时器整体
1.1 定时器整体分析
1.2定时器寄存器配置输出
二、寄存器详解
2.1定时器配置寄存器0
2.2 定时器配置寄存器1
编辑 2.3 定时器控制寄存器
2.4 定时器计数缓冲寄存器与比较寄存器
三、程序编程
3.1 通过PWM组件定时器2控制PWM输出频率100KHZ、占空比位10/100 – 90/100波形
3.2 PWM组件的定时器2控制PWM输出频率为3000-15000HZ、占空比位4/5的波形。
一、PWM定时器整体
1.1 定时器整体分析
这里可以看到系统所拥有的定时器资源,拥有俩个带死区的pwm,俩个不带死区的pwm和一个内部使用,没有输出的定时,其中主要是依靠其系统时钟PCLK进行多次分频后通过比较输出pwm,pwm输出网上有很多基础知识可以去查看,在汇编中需要我们配置相关的寄存器从而控制其分频系数大小、是否使能、是否输出、是否复位等一系列操作,相关寄存器配置完全后才能正常输出pwm具体整体图见图1.1所示;(把图仔细理解来便可以进行下一步了)
图1.1 PWM定时器控制器组件
1.2定时器寄存器配置输出
我们要配置PWM输出我们主要配置定时器配置寄存器(TCFG)、定时器控制寄存器(TCON)定时器缓冲寄存器(TCNTB)、定时器比较寄存器(TCMPB)、定时器观察寄存器(TCNTO)等以控制和查看PWM定时器的工作,其过程见图1.2所示;
图1.2 PWM配置输出过程
二、寄存器详解
2.1定时器配置寄存器0
定时器配置寄存器0(TCFG0)配置定时器0-4的预分频系数并决定死区长度,可读/写
我们看定时器结构可以知道: 输入频率= PCLK / (预分频值+1)/分频数
定时器配置寄存器TCFG0各位含义 ,可以看到T1和T0是有8位一起决定的,而T2、T3、T4由另外8为决定的,2^8=256,所以分频可以为(0-255)+1分频;需要输出PWM波这个预分频需要考虑好所使用的定时器后如何配置其分频系数。
位 |
31-24 |
23-16 |
15-8 |
7-0 |
TCFG0 |
保留 |
DZL死区长度 |
PRC1预分频系数1 |
PRC0预分频系数0 |
含义 |
保留 |
8位确定死区长度 |
8位决定T4、T3、 T2预分频器值 |
8位决定T1、T0 的预分频器值 |
2.2 定时器配置寄存器1
在查看PWM输出的整体结构图后第一步是配置好预分频数后接下来便是配置分频器系数了,这里不像TCFG0,多个定时器“绑一起”,这里各个定时器是独立的
大家可以看到寄存器的是用四位来配置选择1/2,1/4,1/8,1/16,有些人便会疑惑:“我用俩位就可以决定的为什么要用四位来决定呢” ,其实这是因为4位计算机是最好处理的,所以用的是四位而不是俩位,这里要注意到定时器分频都是独立配置的。
2.3 定时器控制寄存器
配置好了预分频系数和分频器数那么输入f就确定了,接下来便是配置定时器的其他工作了,TCON主要控制定时器T0-T4的工作,可读/写。
当你选择好哪个定时器输出PWM波,那需要在所对应的位上配置好,主要有定时器的启动/停止,确定是否手动更新,是否输出反转,是否自动重装等 操作。
2.4 定时器计数缓冲寄存器与比较寄存器
在前面我们配置好了输入频率f ,了解了定时器的工作寄存器的配置,接下来便是要输出一定占空比的PWM波,也称为脉冲宽度调制,主要的俩个为一个周期的大小和高电平的大小,那么这俩个就由TCNTBn和TCMPBn决定; PWM输出占空比= TCMPBn / TCNTBn
三、程序编程
3.1 通过PWM组件定时器2控制PWM输出频率100KHZ、占空比位10/100 – 90/100波形
这里我都给了注释: 唯一一点是关闭定时器,书上是rTCON=0x0我认为这样并不能关闭定时器2而是关闭定时器0,所以我这里写的是rTCON=0x000;其div便是一个pwm的周期也就是TCNTBn的大小。
3.2 PWM组件的定时器2控制PWM输出频率为3000-15000HZ、占空比位4/5的波形。
这里和上面是类似的,PWM输出有俩大重要参数,一个是频率,一个是占空比,把握好这俩个你才能更好的输出你想要的PWM波,前面和后面的配置是类似的,只是工作的部分代码不同,大家可以好好对比对比便能发现了。
文章来源:https://www.toymoban.com/news/detail-492067.html
该为学习嵌入式汇编语言的学习,对于了解更加底层的寄存器编写程序能够让我们更加了解整个系统的工作机理从而更好的编写程序,也为之后其他学习打好基础。文章来源地址https://www.toymoban.com/news/detail-492067.html
到了这里,关于产生频率或者占空比可调的PWM波【汇编语言】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!