1 / 19

Pulse Width Modulation

Pulse Width Modulation. PWM Features. 特征概要 4通道, 每通道各有一独立 16 位计数器, 一个通用时钟产生器,提供13种不同时钟 一个模 n 计数器提供11种时钟 两个独立线性分频器可对模 n 计数器输出再分频 通道编程 独立的使能/禁止命令 独立时钟选择 独立周期和占空比, 双缓冲系统 可编程选择输出信号极性 可编程选择输出信号是中间对齐还是左对齐. View of the external PWM’ Signals. 4 路与 PIOA 复用的输出 专用大电流输出引脚

berit
Download Presentation

Pulse Width Modulation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pulse Width Modulation

  2. PWM Features • 特征概要 • 4通道, 每通道各有一独立16位计数器, • 一个通用时钟产生器,提供13种不同时钟 • 一个模n计数器提供11种时钟 • 两个独立线性分频器可对模n计数器输出再分频 • 通道编程 • 独立的使能/禁止命令 • 独立时钟选择 • 独立周期和占空比, 双缓冲系统 • 可编程选择输出信号极性 • 可编程选择输出信号是中间对齐还是左对齐

  3. View of the external PWM’ Signals • 4 路与PIOA复用的输出 • 专用大电流输出引脚 • 与 PA0,PA1 ,PA2复用 (对应 于PWM0, PWM1 和 PWM2) ,允许用户驱动外部电路的电流达到 16 mA (一般引脚为8mA)

  4. PWM into the AT91SAM7S • PMC 必须首先被编程以使能PWMC的时钟 • 置位PMC_PCER 的 bit 10 (PID10). • PIO 控制器需被编程以使能相应的引脚功能 • 如下所示, 使用 PIO_PDR (PIO Disable Register) 禁止PIO对应的输出线 • 选择对应的 Peripheral A 或 B于 PIO_ASR 或 PIO_BSR, 以将PWM的各通道输出到正确的引脚.

  5. PWM CHANNEL PWM Architecture • PWM 外设可被分成如下两部分 • 1°- PWM控制器由下列部件构成 • 时钟发生器 => 从主时钟 (MCK)产生需要的时钟 • 通道控制 => 使能/禁止通道 • 中断发生器 • 2°- 通道模块: • 时钟选择器 • 通道运行方式管理器 • 占空比与频率控制 • 计数值 • 更新寄存器

  6. PWM PWMC: Clock Generator PWM_MR (Mode Register) 27 24 23 16 11 8 7 0 PREB DIVB PREA DIVA 1, ½,1/3,..,1/255 1, ½,1/3,..,1/255 CLKA MCK CLKB

  7. PWM PWM PWMC: Channel and Interrupt Management • 对PWMC, 用户可以单独使能/禁止每一个通道 PWM_DIS (Disable Register) PWM_ENA (Enable Register) 3 0 3 0 CHID3 CHID2 CHID1 CHID0 CHID3 CHID2 CHID1 CHID0 PWM_SR (Status Register) 3 0 CHID3 CHID2 CHID1 CHID0 • The user can use the same control panel at interrupt level plus the dedicated mask register PWM_IDR (Interrupt Disable Register) PWM_IER (Interrupt Enable Register) 3 0 3 0 CHID3 CHID2 CHID1 CHID0 CHID3 CHID2 CHID1 CHID0 PWM_IMR (Interrupt Mask Register) PWM_ISR (Interrupt Status Register) 3 0 3 0 CHID3 CHID2 CHID1 CHID0 CHID3 CHID2 CHID1 CHID0

  8. Set up the PWMC in your Application • 禁止PIO输出引脚,正确设置相关的复用引脚功能 PIO and PWM lines • 处于省电考虑, PWM 的时钟在默认的情况下是关闭的 Enable the PWM Clock • 设置PWM所用的时钟 Set up the Clock Generator Channel Enabling • 这些任务可在设置好通道后完成 Interrupt Enabling

  9. PWM CHANNEL Set up a PWM Channel • 每个通道: • 通道模式寄存器: 选择通道运行模式 • 占空比寄存器: 16-bit 值用于选择信号的占空比 • 周期寄存器: 16-bit 值用于选择信号的周期 • 计数寄存器: 计数值 • 更新寄存器: 用于修改的特定寄存器, 可同时更新周期或占空比寄存器 PWM Channel 0,1,2 or 3 PWM Controller PeriodControl PWM pad Comparator Update Register Duty CycleControl CLKA ClockSelector CLKB MCK…. down to MCK/1024 Counter Interrupt

  10. CHANNEL 步骤一: 时钟选择 PWM_CMR (Channel Mode Register) • 对通道, 通道模式寄存器允许用户从13个时钟信号中选择信号作为时钟源 3 0 CLKA CPRE CLKB Channel’sCounter ClockGenerator

  11. CHANNEL What is the best clock source ? • PWM 占空比数量是第一要素: • 用户必须知道其需要的最小占空比精度. 占空比控制通过一个 16-bit寄存器 PWM_CDTY 来实现. PWM_CDTY (Channel Duty Cycle Register) N value 15 0 CDTY • 占空比数量也依赖于写入周期寄存器的值: • M 值是完成一个通道周期(或中间对齐模式的半周期)所需要的事件(脉冲)数量 PWM_CPRD (Channel Period Register) M value 15 0 CPRD PWM通道周期与M值周期相同. N 可以取自 0 到 M . M值越高, 能达到的N值也越高, 但数量就越少(周期变长).

  12. PWM CHANNEL 不同PWM精度的例子 • 第一个选择方式, 占空比精度为周期的1/75 Clock Generator CLKA Clock Generator on(/64) = Channel PeriodRegister = 75 750 kHz 10 kHz CLKB 48 MHz • 同样的周期,这种选择方式的占空比精度可达周期的1/4800 Clock Generator CLKA Clock Generator on(1) = Channel PeriodRegister = 4800 48 MHz 10 kHz CLKB 48 MHz

  13. CHANNEL 如何修改一个通道的周期或者是占空比 ? • 在PWM控制器中使能相应的PWM通道之前 (PWM_ENA Register):用户可以直接写入值到相应通道的 PWM_CDTYx 或PWM_CPRDx, 即可修改通道周期与占空比 • 一旦PWM通道被使能:就不能写入到前面所说的寄存器. 用户必须使用通道更新寄存器去更新前面所说的值. • 更新寄存器中的值将根据PWM_CMR 中CPD 的值被写入到PWM_CDTY 或 PWM_CPRD PWM_CMRx (Channel Mode Register) 10 3 0 CPD CPRE PWM_CDTYx 0 PWM_CUPDx PWM_CUPDx 1

  14. CHANNEL 通道更新寄存器: PWM_CUPD • 为何采用: • 在 运行模式, 只能通过 PWM_CUPD来更新占空比与周期, • 周期或者占空比的更新将 同步 于当前计数周期的结束, • 如何使用: • 在写入到 PWM_CUPD之前, 用户必须确认最后一次的更新是否起效. 否则, 前一次的值将被本次修改覆盖. • 使用 PWM_CMR 寄存器中的位CPD 来选择周期或占空比的修改 • 写入数据到 PWM_CUPD 寄存器. 注意: 在同一PWM周期中修改同一通道的占空比与周期是不可实现的

  15. PWM CHANNEL PWM_CUPD 写入方式 • 可采用查询或中断方式: • 标志位在周期末置位 (以通道1为例) PWM_ISR (Interrupt Status Register) • 读取PWM_ISR 自动清楚 CHIDx 标志 3 0 CHID3 CHID2 CHID1 CHID0 0 0 0 0 PWM_ISR (Interrupt Status Register) 3 0 CHID3 CHID2 CHID1 CHID0 0 0 1 0 • 在无覆盖PWM_CUPD 值的风险的情况下可以更新通道1的周期或者占空比.

  16. CHANNEL 工作模式一: 左对齐 PWM_CMR (Channel Mode Register) 当PWM计数器的值到达周期的值时, 它将复位 9 8 CALG=0Lelt-Aligned Mode CPOL PWM_CPRD PWM_CDTY 0 CPOL= 0 CPOL= 1

  17. CHANNEL 左对齐在多通道应用中的局限 • 左对齐工作方式在多通道应用中不能避免转换事件的重叠 左对齐模式下,一个事件依 赖于占空比,而另一个依赖 于周期。 由于周期相同,会有事件的 重叠 PWM_CPRD0 PWM_CDTY0 Channel 0Output 两个通道周期 相同 (PWM_CDTY0 - PWM_CDTY1) Channel 1Output PWM_CPRD1 PWM_CDTY1

  18. CHANNEL 工作模式二: 中间对齐 PWM_CMR (Channel Mode Register) 9 8 CALG=0Lelt-Aligned Mode CPOL PWM_CPRD Count down Count up PWM_CDTY 0 CPOL= 0 CPOL= 1

  19. CHANNEL 中间对齐: 无事件重叠的方法 • 中间对齐工作模式可避免在多通道应用中的转换事件重叠 PWM_CPRD0 PWM_CDTY0 Channel 0Output (PWM_CDTY0 - PWM_CDTY1) Channel 1Output PWM_CPRD1 PWM_CDTY1

More Related