这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置

共3条 1/1 1 跳转至

【换取手持数字示波器】MicrochipMPLABHarmony框架下PWM配置

工程师
2025-05-25 12:14:52     打赏

Microchip的主流开发环境是MPLAB X IDE,对于SAME51J20A系列的芯片,如何在官方IDE中进行PWM配置,本文将分享一些经验。

TC外设:Timer / Counter。在SAME51J20A中最多有8个TC外设实例。每个TC由一个计数器、一个预分频器、比较/捕获通道和控制逻辑组成。Counter可以设置为计数事件,或时钟脉冲。

计数器,以及比较/捕获通道,可以配置为输入事件或IO引脚边的时间戳,允许捕获频率和/或脉冲宽度。TC还可以进行波形产生,如频率产生和脉宽产生调制。该模块的框图如下:

image.png

对于PWM(脉冲宽度调制)波形的输出,可以使用如下Normal Freq Gen (NFRQ)模式:

image.png

参考数据手册,芯片的PA18引脚具有TC3功能:

image.png

配置PIN引脚功能复用:

image.png

配置初始化占空比为10%: MAX (0XFFFF, 65535)*10% = 6553: 在MCC图形化配置工具中

image.png

Counter Up模式:开始计数值比Compare 0 Value小,PWM输出低电平;计数值比Compare 0 Value大后,输出高电平。

对于TC3模块进行初始化:

void TC3_CompareInitialize( void )
{
    /* Reset TC */
    TC3_REGS->COUNT16.TC_CTRLA = TC_CTRLA_SWRST_Msk;

    while((TC3_REGS->COUNT16.TC_SYNCBUSY & TC_SYNCBUSY_SWRST_Msk) == TC_SYNCBUSY_SWRST_Msk)
    {
        /* Wait for Write Synchronization */
    }

    /* Configure counter mode & prescaler */
    TC3_REGS->COUNT16.TC_CTRLA = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER_DIV64 | TC_CTRLA_PRESCSYNC_PRESC ;

    /* Configure waveform generation mode */
    TC3_REGS->COUNT16.TC_WAVE = (uint8_t)TC_WAVE_WAVEGEN_NPWM;


    TC3_REGS->COUNT16.TC_CC[0] = 6553U;
    TC3_REGS->COUNT16.TC_CC[1] = 24U;

    /* Clear all interrupt flags */
    TC3_REGS->COUNT16.TC_INTFLAG = (uint8_t)TC_INTFLAG_Msk;


    while((TC3_REGS->COUNT16.TC_SYNCBUSY) != 0U)
    {
        /* Wait for Write Synchronization */
    }
}

烧录,打开逻辑分析仪查看捕获数据:

image.png

占空比调节为20%

image.png

占空比调节为40%

image.png

占空比调节为80%

image.png

小结:

使用MPLAB X IDE配置Microchip的芯片,可以自动生成代码,快速进行原型验证。


专家
2025-05-25 12:27:09     打赏
2楼

感谢分享


院士
2025-05-30 16:32:04     打赏
3楼

一个普通的示例实验,楼主都能写得这么图文并茂。

赞一下


共3条 1/1 1 跳转至

回复

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