这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【STCAi8051U】细说Ai8051U可编程计数器阵列的工作模式

共1条 1/1 1 跳转至

【STCAi8051U】细说Ai8051U可编程计数器阵列的工作模式

专家
2026-02-08 18:21:14     打赏

AI8 系列单片机共有 4 组 PCA 模块,每组模块都可独立设置工作模式。模式设置如下所示:

1.png


1、捕获模式

要使一个 PCA 模块工作在捕获模式,寄存器 CCAPMn 中的 CAPNn 和 CAPPn 至少有一位必须置 1(也可两位都置 1)。PCA 模块工作于捕获模式时,对模块的外部 CCP0/CCP1/CCP2 管脚的输入跳变进行采样。当采样到有效跳变时,PCA 控制器立即将 PCA 计数器 CH 和 CL 中的计数值装载到模块的捕获寄存器中 CCAPnL 和 CCAPnH,同时将 CCON 寄存器中相应的 CCFn 置 1。若 CCAPMn 中的 ECCFn 位被设置为 1,将产生中断。由于所有 PCA 模块的中断入口地址是共享的,所以在中断服务程序中需要判断是哪一个模块产生了中断,并注意中断标志位需要软件清零。

PCA 模块工作于捕获模式的结构图如下图所示:

2.png


2、软件定时器模式

通过置位 CCAPMn 寄存器的 ECOM 和 MAT 位,可使 PCA 模块用作软件定时器。PCA 计数器值CL 和 CH 与模块捕获寄存器的值 CCAPnL 和 CCAPnH 相比较,当两者相等时,CCON 中的 CCFn 会被置 1,若 CCAPMn 中的 ECCFn 被设置为 1 时将产生中断。CCFn 标志位需要软件清零。

PCA 模块工作于软件定时器模式的结构图如下图所示:

3.png


3、高速脉冲输出模式

当 PCA 计数器的计数值与模块捕获寄存器的值相匹配时,PCA 模块的 CCPn 输出将发生翻转转。要激活高速脉冲输出模式,CCAPMn 寄存器的 TOGn、MATn 和 ECOMn 位必须都置 1。

PCA 模块工作于高速脉冲输出模式的结构图如下图所示:

4.png

4、PWM  脉宽调制模式

1)8 位 位 PWM  模式

脉宽调制是使用程序来控制波形的占空比、周期、相位波形的一种技术,在三相电机驱动、D/A 转换等场合有广泛的应用。AI8 系列单片机的 PCA 模块可以通过设定各自的 PCA_PWMn 寄存器使其工作于 8 位 PWM 或 7 位 PWM 或 6 位 PWM 或 10 位 PWM 模式。要使能 PCA 模块的 PWM 功能,模块寄存器 CCAPMn 的 PWMn 和 ECOMn 位必须置 1。

PCA_PWMn寄存器中的EBSn[1:0]设置为00时,PCA模块n工作于8位PWM模式,此时将{0,CL[7:0]}与捕获寄存器{EPCnL,CCAPnL[7:0]}进行比较。当 PCA 模块工作于 8 位 PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[7:0]}进行设置。当{0,CL[7:0]}的值小于{EPCnL,CCAPnL[7:0]}时,输出为低电平;当{0,CL[7:0]}的值等于或大于{EPCnL,CCAPnL[7:0]}时,输出为高电平。当CL[7:0]的值由FF变为00溢出时,{EPCnH,CCAPnH[7:0]}的内容重新装载到{EPCnL,CCAPnL[7:0]}中。这样就可实现无干扰地更新 PWM。

图片10.png

PCA 模块工作于 8 位 PWM 模式的结构图如下图所示:

图片11.png

2)7 位 位 PWM  模式

PCA_PWMn寄存器中的EBSn[1:0]设置为01时,PCA模块n工作于7位PWM模式,此时将{0,CL[6:0]}与捕获寄存器{EPCnL,CCAPnL[6:0]}进行比较。当 PCA 模块工作于 7 位 PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[6:0]}进行设置。当{0,CL[6:0]}的值小于{EPCnL,CCAPnL[6:0]}时,输出为低电平;当{0,CL[6:0]}的值等于或大于{EPCnL,CCAPnL[6:0]}时,输出为高电平。当CL[6:0]的值由7F变为00溢出时,{EPCnH,CCAPnH[6:0]}的内容重新装载到{EPCnL,CCAPnL[6:0]}中。这样就可实现无干扰地更新 PWM。

图片12.png

PCA 模块工作于 7 位 PWM 模式的结构图如下图所示:

图片13.png



3)6位 PWM  模式

PCA_PWMn寄存器中的EBSn[1:0]设置为10时,PCA模块n工作于6位PWM模式,此时将{0,CL[5:0]}与捕获寄存器{EPCnL,CCAPnL[5:0]}进行比较。当 PCA 模块工作于 6 位 PWM 模式时,由于所有模块共用一个PCA计数器,所有它们的输出频率相同。各个模块的输出占空比使用寄存器{EPCnL,CCAPnL[5:0]}进行设置。当{0,CL[5:0]}的值小于{EPCnL,CCAPnL[5:0]}时,输出为低电平;当{0,CL[5:0]}的值等于或大于{EPCnL,CCAPnL[5:0]}时,输出为高电平。当CL[5:0]的值由3F变为00溢出时,{EPCnH,CCAPnH[5:0]}的内容重新装载到{EPCnL,CCAPnL[5:0]}中。这样就可实现无干扰地更新 PWM。

PCA 模块工作于 6 位 PWM 模式的结构图如下图所示:

图片14.png


PCA 模块工作于 6 位 PWM 模式的结构图如下图所示:

图片15.png


4)10位 PWM  模式

PCA_PWMn 寄存器中的 EBSn[1:0]设置为 11 时,PCA 模块 n 工作于 10 位 PWM 模式,此时将{CH[1:0],CL[7:0]}与捕获寄存器{EPCnL,XCCAPnL[1:0],CCAPnL[7:0]}进行比较。当 PCA 模块工作于 10位 PWM 模式时,由于所有模块共用一个 PCA 计数器,所有它们的输出频率相同。各个模块的输出占空比 使 用 寄 存 器 {EPCnL,XCCAPnL[1:0],CCAPnL[7:0]} 进 行 设 置 。 当 {CH[1:0],CL[7:0]} 的 值 小 于

{EPCnL,XCCAPnL[1:0],CCAPnL[7:0]} 时 , 输 出 为 低 电 平 ; 当 {CH[1:0],CL[7:0]} 的 值 等 于 或 大 于{EPCnL,XCCAPnL[1:0],CCAPnL[7:0]}时,输出为高电平。当{CH[1:0],CL[7:0]}的值由 3FF 变为 00 溢出时,{EPCnH,XCCAPnH[1:0],CCAPnH[7:0]}的内容重新装载到{EPCnL,XCCAPnL[1:0],CCAPnL[7:0]}中。这样就可实现无干扰地更新 PWM。

图片16.png

PCA 模块工作于 10 位 PWM 模式的结构图如下图所示:

图片17.png


5)如何控制 PWM  固定输出高电平/低电平

当 PCA_PWMn &= 0xC0,CCAPnH = 0x00 时,PWM 固定输出高电平

当 PCA_PWMn |= 0x3F,CCAPnH = 0xFF 时,PWM 固定输出低电平



 







关键词: 懒猫的学习笔记     Ai8051U     可编程计数器阵列    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]