- No category
advertisement
▼
Scroll to page 2
of 8
如何使用 HT66F40 STM PWM 功能 如何使用 HT66F40 STM PWM 功能 文件编码: 文件编码:HA0247S 简介 HT66Fx0 系列 MCU 提供了一个新的功能单元 TM,即 Timer Modules, 整合了 Timer 和 PWM 的功能,提供包括普通 Timer 定时、外部计数、可编程 Duty/Period PWM 输出或单脉冲输 出、输入捕捉等丰富的功能。TM 依据功能可分为简易型 TM (CTM)、标准型 TM (STM) 和 增强型 TM (ETM)。 本文即以 HT66F40 为母体,通过具体范例说明 STM 中 PWM 功能的使用。 工作原理 STM 的核心是一个向上计数的 16 位计数器和两个比较器,具体结构如下图示: C C R P 3 o r 8 - b it C o m p a r a to r P fS Y S fS /4 Y S fH /1 6 fH /6 4 fT B C R e s e rv e d T C K n 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 C o m p a ra to r P M a tc h T n P F In te rru p t b 7 ~ b 9 o r b 8 ~ b 1 5 1 0 o r 1 6 - b it C o u n t- u p C o u n te r b 0 ~ b 9 o r b 0 ~ b 1 5 T n O N T n P A U C o u n te r C le a r 0 1 T n C C L R C o m p a ra to r A 1 0 o r 1 6 - b it C o m p a ra to r A T n C K 2 ~ T n C K 0 T n O C M a tc h O u tp u t C o n tro l P o la r ity C o n tro l T n M 1 , T n M 0 T n IO 1 , T n IO 0 T n P O L T P n P in In p u t/O u tp u t T P n _ 0 T P n _ 1 T n A F In te rru p t T n IO 1 , T n IO 0 C C R A E d g e D e te c to r 标准型 标准型 TM 模块图 注意:本范例中的 n=2。 计数器的时钟源可以通过设定 T2CK0~T2CK2 选择为 fSYS/4、fSYS、fH/16、fH/64、fTBC 或者 为 TCK2 输入。两个内部比较器:CCRP 和 CCRA,用于设定比较基准值,CCRP 有 8 位宽, 只对计数器的高 8 位进行比较,而 CCRA 的位数和计数器一样,可以跟计数器比较所有的 位。当设定好相关的寄存器 TM 开始运行后计数器向上计数,系统会将预先写入 CCRA 的 值与计数器中的值进行比较。计数器在计数溢出或者与设定 CCRA 的值相等时,可以自动 清除为零并产生一个中断信号,同时系统会根据程序设定产生相应的输出信号。计数器中 TM2DH/TM2DL 的值无法改变,但是可以读出,只能通过设定 T2ON 位由 0→1 才能清除 为零计数器。T2POL 可以对 T2OC 输出逻辑进行控制,当被设定为 1,可以强制对 T2OC 输出逻辑翻转。 1 如何使用 HT66F40 STM PWM 功能 HT66F40 输出引脚介绍: 引脚 功能描述 TP2_0 CCRA/CCRP 匹配输出引脚 TP2_1 CCRA/CCRP 匹配输出引脚 TMPC0 PRM2 T2CP0 1 : 使能 TP2 功能 0 : I/O 功能或者其它功能 TP20PS 0 : 设定 TP2_0 on PC3 1 : 设定 TP2_0 on PD1 T2CP1 1 : 使能 TP2 功能 0 : I/O 功能或者其它功能 TP21PS 0 : 设定 TP2_1 on PC4 1 : 设定 TP2_1 on PD4 在 PWM 模式,计数器可通过设定 T2DPX 来选择 PWM 的 Period 及 PWM 的 Duty 的设定 方式。当 T2DPX 设定为 0 时,CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty;当 T2DPX 设定为 1 时,CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty。当设定了 STM 工作模式为 PWM 后,将 T2ON 设定 1,计数器开始计数。一旦主计数器与 CCRA 或 CCRP 匹配,相应的中断标志位即 T2AF 或 T2PF 将会被设定 1,若堆栈未满且相应的中断使能, 程序将进入相应的中断服务程序。注意,由于 CCRP 和 CCRA 匹配中断的入口地址一样, 需要在进入中断服务程序后,判断中断标志位,来区分两种中断。T2AF 和 T2PF 不能自动 清除为零,需要在中断程序中,程序清除为零。否则不能响应下次中断。 PWM 模式时序图: 2 如何使用 HT66F40 STM PWM 功能 注意:本范例中的 n=2 在 PWM 模式中,T2CCLR 无作用。 在设定 PWM 模式前,可对 PRM2 寄存器设定相对应的位,将 TP2 引脚设定在不同的 I/O 引脚。再对 TMPC1 寄存器进行设定,选择 I/O 相应的 TP2 功能使能。 PWM 模式的设定步骤如下表: 步骤 1 操作内容 设定时钟源 寄存器 设定位 TM2C0 T2CK0~T2CK2 功能描述 选择 STM 的时钟源 T2DPX : 2 3 4 PWM 控制 1 : CCRA 控制 Period CCRP 控制 Duty 0 : CCRA 控制 Duty CCRP 控制 Period TM2C1 TM2AH/TM2AL 所有的位 寄存器值 TM2RP 所有的位 设定 STM 工作模式 TM2C1 T2M1, T2M0=10 设定 CCRA、CCRP TP20PS : 0 : 设定 TP2_0 on PC3 1 : 设定 TP2_0 on PD1 选择用 CCRA 还是 CCRP 控 制 PWM 的 Period 和 Duty 设定比较寄存器 ″11″为 STM 工作在 PWM 模式 选择 STM 的 TP2_0 和 TP2_1 5 选择 STM 的输出引 脚 PRM2 6 使能 STM 的输出引 脚 TMPC1 T2CP1, T2CP0 使能 STM 的相应引脚功能 7 设定 TP2 输出的初 始电源电平 TM2C1 T2OC : 0 : 输出低电平 设定第一次匹配之前 TP2 TP21PS : 0 : 设定 TP2_1 on PC4 1 : 设定 TP2_1 on PD4 3 从哪个 I/O 引脚输出 的输出电平 如何使用 HT66F40 STM PWM 功能 步骤 操作内容 寄存器 8 设定 TP2 的输出功 能 TM2C1 9 设定 TP10 的输出极 性 TM2C1 10 设定中断允许位 11 开启 STM 12 STM 停止功能 设定位 1 : 输出高电平 T2IO1/T2IO0 : 00 : TP2 输出无效电平 功能描述 选择 10: PWM 输出 01 : TP2 输出有效电平 T2POL : 1 : 输出同向 0 : 输出反向 TP2 的输出极性控制 INTC1 MF0E MFI0 T2AE, T2PE TM2C0 T2ON 0 → 1 重置计数器,并 STM 开始工 作 T2PAU 0 → 1 STM 暂停工作,计数器值保 持不变 T2ON 1 → 0 STM 停止工作,计数器 内容不变 TM2C0 使能 STM 和多个功能的中 断 应用电路 说明: 对 STM 而言在 PWM 模式,可提供两个引脚 (TP2_0/TP2_1) 输出脉冲。 脉冲输出可选择从 TP2_0 (Pin 15) 输出或从 TP2_1 (Pin 14 ) 输出,或者 TP2_0 和 TP2_1 同 时输出。 4 如何使用 HT66F40 STM PWM 功能 流程图 (范例 范例 1) 注:上面为 T2DPX 为 0 时,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty 的 流程。 程序说明( ) 程序说明(范例 1) 本范例是使用 STM 的 PWM 程序,通过 STM 的 TP2_0 或 TP2_1 观察 PWM 输出。 主程序流程介绍:程序首先所使用到的数据储存器清除为零初始化。对 CP0C、CP1C 赋值 5 如何使用 HT66F40 STM PWM 功能 08H,关闭比较器功能。对 ACERL 和 SCOMEN 清除为零,关闭 A/D 输入功能和 LCD 功 能。PC 端口设定为输出模式,且 PC 需设定为低位,否则 TP2 输出逻辑相反。PRM2 [5:4]=00 为 TP2 从 PC4 和 PC3 输出,TM2C0 [6:4]=000 为选择 STM 的时钟源为 fSYS/4,TM2C1[7:6]=10 为 STM 工作在 PWM Mode,T2DPX=0,即 CCRP 控制 PWM 的 Period,Period 为 32768us, CCRA 控制 PWM 的 Duty,Duty 为 4096us;当主计数器与 CCRP 和 CCRA 匹配时翻转 TP2 输出 PWM。 程序范例 (范例 范例 1) 范例程序如附件 pwm1.zip 档案。 注:上面为 T2DPX 为 0 时,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty 的 程序。 实际输出波形图及说明。 PWM 的周期 为 32.768ms PWM 的 Duty 为 4.096ms 注:上图为 T2DPX 为 0 时,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty 的 输出波形。其中 PWM 输出为 Active Low。 6 如何使用 HT66F40 STM PWM 功能 流程图 (范例 范例 2) 注:上面为 T2DPX 为 1 时,即 CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty 的 流程。 程序说明 (范例 范例 2) 本范例是使用 STM 的 PWM 程序,通过 STM 的 TP2_0 或 TP2_1 观察 PWM 输出。 主程序流程介绍:程序首先所使用到的数据存储器清零初始化。对 CP0C,CP1C 赋值 08H, 7 如何使用 HT66F40 STM PWM 功能 关闭比较器功能。对 ACERL 和 SCOMEN 清零,关闭 A/D 输入功能和 LCD 功能。PC 口设 置为输出模式,且 PC 需设置为低,否则 TP2 输出逻辑相反。PRM2 [5:4]=00 为 TP2 从 PC4 和 PC3 输出,TM2C0[6:4]=000 为选择 TM 的时钟源为 FSYS/4, TM2C1[7:6]=10 为 TPU 工作在 PWM MODE, T2DPX 为 1 时,即 CCRA 控制 PWM 的 Period,Period 为 49152us,CCRP 控制 PWM 的 Duty,Duty 为 1024us, 当主计数器与 CCRP 和 CCRA 匹配时翻转 TP2 输出 PWM。 程序范例 范例程序如附件 pwm2.zip 档案。 注:上面为 T2DPX 为 1 时,即 CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty 的 程序。 实际输出波形图及说明。 PWM Duty 为 1.024ms PWM 周期为 49.152ms 注:上图为 T2DPX 为 1 时,即 CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty 的 输出波形。其中 PWM 输出为 Active High。 结论 本文通过上面 STM PWM Mode 的应用实例,对 STM PWM Mode 的运用进行了阐述,使用 者可根据具体情况来设定所需要的波形。 8
advertisement
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project