STM32
直播中

王焕锁

7年用户 897经验值
私信 关注
[问答]

STM8S003 PC4引脚有异常PWM输出是怎么回事?

我用PC3/PC4/PC6/PC7来做产生2对互补PWM,PC3/PC6/PC7周期、死区都正常,但是PC4在我期望的PWM上还会叠加一个33kHz的方波,我设置的周期是2kHz。我一直怀疑是时钟输出(CCO)的串扰。请各位大侠帮忙看看是怎么回事。一下是初始化代码:
void InitSystem(void)
{
    CLK->CKDIVR  = (u8)~(CLK_CKDIVR_CPUDIV);    // fcpu= fmaster (CPUDIV= 0)
    CLK->CKDIVR  = (u8)~(CLK_CKDIVR_HSIDIV);    // fhsi= fhsirc (HSIDIV= 0)
    CLK->ICKR |= CLK_ICKR_HSIEN;                //时能内部始   
    while((CLK->ICKR 0x02) == 0) {}; //等待内部始终就绪
    CLK->CCOR = 0x00;                            //禁止CCO时钟输出
}

void Inittimer1(void)
{
    CLK->PCKENR1 |= CLK_PCKENR1_TIM1; //TIM1 Clock Enable

    TIM1->CR1 = 0x40;//递增递减计数中央对齐,只在递增中断。
    TIM1->SR1 = 0x00;//清除中断标志位
    TIM1->SR2 = 0x00;
    TIM1->CCMR1 = 0x68;
    TIM1->CCMR2 = 0x68;
    TIM1->CCER1 = 0xFF;// iP高电平,iN低电平

    TIM1->PSCRH = 0;
    TIM1->PSCRL = 0; //16MHz时钟
    TIM1->ARRH = (u8)(((PwmPeriod - 1) >> 8) 0xff);            // init pulse period - auto reload register
    TIM1->ARRL = (u8)((PwmPeriod - 1) 0xff);

    TIM1->CCR1H = 0;
    TIM1->CCR1L = 98;
    TIM1->CCR2H = 0;
    TIM1->CCR2L = 95;
    TIM1->DTR = 60;
   
    TIM1->IER |= TIM1_IER_UIE ; //不用刹车中断,硬件没有接允许更新中断 中断号11                 
    TIM1->CR1 |= TIM1_CR1_URS | TIM1_CR1_CEN;    // enable timer;   

    TIM1->BKR = 0x80;
    TIM1->EGR |= 0x01;
}



回帖(1)

爱吃果冻

2024-4-25 17:25:23
从您提供的代码和描述来看,您正在使用STM8S003微控制器的PC3/PC4/PC6/PC7引脚来产生两对互补的PWM信号。您提到PC4引脚在期望的PWM信号上叠加了一个33kHz的方波,而其他引脚的周期和死区都正常。您怀疑这可能是时钟输出(CCO)的串扰导致的。

为了解决这个问题,我们可以按照以下步骤进行排查:

1. 检查CCO配置:首先,我们需要确认CCO是否被配置为输出,并且其频率与您观察到的33kHz方波相符。如果CCO确实被配置为输出,并且频率接近33kHz,那么这可能是导致问题的原因。

2. 检查CCO引脚:如果CCO被配置为输出,您可以尝试将CCO引脚与PC4引脚物理隔离,以查看是否消除了33kHz方波。这可以通过更改CCO引脚的配置或使用跳线将CCO引脚连接到另一个未使用的GPIO引脚来实现。

3. 检查PC4引脚的配置:确保PC4引脚被正确配置为PWM输出。检查您的代码中是否有任何可能影响PC4引脚配置的部分,例如GPIO模式、输出类型、速度等。

4. 检查PWM配置:仔细检查您的PWM初始化代码,确保所有相关的寄存器都被正确设置。特别是,检查定时器的预分频器、自动重载寄存器和捕获/比较模式寄存器等。

5. 检查电源和地线:确保您的电路板的电源和地线连接正确,没有短路或接地问题。不良的电源和地线连接可能导致电磁干扰,从而影响PWM信号的质量。

6. 使用示波器:使用示波器观察PC4引脚的PWM信号,以更准确地了解叠加的33kHz方波的特性。这将有助于确定问题的根本原因。

7. 软件滤波:如果上述步骤都无法解决问题,您可以尝试在软件中对PWM信号进行滤波,以消除33kHz方波的影响。这可以通过在PWM信号处理过程中添加低通滤波器或平均滤波器来实现。

通过以上步骤,您应该能够找到导致PC4引脚异常PWM输出的原因,并采取相应的措施来解决问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分