<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      技術(shù)貼|如何在【RK3588】ELF 2開(kāi)發(fā)板上實(shí)現(xiàn)PWM功能復(fù)用原創(chuàng)

      發(fā)布時(shí)間:2025-12-11 10:12:12
      RK3588 RK3588開(kāi)發(fā)板 PWM 功能復(fù)用

      IOMUX(引腳功能復(fù)用)是芯片廠商為高效利用有限硬件引腳資源而設(shè)計(jì)的關(guān)鍵技術(shù),它允許單個(gè)物理引腳通過(guò)軟件配置為多種不同的功能(如GPIO、UART、I2C等)。不同SoC芯片的配置方式各異,本文將以【RK3588】ELF 2開(kāi)發(fā)板的復(fù)用PWM1為例,詳細(xì)闡述從硬件查找到軟件配置的完整流程。

      ?

      1. 引腳確認(rèn)

      在開(kāi)始配置之前,首先需要了解【RK3588】ELF 2開(kāi)發(fā)板的接口布局特點(diǎn)。開(kāi)發(fā)板的40Pin 2.54mm連接器兼容樹(shù)莓派40Pin連接器,集成了I2C、SPI、UART等常用通信接口及多路GPIO;而20Pin 2.54mm連接器則額外引出40Pin連接器未涵蓋的接口或拓展接口,包括SARADC、PWM和GPIO等。

      ?

      引腳選擇原則:進(jìn)行引腳復(fù)用時(shí),應(yīng)優(yōu)先選擇40Pin或20Pin連接器上的引腳,這類引腳位于開(kāi)發(fā)板標(biāo)準(zhǔn)排針接口,無(wú)需額外焊接,接線更加便捷。

      ?

      1.1查看引腳復(fù)用表

      引腳復(fù)用表路徑:ELF 2開(kāi)發(fā)板資料包\05-硬件資料\05-4 管腳分配表

      打開(kāi)引腳復(fù)用表后,可以看到Alt0~Alt9列是引腳的核心復(fù)用功能區(qū),這10列分別代表該引腳可配置的10種備選功能(部分未啟用列可能為空)。在表格中搜索"PWM1",所有Alt列中包含"PWM1"的行都會(huì)被篩選出來(lái)。

      ?

      雖然支持復(fù)用為PWM1功能的引腳很多,但結(jié)合"優(yōu)先選擇40Pin或20Pin連接器引腳"的原則,最終選定P2_79引腳:P2_79復(fù)用為PWM1_M2功能。

      ?

      1.2匹配開(kāi)發(fā)板引腳

      硬件原理圖路徑:ELF 2開(kāi)發(fā)板資料包\05-硬件資料\05-0 PDF原理圖

      從硬件原理圖可知,【RK3588】ELF 2開(kāi)發(fā)板共使用4個(gè)連接器,其中"P2"代表第2號(hào)連接器。需要先定位到該連接器,再查找其79號(hào)引腳。

      P2_79引腳對(duì)應(yīng)開(kāi)發(fā)板功能:SPI1--SPI4--CS(左側(cè)SPI1-CS為3576開(kāi)發(fā)板引腳功能,右側(cè)SPI4-CS為358開(kāi)發(fā)板引腳功能)

      ?

      1.3定位開(kāi)發(fā)板物理位置

      核心板的功能引腳通過(guò)連接器傳輸?shù)降装?,下面需要確認(rèn)目標(biāo)引腳在底板上的具體物理接口位置。

      在原理圖中搜索SPI1--SPI4--CS網(wǎng)絡(luò)標(biāo)號(hào):

      SPI1--SPI4--CS(P2_79引腳對(duì)應(yīng)的網(wǎng)絡(luò)標(biāo)號(hào))對(duì)應(yīng)開(kāi)發(fā)板P26接口的24引腳。

      ?

      2. 源碼

      在完成硬件引腳確認(rèn)后,接下來(lái)需要進(jìn)行軟件層面的配置工作,主要包括設(shè)備樹(shù)中的IOMUX配置和設(shè)備節(jié)點(diǎn)配置。

      ?

      2.1IOMUX配置

      確定引腳后,需要在設(shè)備樹(shù)中配置IOMUX參數(shù)以確保引腳正確工作在PWM1模式。

      打開(kāi)以下文件,找到PWM1_M2相關(guān)定義,其中pwm1m2_pins節(jié)點(diǎn)已明確配置 GPIO1_A3(pwm1_m2)的復(fù)用,配置內(nèi)容如下:

      (kernel/arch/arm64/boot/dts/rockchip/rk3588s-pinctrl.dtsi)

      ?

      2.2設(shè)備節(jié)點(diǎn)配置

      完成IOMUX配置后,打開(kāi)以下文件,在設(shè)備樹(shù)中關(guān)閉原本的SPI功能,啟用PWM1功能。

      (kernel/arch/arm64/boot/dts/rockchip/elf2-3588-common.dtsi)

      添加PWM1節(jié)點(diǎn)引用,指定引腳為pwm1m2_pins,啟用節(jié)點(diǎn)功能。

      圖片?

      2.3編譯

      配置完成后,需要重新編譯內(nèi)核以生成包含新配置的鏡像文件。

      執(zhí)行編譯命令,生成內(nèi)核鏡像:

      elf@ubuntu:~/work/ELF2-linux-source$?./build.sh kernel

      編譯完成后,將在kernel目錄下生成boot.img內(nèi)核鏡像文件。

      ?

      3. 燒錄與驗(yàn)證

      編譯生成新的內(nèi)核鏡像后,下一步是將其燒錄到開(kāi)發(fā)板并進(jìn)行驗(yàn)證。

      將kernel目錄下生成的boot.img內(nèi)核鏡像文件燒錄到開(kāi)發(fā)板。

      開(kāi)發(fā)板啟動(dòng)后,在 /dev 目錄下會(huì)生成新的PWM節(jié)點(diǎn),可通過(guò)以下命令驗(yàn)證:

      root@elf2-buildroot:~# ls?/sys/class/pwm/pwmchip0 ?pwmchip1 ?pwmchip2 ?pwmchip3

      ?

      由于PWM驅(qū)動(dòng)中生成的節(jié)點(diǎn)是依次向下枚舉的,所以pwmchip0節(jié)點(diǎn)對(duì)應(yīng)的是設(shè)備樹(shù)中的PWM1,pwmchip1節(jié)點(diǎn)對(duì)應(yīng)的是設(shè)備樹(shù)中的PWM2,pwmchip2節(jié)點(diǎn)對(duì)應(yīng)的是設(shè)備樹(shù)中的PWM4,pwmchip3節(jié)點(diǎn)對(duì)應(yīng)的是設(shè)備樹(shù)中的PWM5。

      ?

      4. 功能測(cè)試

      確認(rèn)設(shè)備節(jié)點(diǎn)生成后,需要進(jìn)行完整的功能測(cè)試以確保PWM1正常工作。

      • 將PWM接口的設(shè)備通過(guò)PWM引腳與板卡進(jìn)行連接,上電之后PWM引腳狀態(tài)為高電平。

      • 設(shè)置PWM1為輸出:

      root@elf2-buildroot:~# echo?0?>?/sys/class/pwm/pwmchip0/export

      ?

      • 設(shè)置PWM周期,單位為ns。

      root@elf2-buildroot:~# echo?1000000?>?/sys/class/pwm/pwmchip0/pwm0/period

      ?

      • 設(shè)置極性。

      root@elf2-buildroot:~# echo normal?>?/sys/class/pwm/pwmchip0/pwm0/polarity

      ?

      • 設(shè)置PWM占空比為50%。

      root@elf2-buildroot:~# echo?500000?>?/sys/class/pwm/pwmchip0/pwm0/duty_cycle

      ?

      • 使能PWM功能。

      root@elf2-buildroot:~# echo?1?>?/sys/class/pwm/pwmchip0/pwm0/enable

      ?

      • 失能PWM功能。

      root@elf2-buildroot:~# echo?0?>?/sys/class/pwm/pwmchip0/pwm0/enable

      通過(guò)以上步驟,即可完成【RK3588】ELF 2開(kāi)發(fā)板PWM1復(fù)用的配置與功能驗(yàn)證。

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計(jì)*/ /* 百度站長(zhǎng)*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>