1、第一讲:HCS12 原理及应用-PWM 模块介绍时间:2009-11-25 22:51 来源:电子设计吧 作者:dzsj8 点击: 1115 次该 教 程 以 MC9S12DG128 单 片 机 为 核 心 进 行 讲 解 , 全 面 阐 释 该 16 位 单 片 机 资 源 。 本 文 为 第 一讲 , 开 始 介 绍 该 MCU 的 PWM 模 块 。PWM 调制波有 8 个输出通道, 每一个输出通道都可以独立的进行输出。 每 一 个 输 出 通 道 都有 一 个 精 确 的 计 数 器 ( 计 算 脉 冲 的 个 数 , 一 个 周 期 控 制 寄 存 器 和两个可供选择的时钟源。 每一
2、个PWM 输出通道都能调制出占空比从0100% 变化的波形。PWM 的主要特点有:1、它有8 个独立的输出通道,并且通过编程可控制其输出波形的周期。2、每一个输出通道都有一个精确的计数器。3、每一个通道的P WM 输出使能都可以由编程来控制。4、P WM 输出波形的翻转控制可以通过编程来实现。5、周期和脉宽可以被双缓冲。当通道关闭或 PWM 计数器为 0 时,改变周期和脉宽才起作用。6、8 字节或16 字节的通道协议。7、有4 个时钟源可供选择 (A、 SA、 B、 SB, 他们提供了一个宽范围的时 钟频率。8、通过编程可以实现希望的时钟周期。9、具有遇到紧急情况关闭程序的功能。10、每一个通
3、道都可以通过编程实现左对齐输出还是居中对齐输出。(责任编辑:dzsj8)第 2 讲:HCS12 原理及应用-PWM 寄存器说明 1时间:2009-11-25 22:56 来源:电子设计吧 作者:dzsj8 点击: 902 次1、PWM 启动寄存器 PWMEPWME 寄存器每一位如图1 所示:复位默认值:0000 0000B图1 PWME 寄存器 每一个 PWM 的输出通道都有一个使能位PWMEx 。 它 相 当 于 一 个 开 关 , 用来启动和关闭相应通道的 PWM 波形输出。 当任意的PWMEx 位 置1, 则相关的P WM 输出通道就立刻可用。用法: PWME7=1 - 通道 7 可对外
4、输出波形PWME7=0 - 通道 7 不能对外输出波形 注意: 在通道使能后所输出的第一个波形可能是不规则的。 当输出通道工作 在串联模式时(PW MCTL 寄存器中的 CONxx 置 1),那么使能相应的 16 位 PWM 输出通道是由 PWMEx 的高位控制的 , 例 如 : 设 置 PWMCTL_CON01 = 1,通 道 0、 1级 联 , 形 成 一 个 16位 PWM 通 道 , 由 通 道 1 的 使 能 位 控 制 PWM 的 输 出 。2、PWM 时钟选择寄存器 PWMCLKPWMCLK 寄存器每一位如图 3 所示:复位默认值:0000 0000B图 2 PWMCLK 寄 存
5、 器 S12 的 PWM 共有四个时钟源,每一个P WM 输出通道都有两个时钟可供选择(ClockA、ClockS A 或 Clock B、ClockSB ) 。其中 0、1、4、5 通道可选用 ClockA 和ClockSA,2 、3、6、7 通道可选用 ClockB、ClockS B 通道。该寄存器用来实现几个通道时钟源的选择。用法: PCLK 0 = 1 -通道 0(PTP0)的时钟源设为 ClockSAPCLK2 = 0 - 通道 2(PTP2)的时钟源设为 ClockB(责任编辑:dzsj8)第 3 讲:HCS12 原理及应用-PWM 寄存器说明 2时间:2009-11-25 22:
6、58 来源:电子设计吧 作者:dzsj8 点击: 813 次1、PWM 预分频寄存器 PWMPRCLKPWMPRCLK 寄存器每一位如图 3 所示:复位默认值:0000 0000B图3 P WMPRCLK 寄存器 PWMPRCLK 寄存器包括 ClockA 预分频和 ClockB 预分频的控制位。ClockA、ClockB 的值为总线时钟的 1/2n (0n7),具体设置参照图 4 和图 5图4 Clock A 预分频设置图 5 Clock B 预分频设置PCKB0PCKB2 是对 ClockB 进行预分频。PCKA0PCKA2 是 对 ClockA 进行预分频。2、PWM 分频寄存器 PWM
7、SCLA、PWMSCLBPWMSCLA 寄存器每一位如图6 所示:图 6 PWMSCLA 寄存器Clock SA 是通过对P WMSCLA 寄存器的设置来对 ClockA 进行分频而产生的。其计算公式为:Clock SA=Clock A /(2*PWMSCLA)PWMSCLB 寄 存 器 与 PWMSCLA 寄 存 器 相 似 , Clock SB 就 是 通 过 对 PWMSCLB 寄存器的设置来对ClockB 进行分频而产生的。其计算公式为:Clock SB=Clock B /(2*PWMSCLB)(责任编辑:dzsj8)手把手教你写 S12XS128 程序(4)-PWM 寄存器说明 3时
8、间:2009-11-26 07:09 来源:电子设计吧 作者:dzsj8 点击: 711 次1、 PWM 极 性 选 择 寄 存 器 PWMPOLPWMPOL 寄存器每一位如图 7 所示:该寄存器是 07 通道 PWM 输出起始极性控制位,用来设置 PWM 输出的起始电平。用法: PWMPOL_PPOL0=1- 通道 0 在周期开始时输出为高电平,当计数器等于占空比寄存器的值时,输出为低电平。对外输出波形先是高电平然后再变为低电平。2、PWM 波形对齐寄存器 PWMCAEPWMCAE 寄存器每一位如图8 所示:图8 PW MCAE 寄 存 器PWMCAE 寄存器包含 8 个控制位来对每个 PW
9、M 通道设置左对齐输出或中心对齐输出。用法: PWMCAE_CAE0 = 1 - 通道 0 中心对齐输出PWMCAE_CAE7 = 0 - 通道 7 左对齐输出注意:只有输出通道被关闭后才能对其进行设置, 即通道被激活后不能对其进行设置。图7 PWMPOL 寄 存 器(责任编辑:dzsj8)手把手教你写 S12XS128 程序(5)-PWM 寄存器说明 4时间:2009-11-26 07:22 来源:电子设计吧 作者:dzsj8 点击: 696 次1、PWM 控制寄存器 PWMCTLPWMCTL 寄存器每一位如图 9 所示:图9 PW MCTL 寄 存 器该控制寄存器设定通道的级联和两种工作模
10、式:等待模式和冻结模式。这两种模式如图 10 和图 11 所示。图 10 等待模式图 11 冻结模式只有当相应的通道关闭后,才能改变 这些控制字。用法:PWMCTL CON67=1 - 通道6、7 级联成一个 16 位的 PWM 通道。 此 时只有7 通道的控 制字 起 作 用 , 原 通 道 7 的 使 能 位 、 PWM 输 出 极 性 选 择 位 、 时 钟 选 择 控 制 位 以 及 对 齐 方 式 选 择 位 用 来 设置 级 联 后 的 PWM 输 出 特 性PWMCTL CON67=0 - 通道6,7 通道不级联CON45、 CON23、C ON01 的用法同 CON67 相似。
11、设置此控制字的意义在于扩大了 PWM 对外输出脉冲的频率范围。PSWAI=1 - MCU 一旦处于等待状态, 就会停止时钟的输入。 这样就不会因时钟在空操作而费电;当它置为 0,则 MCU 就是处于等待状态,也允许时钟的输入。PFRZ=1 - MCU 一旦处于冻结状态, 就会停止计数器工作 。(责任编辑:dzsj8)手把手教你写 S12XS128 程序(6)-PWM 寄存器说明 5时间:2009-11-26 07:30 来源:电子设计吧 作者:dzsj8 点击: 771 次1、PWM 通道计数寄存器 PWMCNTxPWMCNTx 寄存器共有 8 个,每一个通道都有一个 8 位 PWM 加/减双
12、向计数器,通道级联后可变成 16 位 PWM 加/减双向计数器。下面以 PWMCNT0 为例对P WMCNTx 寄存器进行介绍。PWMCNT0 寄存器如图1 2 所示:图1 2 PWMCNT0 寄 存 器 计数器以所选时钟源的频率运行。 计数器在任何时候都可以被读, 而不影响 计数,也不影响对PWM 通道的操作。任何值写入 PWMCNT0 寄存器都会导致计数器复位置 0,且其计数方向会 被设置为向上计数, 并且会立刻从缓冲器载入任务和周期值, 并会根据翻转极性的设置来改变输出。当计数器达到计数值后,会自动清零。只有当通道使能后,计数器才开始计数。2、PWM 通道周期寄存器 PWMPERxPWM
13、PERx 寄存器共有8 个, 每一个通道都有一个这样的周期寄存器。 这个 寄存器的值就决定了相关P WM 通道的周期 。 每一个通道的周期寄存器都是双缓 冲的, 因此如果当通道使能后, 改变他们的值, 将不会发生任何作用, 除非当下列情况之一发生:*有效的周期结束。*对计数器进行写操作(计数器复位)*通道不可用(P WMEx = 0)这样就会使P WM 输出波形要么是新波形要么是旧波形, 并不会在两者之间 进行交替变换。 如果通道不可用, 那么对周期寄存器进行写操作, 将会直接导致 周期寄存器同缓冲器一起闭锁。图13 所示的是P WMPER0 寄存器:图13 PWMPER0 寄存器3、PWM
14、通道占空比寄存器 PWMDTYxPWMDTYx 寄存器也有 8 个,每一个通道都有一个这样的占空比常数寄存 器。 这个寄存器的值就决定了相关P WM 通道输出波形的占空比。 每一个通道的 占空比寄存器都是双缓冲的, 因此如果当通道被激活后, 改变他们的值将不会发生任何作用,除非当下列情况之一发生:*有效的周期结束。*对计数器进行写操作(计数器复位)*通道不可用(P WMEx = 0)这样就会使P WM 输出波形要么是新波形要么是旧波形, 并不会在两者之间 进行交替变换。 如果通道没有被激活, 那么对占空比常数寄存器进行写操作, 将会直接导致周期寄存器同缓冲器一起闭锁。当计数值与占空比常数P W
15、MDTY 相等时, 则比较输出器有效, 这时就会将触发器置位, 然后PWMCNT 继续计数, 当计数值与周期常数PW MPER 相等时,比较器输出有效, 将触发器复位, 同时也使PWMCNT 复 位 , 结束一个输出周期。(责任编辑:dzsj8)手把手教你写 S12XS128 程序(7)-PWM 工作原理时间:2009-11-27 15:44 来源:电子设计吧 作者:dzsj8 点击: 826 次S12 微 控 制 器 PWM 模 块 是 由 独 立 运 行 的 8 位 脉 冲 计 数 器 PWMCNT、 两 个 比 较 寄 存 器 PWMPER 和PWMDTY 组 成 。1、 左 对 齐 方
16、 式在 该 方 式 下 , 脉 冲 计 数 器 为 循 环 递 增 计 数 , 计 数 初 值 为 0 。当 PWM 使 能 后 , 计 数 器 PWMCNT 从 0 开 始 对 时 钟 信 号 递 增 计 数 , 开 始 一 个 输 出 周 期 。 当 计 数 值 与 占空 比 常 数 寄 存 器 PWMDTY 相 等 时 , 比 较 器 1 输 出 有 效 , 将 触 发 器 置 位 (变 为 高 电 平 ), 而 PWMCNT 继 续 计数 ; 当 计 数 值 与 周 期 常 数 寄 存 器 PWMPER 相 等 时 , 比 较 器 2 输 出 有 效 , 将 触 发 器 复 位 ( 变
17、 为 低 电 平 ) ,同 时 PWMCNT 也 复 位 , 结 束 一 个 输 出 周 期 。 原 理 参 照 图 14:/*/玉 良 理 解 的 就 是 , 计 数 器 的 值 一 直 增 加 , 当 先 与 PWMDTY 的 值 相 等 后 , 置 位 , 而 计 数 器 继 续 计 数 , 当 计数 器 的 值 与 PWMPER 的 值 相 等 后 , 变 为 低 电 平 , 从 而 完 成 一 个 输 出 周 期 。/*/图 14 PWM 左 对 齐 方 式2、 中 心 对 齐 方 式在 该 方 式 下 , 脉 冲 计 数 器 为 双 向 计 数 , 计 数 初 值 为 0 。当 P
18、WM 使 能 后 , 计 数 器 PWMCNT 从 0 开 始 对 时 钟 信 号 递 增 计 数 , 开 始 输 出 一 个 周 期 。 当 计 数 器 与 占空 比 常 数 寄 存 器 PWMDTY 相 等 时 , 比 较 器 1 输 出 有 效 , 触 发 器 翻 转 , 而 PWMCNT 继 续 计 数 , 当 计 数 值 与周 期 常 数 PWMPER 相 等 时 , 比 较 器 2 输 出 有 效 , 此 时 改 变 PWMCNT 的 计 数 方 向 , 使 其 递 解 计 数 ; 当PWMCNT 再 次 与 PWMDTY 相 等 时 , 比 较 器 1 再 一 次 输 出 有 效
19、 , 使 触 发 器 再 次 翻 转 , 而 PWMCNT 继 续 递 减 计数 , 等 待 PWMCNT 减 回 至 0, 完 成 一 个 输 出 周 期 。 原 理 参 照 图 15:/*/玉良理解的就是计数器的值先增加到与 PWMDTY 相等后,比较器 1 置位,而计数器继续计数,当数值与PWMPER 中的值相等后,改变其计数方向,改为递减计数,当再一次与 PWMDTY 中的值相等后,比较器再一次输出有效,使触发器反转,而计数器继续递减计数直到计数器的值为 0,从而完成一个输出周期。/*/图 15 中心对齐方式3、 周 期 计 算 方 法左 对 齐 方 式 :输 出 周 期 = 通 道
20、周 期 PWMPERx中 心 对 齐 方 式 :输 出 周 期 = 通 道 周 期 PWMPERx 24、 脉 宽 计 算 方 法左 对 齐 方 式 :占 空 比 = (PWMPERx - PWMDTYx) / PWMPERx 100%中 心 对 齐 方 式 :占 空 比 = PWMDTYx / PWMPERx 100%(责任编辑:dzsj8)手把手教你写 S12XS128 程序(8)-PWM 应用实例时间:2009-11-28 21:49 来源:电子设计吧 作者:dzsj8 点击: 762 次PWM 初 始 化 步 骤 总 结1、禁止 PWM PWME = 02、选择时钟 P WMPRCLK
21、,P WMSCLA,PWMSCLB,P WMCLK3、选择极性 P WMPOL4、选择对齐方式 P WMCAE5、选择占空比和周期 P WMDTYx, PW MPERx6、使能 PWM PWME = 1【 例 程 1】/-/功 能 说 明 : MC9S12XS128-PWM 例 程/使 用 说 明 : 实 现 通 道 3(PTP3)输 出 频 率 为 1KHz, 占 空 比 为 50%的 方 波 , 用 示 波 器 观 察/程 序 设 计 : 电 子 设 计 吧 【 】/设 计 时 间 : 2010.01.21/-/#include /* common defines and macros *
22、/#include “derivative.h“ /* derivative-specific definitions */-初 始 化 函 数 -/-时 钟 初 始 化 程 序 -/void PLL_Init(void) /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) /锁 相 环 时 钟 =2*16*(2+1)/(1+1)=48MHzREFDV=1; /总 线 时 钟 =48/2=24MHzSYNR=2;while(!(CRGFLGCLKSEL=0x80; /选 定 锁 相 环 时 钟/-PWM 初 始 化 程 序 -/void PWM_Init(void) PWM
23、E_PWME3=0x00; / Disable PWM 禁 止 PWMPRCLK=0x33; / 0011 0011 A=B=24M/8=3M 时 钟 预 分 频 寄 存 器 设 置PWMSCLA=150; / SA=A/2/150=10k 时 钟 设 置PWMSCLB=15; / SB=B/2/15 =100k 时 钟 设 置 PWMCLK_PCLK3=1; / PWM3-SB 时 钟 源 的 选 择PWMPOL_PPOL3=1; / Duty=High Time 对 外 输 出 电 平 先 是 高 电 平 后 是 低 电 平 极 性 设 置PWMCAE_CAE3=0; /对 齐 方 式 设
24、 置 为 1 表 示 居 中 对 齐 , 为 0 表 示 左 对 齐PWMCTL=0x00; /详 见 P4, 控 制 寄 存 器 设 置 PWMPER3=100; / Frequency=SB/100=1K 周 期 寄 存 器 设 置PWMDTY3=50; / 因 为 PPOL=1, 所 以 占 空 比 为 ( PWMDTY/PWMPER) *100%占 空 比 寄 存 器 设 置PWME_PWME3=1; / Enable PWM 使 能/-主 函 数 -/void main(void)/* put your own code here */PLL_Init();PWM_Init();En
25、ableInterrupts;for(;) _FEED_COP(); /* feeds the dog */ /* loop forever */* please make sure that you never leave main */(责任编辑:dzsj8)手把手教你写 S12XS128 程序(9)-A/D 转换模块介绍 1时间:2009-11-30 22:10 来源:电子设计吧 作者:dzsj8 点击: 650 次1、 A/D 转 换 原 理A/D 转 换 的 过 程 是 模 拟 信 号 依 次 通 过 取 样 、 保 持 和 量 化 、 编 码 几 个 过 程 后 转 换 为 数字格
26、式。a)取样与保持一般取样与保持过程是同时完成的,取样-保持电路的原理图如图 16 所示,由输入放大器A1、输出放大器 A2、保持电容 CH和电子开关 S 组成,要求 A V1 * AV2 = 1。原理是:当开关 S闭合时,电路处于取样阶段,电容器充电,由于 A V1 * AV2 = 1,所以输出等于输入;当开关 S断开时,由于 A2输入阻抗较大而且开关理想,可认为 CH没有放电回路,输出电压保持不变。图 16 取样-保持电路取样-保持以均匀间隔对模拟信号进行抽样, 并且在每个抽样运算后在足够的时间内保持抽样值恒定,以保证输出值可以被A/D 转换器精确转换。b)量化与编码量化的方法,一般有舍尾取整法和四舍五入法,过程是先取顶量化单位 ,量化单位取值越小,量化误差的绝对值就越小,具体过程在这里就不做介绍了。将量化后的结果用二进制码表示叫做编码。2、A/D 转换器的技术指标a)分辨率分辨率说明 A/D 转换器对输入信号的分辨能力,理论上, n 位 A/D 转换器能区分的输入电压的最小值为满量程的 1/2n 。也就是说,在参考电压一定时,输出位数越多,量化单位就越小,