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

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、软件定时器模式
通过置位 CCAPMn 寄存器的 ECOM 和 MAT 位,可使 PCA 模块用作软件定时器。PCA 计数器值CL 和 CH 与模块捕获寄存器的值 CCAPnL 和 CCAPnH 相比较,当两者相等时,CCON 中的 CCFn 会被置 1,若 CCAPMn 中的 ECCFn 被设置为 1 时将产生中断。CCFn 标志位需要软件清零。
PCA 模块工作于软件定时器模式的结构图如下图所示:

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

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。

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

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。

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

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 模式的结构图如下图所示:

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

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。

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

5)如何控制 PWM 固定输出高电平/低电平
当 PCA_PWMn &= 0xC0,CCAPnH = 0x00 时,PWM 固定输出高电平
当 PCA_PWMn |= 0x3F,CCAPnH = 0xFF 时,PWM 固定输出低电平
我要赚赏金
