91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JL杰理AC696N開(kāi)發(fā)板PWM波形生成與控制(1):頻率、占空比

李杰 ? 來(lái)源:jf_74684824 ? 作者:jf_74684824 ? 2026-04-03 13:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

PWM這玩意兒,做調(diào)光、調(diào)速、甚至模擬音頻都離不開(kāi)。JL杰理AC696N的定時(shí)器自帶PWM輸出功能,配置起來(lái)不算復(fù)雜,但真要調(diào)出穩(wěn)定的波形,有幾個(gè)坑是繞不開(kāi)的。比如初始化的時(shí)候LED會(huì)閃一下、占空比設(shè)0反而輸出一個(gè)高電平、想換個(gè)引腳輸出還得搞清楚通道映射。之前在AC696N開(kāi)發(fā)板上調(diào)PWM驅(qū)動(dòng)呼吸燈和電機(jī),把這些小問(wèn)題都踩了一遍,整理出來(lái)方便后面用的時(shí)候直接抄。

PWM常用于控制燈光亮度、電機(jī)速度等。JL杰理AC696N芯片的定時(shí)器支持靈活的PWM輸出。

PWM的核心參數(shù)是頻率和占空比。

wKgZO2nPUoeACJtrAAAMZndDLCU05.webp

如圖,高電平的時(shí)間(1ms) + 低電平的時(shí)間(3ms) = 4ms(一個(gè)周期)

頻率 = 1s / 4ms = 250HZ

高電平時(shí)間 / 一個(gè)周期時(shí)間 = 1ms / 4ms = 25%(占空比)

使用timer_pwm_init函數(shù)可以初始化指定定時(shí)器產(chǎn)生PWM。需要傳入定時(shí)器(如JL_TIMER3)、頻率(Hz)、初始占空比(0-10000對(duì)應(yīng)0-100%)和輸出引腳。

每個(gè)定時(shí)器有對(duì)應(yīng)的硬件引腳,也可通過(guò)通道映射(如CH2_T3_PWM_OUT)輸出到其他引腳,但需注意避免IO沖突和定時(shí)器被系統(tǒng)占用(如TIMER1、TIMER2)。

常見(jiàn)問(wèn)題包括:

初始化時(shí)LED閃爍,可通過(guò)先設(shè)置周期和占空比再開(kāi)啟計(jì)數(shù)模式解決;

wKgZPGnPUoeAV-U2AAA2pkjcOYI73.webp

占空比設(shè)為0時(shí)可能出現(xiàn)一個(gè)周期的高電平,需調(diào)整寄存器操作順序;

void set_timer_pwm_duty(JL_TIMER_TypeDef *JL_TIMERx, u32 duty) { if(duty == 0){ if(JL_TIMERx->PWM == 0){ return; } //計(jì)時(shí)標(biāo)志,進(jìn)來(lái)此函數(shù)前PB3已經(jīng)設(shè)置為高電平,PB3部分控制可省略 JL_PORTB->OUT &= ~BIT(3); /*周期內(nèi)低電平時(shí)期進(jìn)入此函數(shù),強(qiáng)制延長(zhǎng)半個(gè)到一個(gè)周期等下一個(gè)周期下降沿再觸發(fā), 防止一個(gè)周期最后1us左右時(shí)間觸發(fā)此函數(shù)導(dǎo)致的程序執(zhí)行時(shí)間不夠?qū)е聵O短時(shí)間的高電平*/ if(JL_TIMERx->CNT > JL_TIMERx->PWM){ while(JL_TIMERx->CNT > JL_TIMERx->PWM){ delay(1); } while(JL_TIMERx->CNT < JL_TIMERx-?>PWM){ delay(1); } } //周期內(nèi)高電平時(shí)間進(jìn)入此函數(shù),等周期內(nèi)低電平時(shí)間觸發(fā) while(JL_TIMERx->CNT < JL_TIMERx-?>PWM){ delay(1); } //關(guān)閉PWM波形 JL_TIMERx->CON &= ~BIT(8); //時(shí)間標(biāo)志 JL_PORTB->OUT |= BIT(3); } else{ //開(kāi)啟PWM JL_TIMERx->CON |= BIT(8); } JL_TIMERx->PWM = (JL_TIMERx->PRD * duty) / 10000; //0~10000對(duì)應(yīng)0~100% //時(shí)間標(biāo)志 JL_PORTB->OUT &= ~BIT(3); } void timer_pwm_test(void) { //PB3為了計(jì)時(shí)設(shè)置,可以去掉 gpio_set_pull_down(IO_PORTB_03,0); gpio_set_pull_up(IO_PORTB_03,0); gpio_set_direction(IO_PORTB_03,0); timer_pwm_init(JL_TIMER3, 100000, 2000, IO_PORTB_05, 0); } //測(cè)試按鍵消息 case KEY_SET_PWM: log_info("KEY_SET_PWMn"); static int pwm_flag = 0; JL_PORTB->OUT |= BIT(3); if(pwm_flag){ set_timer_pwm_duty(JL_TIMER3,0); pwm_flag = 0; } else{ set_timer_pwm_duty(JL_TIMER3,5000); pwm_flag = 1; } break;

問(wèn)題波形1(占空比變?yōu)?時(shí)1周期的高電平):

wKgZO2nPUoeAWyzUAAAe6GIhv6Y03.webp

問(wèn)題波形2(周期末尾操作寄存器執(zhí)行時(shí)間不夠?qū)е虏ㄐ雾樠拥较轮芷诓艌?zhí)行):

