Microchip的主流开发环境是MPLAB X IDE,对于SAME51J20A系列的芯片,如何在官方IDE中进行PWM配置,本文将分享一些经验。
TC外设:Timer / Counter。在SAME51J20A中最多有8个TC外设实例。每个TC由一个计数器、一个预分频器、比较/捕获通道和控制逻辑组成。Counter可以设置为计数事件,或时钟脉冲。
计数器,以及比较/捕获通道,可以配置为输入事件或IO引脚边的时间戳,允许捕获频率和/或脉冲宽度。TC还可以进行波形产生,如频率产生和脉宽产生调制。该模块的框图如下:

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

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

配置PIN引脚功能复用:

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

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 */
}
}烧录,打开逻辑分析仪查看捕获数据:

占空比调节为20%

占空比调节为40%

占空比调节为80%

小结:
使用MPLAB X IDE配置Microchip的芯片,可以自动生成代码,快速进行原型验证。
我要赚赏金
