S3C6410之PWM介绍

 在分析PWM驱动的实现之前,我们需要看看6410的芯片手册中有关PWM章节,知道PWM的产生方式和控制方法,知道相关的一些寄存器才能知道设置那些寄存器,都应该赋什么值,下面就是其中的一部分,主要是芯片手册的内容,没写有关PWM的全部,主要是我们稍候的PWM驱动主要是针对蜂鸣器的使用,所以选取了相关的内容,感兴趣的可以自己去阅读芯片手册。

       这一章主要是讲述S3C6410X RISC微处理器内部的PWM TIMER的功能和用法。

        S3C6410X RISC微处理器有5个32位的定时器。这些定时器在ARM子系统中主要是用来产生内部中断。另外,定时器0和定时器1包含了PWM功能,可以用来驱动一个外部I/O信号。定时器0和定时器1具有可选的死区发生器的功能,可以用来支持更多的设备。定时器2,3,4是内部定时器,没有输出引脚。


PWM支持如下特性:
     *五个32位的定时器;
     *在第一级为PCLK提供了两个8位的时钟预分频器,在第二级为预分频的时钟和外部时钟提供5个时钟分频器和倍频器;
     *对每个PWM都有独立的可编程时钟选择逻辑;
     *两个独立可编程占空比控制和极性的PWM通道;
     *支持自动加载模式和单脉冲模式;
     *支持外部输入来启动PWM;
     *两个PWM输出上都有死区发生器;
     *支持DMA传输;
     *可选脉冲或电平中断;
    PWM支持两种操作模式:
     *自动装载模式
      基于可编程占空比和极性产生连续的PWM脉冲。
     *单脉冲模式
      基于可编程占空比和极性产生单个脉冲。
     提供了16个特殊功能寄存器来控制PWM的功能。PWM是可编程输出的。我们可以通过APB来访问PWM内部的16个特殊功能寄存器。

      S3C6410之PWM介绍_第1张图片

                     图32-1 描述为独立的PWM通道的时钟产生流程。

       定时器0和定时器1共享一个可编程的8位预分频器,提供给PCLK第一级的分频。定时器2,3,和4共享另外一个8位的预分频器。每个定时器都包含一个私有的时钟分频器,提供了第二级的时钟分频(通过2,4,8或者16进行预分频)。可选的是,定时器可以从外部引脚选择时钟源。定时器0和1可以选择外部时钟TCLK0.定时器2,3和4可以选择TCLK1。每一个定时器都有自己的被时钟驱动的32位减计数器。减计数器最初是通过定时器计数缓冲寄存器(TCNTBn)装载的。当减计数器到达0,定时器就会向CPU请求中断,标示定时器操作完毕。当减计数器到达0,TCNTBn里面的数值可以自动的装载到减计数器中,开启下一个周期。然而,如果定时器停止了,例如:在定时器运行的状态通过清除TCONn寄存器中定时器使能位,那么,TCNTBn中的数值就不会被装载到减计数器中了。
     脉宽调制(PWM)的功能要用到TCMPBn寄存器里面的数值。当减计数器中的数值和定时器控制逻辑中的比较寄存器的数值匹配的时候,定时器控制逻辑将会改变输出极性。因此,比较寄存器决定了PWM输出的开启时间(或者是关闭时间)。TCNTBn和TCMPBn寄存器都是双缓冲的,这样就允许我们在一个周期之间改变定时器的参数。新的值将会在这个周期结束之后生效。

PWM的操作

        一个8为的预分频器和一个4位的分频器使得可以输出如下频率:

S3C6410之PWM介绍_第2张图片


控制PWM的特殊功能寄存器:

S3C6410之PWM介绍_第3张图片

你可能感兴趣的:(S3C6410之PWM介绍)