S5P6818PWM实验 一、PWM概念 PWM(Pulse Width Modulation):脉冲宽度调制。 占空比:就是输出的PWM中,高电平保持的时间与该PWM的时钟周期的时间之比。 二、PWM应用 它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量,通信,功率控制与变换等许多领域。脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。 常见应用有:电机控制,DAC输出等 三、S5P6818PWM概述 S5P6818有5路32位PWM定时器。这些定时器为ARM子系统提供外部中断。另外,Timers 0,1,2,3,包括PWM功能并且驱动外部I/O引脚。PWM定时器0有一个可选的死区产生器,支持驱动大电流设备的能力。Timer4是外部定时器没有输出引脚。 定时器使用APB-PCLK作为时钟源。Timers 0和1共享一个8位可编程的预分频器,位PCLK提供第一级分频。Timers 2,3和4共享另外一个8位预分频器。每个定时器有自己私有的的时钟分配器,提供一个二级时钟分频(分频值为1,2,4,8,16)。 每个定时器都有一个32位递减计数器,通过定时器时钟驱动。递减计数器初始值加载从TCNTB0。当递减计数器到达0时,定时器中断请求产生并通知CPU,定时器操作完成。当定时器递减计数器到达0时,相对应的TCNTBn中的值自动加载到递减计数器中开始下一个周期。然而,如果定时器停止,例如,通过清除定时器TCONn的使能位,在定时器处于运行模式时,TCNTBn中的值不在加载到定时器中。 PWM功能使用TCMPB0寄存器的值。定时器控制逻辑改变输出电平如果递减计数器的值和比较寄存器的值相匹配在定时器控制逻辑。因此,比较寄存器决定PWM输出的高低电平时间。 四、S5P6818框图 file:///C:\Users\Administrator\AppData\Local\Temp\ksohtml\wpsD54D.tmp.jpg 五、S5P6818 PWM控制蜂鸣器硬件电路图 file:///C:\Users\Administrator\AppData\Local\Temp\ksohtml\wpsD57D.tmp.jpg 六、相关寄存器分析 TCFG0l Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x00h, Reset Value = 0x0000_0101 | | | | | | | | | | | | | | | | | | Prescaler 1 value for Timer 2, 3 and 4 | | | | | Prescaler 0 value for timer 0 & 1 | |
定时器输入时钟频率 = PCLK/({prescaler value + 1})/{divider value}
{prescaler value} = 1 to 255 {divider value} = 1, 2, 4, 8, 16 Dead Zone Length = 0 to 254 NOTE: If Dead Zone Length is set as "n", Real Dead Zone Length is "n + 1" (n = 0 to 254). Source clock of PCLK is BUS_DPLL in BLK_MIF TCFG1l Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x04h, Reset Value = 0x0000_0000 | | | | | | | | Select Mux input for PWM Timer 2
0000 = 1/1
0001 = 1/2
0010 = 1/4
0011 = 1/8
0100 = 1/16
0101 = External TCLK1
0110 = External TCLK1
0111 = External TCLK1 | |
TCONl Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x08h, Reset Value = 0x0000_0000 | | | | | TIMER 2 AUTO RELOAD
ON/OFF | | | 0 = One 1 = Interval Mode -Shot (Auto-Reload) | | TIMER 2 OUTPUT
INVERTER ON/OFF | | | 0 = Inverter Off 1 = TOUT2 Inverter-On | | | | | 0 = No Operation 1 = Update TCNTB2,TCMPB2 | | | | | 0 = Stop
1 = Start Timer 2 | | TCNTB2l Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x24h, Reset Value = 0x0000_0000 | | | | | | | | Timer 2 Count Buffer Register | |
TCMPB2l Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x28h, Reset Value = 0x0000_0000 | | | | | | | | Timer 2 Compare Buffer Register | |
TCNTO2l Base Address: 0xC001_8000h (PWM) l Address = Base Address + 0x2Ch, Reset Value = 0x0000_0000 | | | | | TIMER 2 COUNT OBSERVATION | | | Timer 2 Count Observation Register | |
|