打印

HC32L130F8UA配置PCA成PWM PB1通道3不成功

[复制链接]
4139|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qidiao|  楼主 | 2023-1-3 17:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HC32L130F8UA 脚位32个 PCA配置成PWM 使用PA6通道0配置成功 改成PB1通道3不成功?static void App_GpioInit(void)
{
    stc_gpio_cfg_t    GpioInitStruct;
    DDL_ZERO_STRUCT(GpioInitStruct);
   
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
   
    //PB01
    GpioInitStruct.enDrv  = GpioDrvH;
    GpioInitStruct.enDir  = GpioDirOut;
    Gpio_Init(GpioPortB, GpioPin1, &GpioInitStruct);
    Gpio_SetAfMode(GpioPortB, GpioPin1, GpioAf2);////这里是 GpioAf2吗?
}

/**
******************************************************************************
** \brief  配置PCA
**
** \return 无
******************************************************************************/
void App_PcaInit(uint16_t Pca_carr)
{
          App_GpioInit();
       
    stc_pcacfg_t  PcaInitStruct;
   
    Sysctrl_SetPeripheralGate(SysctrlPeripheralPca, TRUE);
   
    PcaInitStruct.pca_clksrc = PcaPclkdiv2;  //pclk/32
    PcaInitStruct.pca_cidl   = FALSE;         //空闲模式IDLE,PCA不停止工作
    PcaInitStruct.pca_ecom   = PcaEcomEnable;       //允许比较器功能
    PcaInitStruct.pca_capp   = PcaCappDisable;      //禁止上升沿捕获
    PcaInitStruct.pca_capn   = PcaCapnDisable;      //禁止下降沿捕获
    PcaInitStruct.pca_mat    = PcaMatEnable;        //允许匹配
    PcaInitStruct.pca_tog    = PcaTogEnable;        //允许翻转
    PcaInitStruct.pca_pwm    = PcaPwm8bitDisable;    //禁止8位pwm
    PcaInitStruct.pca_epwm   = PcaEpwmEnable;      //允许16位pwm
    PcaInitStruct.pca_ccap   = 10000;
    PcaInitStruct.pca_carr   = Pca_carr;              //占空比
   
    Pca_M3Init(&PcaInitStruct);
       
          ///< PCA 开始运行
    Pca_StartPca(TRUE);
               
}



int main(void)
{
.......................................
........................................
  while{1}
{
   Pca_SetCcap(PcaModule3, per_T);//改变占空比
}
}


各位大佬帮我看看  哪里配置错了  占空比不变化。

使用特权

评论回复
沙发
qidiao|  楼主 | 2023-1-3 18:10 | 只看该作者
自己解决了 是那个复用的地方搞错了   请参考用户手册 端口数字复用功能

使用特权

评论回复
板凳
tpgf| | 2023-2-1 10:36 | 只看该作者
请问一下楼主 PCA是什么功能的缩写呢

使用特权

评论回复
地板
nawu| | 2023-2-1 12:09 | 只看该作者
整个PCA过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换

使用特权

评论回复
5
aoyi| | 2023-2-1 12:15 | 只看该作者
void Timer0_init(void)//设定定时器的溢出频率为1,105,920Hz @11.0592MHz
{
        AUXR |= 0x80;                //定时器时钟1T模式
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x02;                //设置定时器模式
        TL0 = 0xF5;                //设置定时初值
        TH0 = 0xF5;                //设置定时重载值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
}

void PWM_EN()
{
        CCAP0L = 0x80;//PCA0比较寄存器,使占空比达到1:1
        CCAP1L = 0x80;//PCA1比较寄存器
        CCAP0H = 0x80;//设定PCA0比较寄存器重载值后八位
        CCAP1H = 0x80;//设定PCA1比较寄存器重载值后八位
        CL = 0;//PCA计数器清零
        CH = 0;//PCA计数器清零
       
        CMOD = 0x84;  // 空闲模式下PCA计数器停止工作;定时器0溢出做PCA模块的时钟源
        CCON= 0x00;
        CCAPM0 = 0x42;//使能PWM0和比较器
        CCAPM1 = 0x42;//使能PWM1和比较器
        PCA_PWM0 = 0x00;//PCA0八位PWM模式,EPC0L(和比较寄存器组成9位数字)置零
        PCA_PWM1 = 0x00;//PCA1八位PWM模式
    //这时PWM的频率理论上为1105920/256=4320Hz
        CCON= 0x40;//使能PAC计数器
}

使用特权

评论回复
6
zljiu| | 2023-2-1 13:16 | 只看该作者
PCA指的是单片机的一个功能模块,然后PWM指的是脉冲宽度调制,是一种技术。

使用特权

评论回复
7
gwsan| | 2023-2-1 13:59 | 只看该作者
使用单片机的PCA模块可以实现PWM功能,比如要输出一个固定的频率,那么单片机只要开机时,把PCA的相关寄存器配置一下,频率就出来了,就是后台运行了,单片机就可以去做其他的事情,想连续发脉冲时,不中断其他运行中的程序。多路发出也可以,频率也可以不同,关键看单片机的功能。

使用特权

评论回复
8
tfqi| | 2023-2-1 14:05 | 只看该作者
PCA指的试可编程计数器阵列,就是说的PWM模块了,有这个的,就一定有PWM功能,不只是PWM,还有好多其他功能,比如捕捉(测脉宽)、高速输出、频率输出等。

使用特权

评论回复
9
通程创品| | 2023-2-12 13:59 | 只看该作者

HC32L130F8UA配置PCA成PWM PB1通道3不成功

从代码中来看,你配置了 PCA 模块 3,并将其配置为 PWM 模式。但是你没有指定使用 PB1 通道 3 进行 PWM 输出。你可以使用 PCA 函数来设置 PWM 输出通道。例如:
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))][color=rgba(217,217,227,var(--tw-text-opacity))][backcolor=rgba(52,53,65,var(--tw-bg-opacity))][size=0.75]scssCopy code
Pca_SetModuleFun(PcaModule3, PcaCh3, PcaPwm);

然后,你需要使用 PCA 函数来配置 PWM 输出通道的 Cn 寄存器。例如:
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))][color=rgba(217,217,227,var(--tw-text-opacity))][backcolor=rgba(52,53,65,var(--tw-bg-opacity))][size=0.75]scssCopy code
Pca_SetCn(PcaModule3, PcaCh3, 10000);

还有,你需要配置 PWM 输出通道的占空比。例如:
[backcolor=rgba(0,0,0,var(--tw-bg-opacity))][color=rgba(217,217,227,var(--tw-text-opacity))][backcolor=rgba(52,53,65,var(--tw-bg-opacity))][size=0.75]scssCopy code
Pca_SetCcap(PcaModule3, per_T);

请注意,上面的代码只是示例,实际代码需要根据你的需求进行修改。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

23

帖子

0

粉丝