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的芯片,可以自动生成代码,快速进行原型验证。