wKgZPGnPUoiAPRfTAAAi_Ew8hgg16.webp

以及操作寄存器時(shí)機(jī)不當(dāng)導(dǎo)致波形順延。

理解時(shí)鐘源選擇(系統(tǒng)時(shí)鐘或晶振時(shí)鐘)對(duì)產(chǎn)生高頻率PWM也至關(guān)重要。

總結(jié)

PWM配置看著簡(jiǎn)單,但細(xì)節(jié)決定成敗。

定時(shí)器別跟系統(tǒng)沖突,TIMER1和TIMER2通常被系統(tǒng)占用,建議用TIMER3及以后的。

初始化順序很重要,先配周期和占空比,再開(kāi)計(jì)數(shù),不然會(huì)看到一個(gè)意外的脈沖。占空比從0到10000對(duì)應(yīng)0%到100%,想設(shè)50%就寫(xiě)5000。

如果需要高頻率輸出(比如幾十kHz以上),時(shí)鐘源選系統(tǒng)時(shí)鐘,別選晶振時(shí)鐘,頻率上限更高。

建議在AC696N開(kāi)發(fā)板上先用示波器把基礎(chǔ)波形抓出來(lái),確認(rèn)頻率和占空比都對(duì)得上,再往實(shí)際應(yīng)用里套,省得后面調(diào)半天分不清是代碼問(wèn)題還是硬件問(wèn)題。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5886

    瀏覽量

    226322
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6368

    瀏覽量

    119967
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    JLAC696N開(kāi)發(fā)板PWM波形生成控制(2):?jiǎn)栴}排查

    AC696N上都有對(duì)應(yīng)的解決辦法。剛用AC696N開(kāi)發(fā)板調(diào)PWM的時(shí)候把這些坑都踩了一遍,把問(wèn)題現(xiàn)象和解決方案整理出來(lái),方便遇到類(lèi)似情況時(shí)快速定位。
    發(fā)表于 04-07 14:07

    JLAC696N開(kāi)發(fā)板做存儲(chǔ)設(shè)備適配(1):SD/TF卡與MMC卡的基礎(chǔ)配置與兼容

    JLAC696N開(kāi)發(fā)板做存儲(chǔ)設(shè)備適配(1):SD/TF卡與MMC卡的基礎(chǔ)配置與兼容 引言 做
    發(fā)表于 04-06 19:31

    JLAC696N開(kāi)發(fā)板PWM波形生成控制(2):?jiǎn)栴}排查

    JLAC696N開(kāi)發(fā)板PWM波形
    發(fā)表于 04-05 23:45

    JLAC696N開(kāi)發(fā)板PWM波形生成控制(1):頻率、占空比配置

    32-JLAC696N開(kāi)發(fā)板PWM波形
    發(fā)表于 04-03 21:44

    JLAC696N系列開(kāi)發(fā)GPIO控制大全:模式、API與特殊引腳

    JLAC696N系列開(kāi)發(fā)GPIO控制大全:模式、API與特殊引腳 引言 GPIO配置看著簡(jiǎn)單
    發(fā)表于 04-02 21:21

    JLAC696N系列芯片SPI接口實(shí)戰(zhàn):驅(qū)動(dòng)Flash、LCD與RGB燈

    文章闡述了,AC696N系列芯片功能:驅(qū)動(dòng)Flash、LCD、RGB等。AC696N開(kāi)發(fā)板支持SPI主機(jī)模式,可輕松驅(qū)動(dòng)這種類(lèi)型外設(shè)。
    的頭像 發(fā)表于 04-01 17:49 ?1070次閱讀
    <b class='flag-5'>JL</b><b class='flag-5'>杰</b><b class='flag-5'>理</b><b class='flag-5'>AC696N</b>系列芯片SPI接口實(shí)戰(zhàn):驅(qū)動(dòng)Flash、LCD與RGB燈

    JLAC696N開(kāi)發(fā)板引腳速查:AC6966B開(kāi)發(fā)板關(guān)鍵接口連接圖

    硬件開(kāi)發(fā),引腳定義是“地圖”。本文將JLAC696N開(kāi)發(fā)板的核心引腳連接以圖表形式清晰呈現(xiàn)
    發(fā)表于 04-01 09:52

    JLAC696N系列芯片開(kāi)發(fā)UART串口應(yīng)用寶典:打印、調(diào)音與通信Demo

    本文闡述了關(guān)于AC696N系列芯片開(kāi)發(fā)UART串口應(yīng)用:打印、調(diào)音、通信Demo,能夠?yàn)榇蠹覍?duì)AC696N系列芯片做串口類(lèi)方案時(shí)的一個(gè)小
    的頭像 發(fā)表于 03-31 10:00 ?353次閱讀
    <b class='flag-5'>JL</b><b class='flag-5'>杰</b><b class='flag-5'>理</b><b class='flag-5'>AC696N</b>系列芯片<b class='flag-5'>開(kāi)發(fā)</b>UART串口應(yīng)用寶典:打印、調(diào)音與通信Demo

    JLAC696N開(kāi)發(fā)之定時(shí)器系統(tǒng)全解析:sys_timer與usr_timer的應(yīng)用

    做藍(lán)牙音頻或IoT嵌入式開(kāi)發(fā),定時(shí)器用不好是真要命——回調(diào)睡過(guò)頭、中斷里卡死、低功耗喚醒亂套……這些坑估計(jì)不少人都踩過(guò)。 最近在整理總結(jié)JL A
    發(fā)表于 03-31 09:53

    JLAC696N開(kāi)發(fā)板使用教程-低功耗基礎(chǔ):AC6966B芯片的復(fù)位與喚醒源配置

    引言 在電池供電產(chǎn)品里,低功耗做不好,其他功能再?gòu)?qiáng)也是白搭。JLAC696N這顆芯片在藍(lán)牙耳機(jī)、音箱方案里用得挺多的,功耗控制本身底子不
    發(fā)表于 03-30 11:15

    JLAC696N系列芯片開(kāi)發(fā)經(jīng)驗(yàn):芯片復(fù)位與喚醒源深度解析

    簡(jiǎn)介 做低功耗產(chǎn)品,最頭疼的就是兩個(gè)問(wèn)題:一是設(shè)備無(wú)緣無(wú)故重啟了,找不到原因;二是睡眠之后喚不醒,或者誤喚醒導(dǎo)致功耗居高不下。 JLAC696N這個(gè)系列的芯片在藍(lán)牙耳機(jī)、音箱、Io
    發(fā)表于 03-28 10:57

    JLAC696N開(kāi)發(fā)板電源管理精要:提高內(nèi)核電壓與長(zhǎng)按復(fù)位配置

    本文簡(jiǎn)易闡述了JLAC696N開(kāi)發(fā)板電源管理模塊的信息。
    的頭像 發(fā)表于 03-28 10:54 ?229次閱讀
    <b class='flag-5'>JL</b><b class='flag-5'>杰</b><b class='flag-5'>理</b><b class='flag-5'>AC696N</b><b class='flag-5'>開(kāi)發(fā)板</b>電源管理精要:提高內(nèi)核電壓與長(zhǎng)按復(fù)位配置

    AC6966B開(kāi)發(fā)板開(kāi)發(fā)準(zhǔn)備-環(huán)境搭建:Windows下JLAC696N開(kāi)發(fā)環(huán)境配置

    做藍(lán)牙音頻、音箱或IoT產(chǎn)品的開(kāi)發(fā),最怕的不是寫(xiě)代碼,而是環(huán)境配半天跑不起來(lái)。JLAC696N這顆芯片在耳機(jī)、音箱方案里很常見(jiàn),性價(jià)比高
    的頭像 發(fā)表于 03-28 09:52 ?254次閱讀
    <b class='flag-5'>AC</b>6966B<b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>開(kāi)發(fā)</b>準(zhǔn)備-環(huán)境搭建:Windows下<b class='flag-5'>JL</b><b class='flag-5'>杰</b><b class='flag-5'>理</b><b class='flag-5'>AC696N</b><b class='flag-5'>開(kāi)發(fā)</b>環(huán)境配置

    藍(lán)牙音頻產(chǎn)品開(kāi)發(fā),五分鐘上手:從AC696N開(kāi)發(fā)板出廠直觀的功能體驗(yàn)開(kāi)始

    無(wú)需編寫(xiě)一行代碼,JLAC696N開(kāi)發(fā)板出廠程序已集成了完整的多媒體功能。通過(guò)幾個(gè)按鍵,快速體驗(yàn)它的所有功能和強(qiáng)大。 “藍(lán)牙模式” “音
    發(fā)表于 03-24 23:49

    JLAC696N開(kāi)發(fā)板引腳速查:AC6966B開(kāi)發(fā)板關(guān)鍵接口連接圖

    硬件開(kāi)發(fā),引腳定義是“地圖”。本文將JLAC696N開(kāi)發(fā)板的核心引腳連接以圖表形式清晰呈現(xiàn)
    發(fā)表于 03-23 21:21