JL杰理AC696N开发板PWM波形生成与控制(1):频率、占空比配置

张开发
2026/4/13 4:57:15 15 分钟阅读

分享文章

JL杰理AC696N开发板PWM波形生成与控制(1):频率、占空比配置
JL杰理AC696N开发板PWM波形生成与控制(1)频率、占空比配置引言PWM调光、调速、甚至模拟发声这些场景做嵌入式的天天见。JL杰理AC696N的定时器可以灵活输出PWM但很多新手上来就问频率设多少合适占空比精度够不够定时器选哪个不冲突最近用AC696N开发板调PWM的时候把这些基础问题都过了一遍把频率、占空比、时钟源、引脚映射这些配置要点整理出来方便写代码的时候直接参考。PWM常用于调光、调速、发声等。JL杰理AC696N的定时器可灵活产生PWM本文将手把手教你实现。一、PWM核心概念频率每秒周期数。占空比一个周期内高电平所占比例决定输出平均电压。如图高电平时间1ms 低电平时间3ms 4ms一个周期频率 1s / 4ms 250Hz占空比 1ms / 4ms 25%二、PWM频率和占空比精度的关系PWM波形由固定时钟控制产生时钟 频率 × 周期时间周期时间决定了占空比精度。如果一个周期内有100个时间点精度就是1/100。结论频率越高占空比精度越低。实际项目中需要在频率和精度之间做取舍。三、使用 timer_pwm_init 函数这是产生PWM的主要函数位于mcpwm.c/** * param JL_TIMERx : JL_TIMER0/1/2/3/4/5 * param fre : 频率单位Hz不小于95 * param duty : 初始占空比0~10000对应0~100% * param port : pwm脚可选硬件脚也可选非硬件脚 * param output_ch : 映射通道当pwm脚选择非硬件脚时有效 */ int timer_pwm_init(JL_TIMER_TypeDef *JL_TIMERx, u32 fre, u32 duty, u32 port, int output_ch)定时器与硬件引脚对应关系定时器硬件引脚TIMER0IO_PORTA_05TIMER1IO_PORTC_04TIMER2IO_PORTB_03TIMER3IO_PORTB_05TIMER4IO_PORTA_01TIMER5IO_PORTB_07使用示例// 使用定时器对应的硬件引脚 timer_pwm_init(JL_TIMER3, 1000, 3000, IO_PORTB_05, 0); // PB05: 1KHz, 30%占空比 // 通道映射到其他IO口 timer_pwm_init(JL_TIMER3, 2000, 5000, IO_PORTB_04, CH2_T3_PWM_OUT);四、关键配置与注意点1. 引脚选择优先使用定时器对应的硬件引脚无对应IO时可通过output_ch通道映射到其他IO通道定义在gpio.h中格式为CHx_Tn_PWM_OUTx通道n定时器注意映射输出时定时器对应的硬件IO口也会产生波形优先用硬件引脚避免IO浪费2. 占空比精度公版代码占空比输入是0~10000对应0~100%。如需改成0~1000修改JL_TIMERx-PWM (JL_TIMERx-PRD * duty) / 1000;3. 时钟源选择JL_TIMERx-CON | (0b10 2); // 默认晶振时钟源24MHz默认24MHz晶振时钟如需更高频率PWM可改用系统时钟AC695/696约60MHz频率上限更高4. 定时器占用TIMER1系统自己使用不建议动TIMER2默认用于UI显示建议关掉UI显示再用定时器冲突一般会导致程序复位或死机总结PWM配置核心就三件事选对定时器、算好频率、配好占空比。定时器优先用TIMER3及以后的避开系统占用的TIMER1和可能用于UI的TIMER2。频率和精度是跷跷板关系高频输出时占空比精度会下降根据实际需求平衡取舍。通道映射功能可以把PWM引到任意IO但注意硬件对应的那个IO也会同时输出。建议在AC696N开发板上先用示波器抓一下默认配置的波形确认频率和占空比都对得上再往下调。

更多文章