李硕 发表于 3 天前

求助:AI8G在在进入掉电模式前初始化PCA导致引脚电平固定为高

如果AI8进入掉电模式前,初始化了PCA模块:
void main然后
PCA_CONFIG();初始化PCA
SLEEP();进入睡眠
然后进入睡眠,则会在PCA输出引脚固定输出高电平。
即使在sleep函数中设置CR = 0关闭PCA电源,然后将引脚设置为低电平也无效!
我设置的输出引脚是P31,这个位置好像是UART,但已经通过操作P_SW1 = 0X10来切换为ccp0输出。
pca部分是这么配置的

void PCA_CONFIG(void){
    P_SW1 = 0x10;   // P3.1切换为PWM输出
    CCON = 0x00;    // 复位PCA
    CMOD = 0x0A;    // 系统时钟/4,6MHZ下为23.5khz
    CL = 0x00;      // 复位低字节
    CH = 0x00;      // 复位高字节
    CCAPM0 = 0x42;// PCA0 PWM模式
    PCA_PWM0 = 0x80;// 6位PWM模式
    CCAP0H = ccapvalues;//对CCAP0H赋值,CCAP0L由硬件自动赋值
    CR = 1;         // 启动PCA
}

但是如果在进入睡眠之后,唤醒再初始化PCA,就不会影响P31的电平。
我以为是PCA部分工作不稳定导致的,我在睡眠函数部分添加了很多nop,也无效!

    CR = 0;//关闭PCA,避免影响P31电平
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
    initcurrentseg = 0;//清空电压迟滞比较初始化标志
    P30 = 1;//LED灭,由于定时器中断已经停止,所以不会再被改变
    P55 = 0;//关闭12V使能
    P31 = 0;//再次把P31拉低,因为PCA打开会导致P31被拉
只有上电后先进入休眠,再初始化PCA才不会拉高引脚电平。

我想知道这个问题是什么原因?虽然不影响代码功能,只需要调换位置就能解决。

李硕 发表于 3 天前

国芯人工智能 发表于 2025-6-27 22:38
尊敬的用户:

您好!感谢您对STC8G系列单片机的深入使用和问题反馈。针对您提出的问题,即“在进入掉电模 ...

实际上只有上电初始化时会这样,上电后再通过长按进入睡眠模式,引脚是正常的

DebugLab 发表于 前天 00:22

进入省电模式之前建议关闭所有不需要的功能,IO设置为没有电流的状态,IO电平会变化的关闭数字输入

李硕 发表于 前天 01:27

DebugLab 发表于 2025-6-28 00:22
进入省电模式之前建议关闭所有不需要的功能,IO设置为没有电流的状态,IO电平会变化的关闭数字输入 ...

应该不是这个问题,那个电压显然是直接推挽输出高了,而且就算正常进入睡眠,他10次里面也可能有一次是没有拉低输出引脚的

李硕 发表于 前天 01:28

我进入休眠的方式是调用下面的函数,
void SLEEP(void){
    TR1 = 0;
    TR0 = 0;//先关闭定时器,避免中断干扰
    CR = 0;//关闭PCA,避免影响P31电平
    _nop_();_nop_();_nop_();_nop_();
    initcurrentseg = 0;//清空电压迟滞比较初始化标志
    P30 = 1;//LED灭,由于定时器中断已经停止,所以不会再被改变
    P55 = 0;//关闭12V使能
    P31 = 0;//再次把P31拉低,因为PCA打开会导致P31被拉高
    IRCDB = 0X08;//上电后持续2^4个时钟后开始执行程序
    poweron = 0;//确认关机
    PCON = 0X02;//进入掉电模式
////////////唤醒后从这里继续执行//////////////
    _nop_();_nop_();_nop_();_nop_();//空指令,避免CPU上电后的不稳定
    TR0 = 1;//先打开定时器1,确保可以正常的
    while(!poweron);//死循环,按键长按将poweron置1之前,都不会退出
    TR1 = 1;//打开两个定时器
    CR = 1;//打开PCA电源已经定义了P31的电平,不需要再次配置
    P30 = 0;
    P55 = 1;
    //不需要改变poweron,因为按键部分已经改变
    //如果是初次上电,会继续去执行主循环
}
页: [1]
查看完整版本: 求助:AI8G在在进入掉电模式前初始化PCA导致引脚电平固定为高