伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

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

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

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

RK平臺(tái)PWM開(kāi)發(fā)總結(jié)

jf_44130326 ? 來(lái)源:Linux1024 ? 2026-02-04 17:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、PWM基礎(chǔ)原理與RK平臺(tái)特性

(一)PWM核心原理

脈寬調(diào)制(PWMPulse Width Modulation)通過(guò)微處理器數(shù)字輸出控制模擬電路,核心是調(diào)整輸出波形的周期信號(hào)重復(fù)的時(shí)間間隔)和占空比(一個(gè)周期內(nèi)高電平持續(xù)時(shí)間占比),實(shí)現(xiàn)對(duì)電壓、亮度等物理量的精準(zhǔn)調(diào)控,廣泛應(yīng)用于測(cè)量、通信、功率控制等領(lǐng)域。

(二)RK平臺(tái)PWM關(guān)鍵特性

1.支持模式:共3種模式,不同模式用途差異顯著

?Continuous mode(連續(xù)模式):持續(xù)輸出固定周期和占空比的波形,是最常用模式,主要用于背光控制、電機(jī)調(diào)速等場(chǎng)景

?One-shot mode(單觸發(fā)模式):僅輸出一個(gè)完整波形后停止,適用于單次觸發(fā)的控制場(chǎng)景(如單次脈沖信號(hào)觸發(fā))

?Capture mode(捕獲模式):用于捕獲外部輸入波形的高低電平寬度,典型應(yīng)用是紅外遙控解碼(配合中斷實(shí)現(xiàn)鍵值識(shí)別)

1.硬件配置:內(nèi)置4通道,每個(gè)通道對(duì)應(yīng)獨(dú)立控制單元,支持多設(shè)備同時(shí)使用PWM功能

2.內(nèi)核兼容性:覆蓋Linux 3.104.4及以上(含4.19)內(nèi)核版本,不同版本在驅(qū)動(dòng)接口DTS配置上存在差異

二、RK平臺(tái)PWM開(kāi)發(fā)操作流程

(一)驅(qū)動(dòng)相關(guān)配置

1.驅(qū)動(dòng)文件路徑與差異

?統(tǒng)一路徑:drivers/pwm/pwm-rockchip.c(所有內(nèi)核版本通用)

wKgZO2kalr2AWbqsAAIO3PkO3mc787.png

?內(nèi)核版本差異:

Linux 3.10:使用原始接口(pwm_config()pwm_enable()pwm_disable()),僅支持Continuous mode

Linux 4.4及以上(含4.19:將參數(shù)配置與使能/禁用封裝為pwm_apply_state()函數(shù),支持一次修改多個(gè)參數(shù)(周期、占空比、極性),效率更高,同樣僅支持Continuous mode

1.DTS節(jié)點(diǎn)配置:需根據(jù)內(nèi)核版本調(diào)整參數(shù)數(shù)量,與“pwm-cells”值對(duì)應(yīng)

wKgZO2kalr2AO7gpAAD5bCgmOyQ591.png

backlight: backlight {  compatible ="pwm-backlight";  pwms = <&pwm0?0250000>;  brightness-levels = <01...255>;// 256級(jí)亮度,0~255對(duì)應(yīng)0%~100%占空比 default-brightness-level = <200>;// 默認(rèn)亮度(第200級(jí))  enable-gpios = <&gpio1?13GPIO_ACTIVE_HIGH>;// 背光使能引腳};

?參數(shù)說(shuō)明

參數(shù)1index(通道索引),默認(rèn)0RK平臺(tái)每個(gè)PWM芯片僅1個(gè)通道)

參數(shù)2:周期(單位:ns),如25000ns對(duì)應(yīng)40KHz頻率

參數(shù)3:極性(可選),PWM_POLARITY_INVERTED表示負(fù)極性,僅“pwm-cells=3”時(shí)需配置

?版本差異示例

Linux 3.10pwm-cells=2):pwms = <&pwm 0 25000>;

Linux 4.4/4.19pwm-cells=3):pwms = <&pwm 0 25000 PWM_POLARITY_INVERTED>;

?背光場(chǎng)景擴(kuò)展配置:需添加亮度等級(jí)、默認(rèn)亮度、使能引腳等參數(shù),示例如下

