OK6410之PWM使用

喜欢ヅ旅行 2022-06-11 06:10 377阅读 0赞
  1. s3c6410PWM分别有两个定时器产生两路。PWM的时钟源可以自行选择来自于两个时钟分别是PCLKXpwmEXLK外部时钟。从时钟源到定时器计数的过程我们看图1,如果时钟源来自于PCLK时钟线(一般频率为66MHz),那么时钟必须经过一个8位的分频计数器和多路复用模块,最终进入逻辑计数单元,通过对计数器的对比输出PWM波(如果没有设置死区时间)。如果使用外部时钟那么只要选择外部时钟源,则直接送给计数模块进行比较输出。这样就结束了分频和时钟源的选择。
  2. PWM的计数模块具有重载和单脉冲模式,并且支持DMA(这里暂时不提)。整个计数模块主要有两个寄存器TCNTBnTimer Count Buffer register)和TCMPBnTimer Count Observation register)。其中TCNTBn是一个向下计数的寄存器,TCMPBn这个寄存器一直与TCNTBn做比较。当TCNTBn>TCMPBnPWMOUT=0,反之TCNTBn<=TCMPBnPWMOUT=1.

1339253597_2413.JPG

  1. 1 PWM整体模块
  2. 在计数当中难免会有突发的状态,比如修改计数值TCNTBn或者比较值TCMPBn。在寄存器名字命名的时候是否注意过Buffer registerBuffer即缓冲的意思,也就是说这种寄存器其实是有两个寄存器共用一个地址(可以叫做影子寄存器)。一个是我们可以操作的另一个是在工作我们无法操作的寄存器。我们在修改的时候修改的是一个可以修改的我们要进行一个触发才能将我们要修改的数据放到工作寄存器中去。但是放进去的时间是要等到工作寄存器这一周期完成。我们通过图2我们可以理解一下。![1339254851_8023.JPG][]
  3. 其实产生PWM波很简单,配置的过程很简单,只要学过单片机的同学都能做到我就不讲了,涉及到pwm的寄存器也就几个。在这里需要提一下的是TCONTimer Control Register)寄存器中的第1和第9位,分别是更新TCNTB0TCMPB0这两个寄存器的位,当我们要修改数据时先修改数据然后更新数据当更新数据完成我们又要将它失能掉,防止不必要的修改错误产生。

发表评论

表情:
评论列表 (有 0 条评论,377人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OK6410 裸机中断最简单代码

    近来想学ARM开发,使用了S3C6410核的OK6410开发板,为了学习ARM的底层技术,想从裸机开始学习,结果一路挫折,问题多多,经过很长一段时间的摸索也没有太多成果,因为平

    相关 OK6410PWM使用

             s3c6410的PWM分别有两个定时器产生两路。PWM的时钟源可以自行选择来自于两个时钟分别是PCLK、XpwmEXLK外部时钟。从时钟源到定时器计数的过程我