(二)PWM工作流程(以Linux 4.4為例,Continuous mode

1.狀態(tài)應(yīng)用(Apply State:觸發(fā)PWM參數(shù)配置流程,先判斷是否需要加鎖

?需加鎖:先執(zhí)行Lock操作,避免配置過(guò)程中參數(shù)被篡改

?無(wú)需加鎖:直接進(jìn)入?yún)?shù)配置

1.參數(shù)配置

?必選:配置周期(Period)和占空比(Duty Cycle

?可選:若支持極性配置(pwm-cells=3),設(shè)置極性(Normal/Inverted

1.鎖操作:若之前加鎖,配置完成后執(zhí)行Unlock

2.使能/禁用控制

?需使能(Enable PWM=yes):執(zhí)行Enable操作,PWM開(kāi)始輸出波形

?需禁用(Enable PWM=no):執(zhí)行Disable操作,PWM停止輸出

1.狀態(tài)同步(Sync State:確保硬件狀態(tài)與配置參數(shù)一致,完成流程

(三)用戶(hù)空間使用(通過(guò)/sys/class/pwm接口)

1.導(dǎo)出PWM通道:進(jìn)入/sys/class/pwm/pwmchip0/,執(zhí)行echo 0 > export,生成pwm0目錄(關(guān)閉通道執(zhí)行echo 0 > unexport

2.配置參數(shù):進(jìn)入pwm0目錄,通過(guò)文件寫(xiě)入配置

?周期:echo 10000 > period10000ns=10μs,對(duì)應(yīng)100KHz頻率)

?占空比:echo 5000 > duty_cycle5000ns,占空比50%

?極性:echo normal > polaritynormal =正極性,inversed =負(fù)極性)

1.使能輸出echo 1 > enable(禁用執(zhí)行echo 0 > enable

三、RK平臺(tái)PWM主要用途

(一)背光控制(最典型場(chǎng)景)

基于Continuous mode,通過(guò)調(diào)整PWM占空比控制背光亮度:

?正極性:亮度等級(jí)0~255對(duì)應(yīng)占空比0%~100%(等級(jí)越高越亮)

?負(fù)極性:亮度等級(jí)與占空比反向(等級(jí)越高越暗)

?應(yīng)用:顯示屏背光調(diào)節(jié),如手機(jī)、平板、電視等設(shè)備

(二)紅外遙控解碼(基于Capture mode

1.原理PWM捕獲紅外接收頭輸出的高低電平寬度,觸發(fā)中斷后CPU讀取寄存器值,根據(jù)NEC編碼協(xié)議(RK平臺(tái)僅支持NEC)解碼用戶(hù)碼和鍵值碼

2.操作流程

&remotectl {  handle_cpu_id = <2>;// 中斷處理CPU核心(4核0~3,雙核0~1)  ir_key1{    rockchip,usercode = <0x4040>;    rockchip,key_table = <0xf4KEY_UP>, <0xf1KEY_DOWN>;// 鍵值與功能映射  };};

?打開(kāi)調(diào)試開(kāi)關(guān):

echo1 > sys/module/rockchip_pwm_remotectl/parameters/code_print

?記錄鍵值:按下遙控器按鍵,通過(guò)打印獲取usercode(如0x4040)和鍵值(如0xe9

?添加鍵值到DTS:在&remotectl {}節(jié)點(diǎn)中配置usercodekey_table,示例

(三)其他用途

?電機(jī)調(diào)速:通過(guò)調(diào)整PWM占空比控制電機(jī)轉(zhuǎn)速(如風(fēng)扇、小功率電機(jī))

?電壓調(diào)節(jié)(PWM Regulator):配合電源管理模塊,輸出不同占空比的PWM信號(hào)實(shí)現(xiàn)電壓動(dòng)態(tài)調(diào)整

四、常見(jiàn)問(wèn)題與解決方案

(一)U-BootKernel銜接問(wèn)題

1.問(wèn)題現(xiàn)象U-Boot中使用PWM調(diào)壓后,進(jìn)入Kernel階段PWM失效(如電壓不足死機(jī))

2.原因

?Kernel未同步U-Boot階段的PWM硬件狀態(tài)(如clock count

?兩者時(shí)鐘源頻率、極性、周期配置不一致

1.解決方案

?更新驅(qū)動(dòng)文件:drivers/pwm/pwm-rockchip.c

?統(tǒng)一配置:U-BootKernelGPLL時(shí)鐘頻率(PWM時(shí)鐘掛在GPLL下)、極性、周期保持一致;U-Boot頻率通過(guò)開(kāi)機(jī)log查看,Kernel頻率通過(guò)cat /sys/kernel/debug/clock/clock_tree | grep gpll查看

(二)PWM Regulator引腳上下拉配置問(wèn)題

1.問(wèn)題現(xiàn)象:系統(tǒng)重啟(reboot)后,PWM Regulator默認(rèn)電壓變化

2.原因:重啟時(shí)GRF寄存器不復(fù)位,但PWM控制器復(fù)位,引腳上下拉配置為“none”導(dǎo)致?tīng)顟B(tài)異常

3.解決方案

// dtsi中定義pwm2_pin_pull_down: pwm2-pin-pull-down {  rockchip,pins = <119RK_FUNC_1 &pcfg_pull_down>;};// dts中覆蓋&pwm2 {  status ="okay";  pinctrl-names ="active";  pinctrl-0= <&pwm2_pin_pull_down>;};

?確認(rèn)硬件默認(rèn)上下拉:通過(guò)原理圖查看引腳標(biāo)識(shí)(“d”=下拉,“u”=上拉,如RK3399 PWM2引腳GPIO1_C3/PWM2_d為默認(rèn)下拉)

?DTS配置引腳上下拉:在dtsi中定義pinctrldts中覆蓋配置,示例

(三)PWM波形示波器無(wú)法檢測(cè)

1.第一步:檢查PWM是否工作(通過(guò)Counter Register寄存器)

?寄存器值變化:PWM工作正常,問(wèn)題在引腳

可能原因:iomux配置錯(cuò)誤(引腳功能未切換為PWM)、io-domain配置錯(cuò)誤、外部硬件干擾

解決方案:重新配置iomuxio-domain,排查硬件接線或干擾源

?寄存器值無(wú)變化:PWM工作異常,問(wèn)題在核心配置

可能原因:時(shí)鐘未使能、PWM未使能、duty>period(占空比配置無(wú)效)、RK3368未配置GRF_SOC_CON15寄存器bit12=1

解決方案:使能時(shí)鐘和PWM,修正dutyperiod關(guān)系,RK3368額外配置GRF寄存器

五、思維導(dǎo)圖總結(jié)

wKgZO2kalr2AdsqLAAIfT8nNExI298.png ?

聲明:本文內(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

    文章

    5875

    瀏覽量

    225958
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2431

    瀏覽量

    85956
  • 脈寬調(diào)制
    +關(guān)注

    關(guān)注

    3

    文章

    238

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RK3588開(kāi)發(fā)板(armsom-w3)之PWM實(shí)操

    RK3588開(kāi)發(fā)板(armsom-w3) 之 PWM實(shí)操
    的頭像 發(fā)表于 06-10 10:38 ?4108次閱讀
    <b class='flag-5'>RK</b>3588<b class='flag-5'>開(kāi)發(fā)</b>板(armsom-w3)之<b class='flag-5'>PWM</b>實(shí)操

    基于小凌派RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制PWM外設(shè)

    1、案例簡(jiǎn)介本案例是在小凌派-RK2206開(kāi)發(fā)板上使用IoT庫(kù)PWM接口,進(jìn)行PWM編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),每隔5秒將
    的頭像 發(fā)表于 04-09 08:59 ?2754次閱讀
    基于小凌派<b class='flag-5'>RK</b>2206<b class='flag-5'>開(kāi)發(fā)</b>板:OpenHarmony如何使用IoT接口控制<b class='flag-5'>PWM</b>外設(shè)

    【瑞芯微RK1808計(jì)算棒試用體驗(yàn)】RK3399 平臺(tái)使用RK1808 加速棒總結(jié)

    RK3399 平臺(tái)使用RK1808 加速棒總結(jié)使用步驟1)將RK3399 與RK1808 通過(guò)u
    發(fā)表于 10-25 09:43

    ROC-RK3308-CC開(kāi)發(fā)實(shí)例總結(jié)

    ROC-RK3308-CC開(kāi)發(fā)實(shí)例總結(jié)--GPRS模塊調(diào)試
    發(fā)表于 01-15 07:27

    基于RK3399 PWM驅(qū)動(dòng)開(kāi)發(fā)的過(guò)程是怎樣的?

    基于RK3399 PWM驅(qū)動(dòng)開(kāi)發(fā)的過(guò)程是怎樣的?
    發(fā)表于 03-07 07:16

    記錄總結(jié)一下基于RK3128平臺(tái)的LCD驅(qū)動(dòng)調(diào)試步驟

    1、rk3128 lcd驅(qū)動(dòng)調(diào)試記錄  最近剛調(diào)試了基于rk3128平臺(tái)的lcd驅(qū)動(dòng),順便記錄總結(jié)一下,有不足之處,望各位不吝賜教!  關(guān)于framebuffer(幀緩沖設(shè)備)的架構(gòu)這
    發(fā)表于 09-23 16:28

    Firefly-RK3399--PWM介紹

    Firefly-RK3399 開(kāi)發(fā)板上有 4 路 PWM 輸出,分別為 PWM0 ~ PWM3,4路 P
    的頭像 發(fā)表于 11-22 10:08 ?6344次閱讀
    Firefly-<b class='flag-5'>RK3399--PWM</b>介紹

    Firefly-RK3288PWM輸出介紹

    Firefly-RK3288 開(kāi)發(fā)板上有 4 路 PWM 輸出,分別為 PWM0 ~ PWM3, 本章主要描述如何配置
    的頭像 發(fā)表于 11-25 10:31 ?2989次閱讀

    Firefly-RK3128主板PWM輸出介紹

    Firefly-RK3128 開(kāi)發(fā)板上有 4 路 PWM 輸出,分別為 PWM0 ~ PWM3
    的頭像 發(fā)表于 11-28 16:56 ?3389次閱讀
    Firefly-<b class='flag-5'>RK</b>3128主板<b class='flag-5'>PWM</b>輸出介紹

    fireflyFace-RK3399主板PWM輸出介紹

    Face-RK3399開(kāi)發(fā)板上引出有 2 路 PWM 輸出,
    的頭像 發(fā)表于 12-04 09:35 ?5202次閱讀

    迅為5G工業(yè)互聯(lián)網(wǎng)方案RK3399開(kāi)發(fā)平臺(tái)

    迅為5G工業(yè)互聯(lián)網(wǎng)方案RK3399開(kāi)發(fā)平臺(tái)
    的頭像 發(fā)表于 03-11 15:21 ?1439次閱讀
    迅為5G工業(yè)互聯(lián)網(wǎng)方案<b class='flag-5'>RK</b>3399<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>平臺(tái)</b>

    OpenHarmony:如何使用HDF平臺(tái)驅(qū)動(dòng)控制PWM

    1、程序介紹本程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫(xiě)的平臺(tái)驅(qū)動(dòng)案例:PWM目前已在凌蒙派-RK3568開(kāi)發(fā)板跑通。
    的頭像 發(fā)表于 09-14 08:24 ?2035次閱讀
    OpenHarmony:如何使用HDF<b class='flag-5'>平臺(tái)</b>驅(qū)動(dòng)控制<b class='flag-5'>PWM</b>

    rk3566-pwm內(nèi)核驅(qū)動(dòng)

    rk3566-pwm內(nèi)核驅(qū)動(dòng)
    發(fā)表于 01-05 09:18 ?0次下載

    迅為RK3576開(kāi)發(fā)板高算力低成本工業(yè)級(jí)核心板卡開(kāi)發(fā)平臺(tái)

    迅為RK3576開(kāi)發(fā)板高算力低成本工業(yè)級(jí)核心板卡開(kāi)發(fā)平臺(tái)
    的頭像 發(fā)表于 06-09 15:13 ?1853次閱讀
    迅為<b class='flag-5'>RK</b>3576<b class='flag-5'>開(kāi)發(fā)</b>板高算力低成本工業(yè)級(jí)核心板卡<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>平臺(tái)</b>

    RK平臺(tái)Linux IOMMU開(kāi)發(fā):從原理到實(shí)戰(zhàn)

    顯示(VOP)、編解碼(VPU/HEVC)等場(chǎng)景。今天就從原理、驅(qū)動(dòng)、實(shí)戰(zhàn)、問(wèn)題排查、Linux 內(nèi)存管理支撐五個(gè)維度,帶大家快速上手 RK 平臺(tái) IOMMU 開(kāi)發(fā)
    的頭像 發(fā)表于 02-04 16:24 ?1875次閱讀
    <b class='flag-5'>RK</b><b class='flag-5'>平臺(tái)</b>Linux IOMMU<b class='flag-5'>開(kāi)發(fā)</b>:從原理到實(shí)戰(zhàn)