PWM 和之前講解的 LED、GPIO 相同,都是通過 sysfs 方式進(jìn)行操控的。開發(fā)板系統(tǒng)啟 動之后進(jìn)入到/sys/class/pwm 目錄下,如下所示: 在 pwm 目錄下存在 3 個以 pwmchipX(X 表示數(shù)字)命名的文件夾。在本章節(jié)的開始部 分,重新燒寫了設(shè)備樹內(nèi)核鏡像,該設(shè)備樹中總共使能了三個 PWM,分別為 PWM0,PWM4 和 PWM5,系統(tǒng)會根據(jù) PWM 的編號大小進(jìn)行排序,在這里 PWM0 對應(yīng) pwmchip0、PWM4 對 應(yīng) pwmchip1,PWM5 對應(yīng) pwmchip2。 通過查詢網(wǎng)盤“TOP-3568 開發(fā)板\01_【iTOP-RK3568 開發(fā)板】基礎(chǔ)資料\01_iTOP-RK3568 硬件資料\03_芯片數(shù)據(jù)手冊\01_rk3568 數(shù)據(jù)手冊和參考手冊”路徑下的 Rockchip RK3568 Data sheet V1.0-20201210.pdf 數(shù)據(jù)手冊得知,RK3568 總共有 16 個 PWM 控制器(具體的查詢會 在之后的驅(qū)動手冊中進(jìn)行講解,本章節(jié)只是學(xué)習(xí) PWM 的使用),本章節(jié)將會以 LED9 用戶燈 控制引腳 GPIO0_B7 對應(yīng)的 PWM0 為例進(jìn)行講解和演示。使用以下命令進(jìn)入 PWM0 對應(yīng)的 pwmchip0 目錄下如下圖所示: 在這個目錄下總共有七個文件分別為 device、export、npwm、power、subsystem、uevent 和 unexport。需要關(guān)注的是 export、npwm 以及 unexport 這三個屬性文件,下面一一進(jìn)行介紹: npwm:是一個只讀屬性,讀取該文件可以得知該 PWM 控制器下共有幾路 PWM 輸出, 如下所示: export:在使用 PWM 之前,通過 export 屬性進(jìn)行導(dǎo)出,以下所示: echo 0 > export unexport:當(dāng)使用完 PWM 之后,需要將導(dǎo)出的 PWM 刪除,譬如: echo 0 > unexport 寫入到 unexport 文件中的編號與寫入到 export 文件中的編號是相對應(yīng)的;需要注意的 是,export 文件 和 unexport 文件都是只寫的、沒有讀權(quán)限。 再次使用以下命令導(dǎo)出 pwm0 目錄,導(dǎo)出成功之后進(jìn)入該文件夾如下圖所示: echo 0 > export cd pwm0 可以看到 pwm0 文件夾下分別有 capture、duty_cycle、enable、period、polarity、power、 uevent 七個文件,而需要了解的文件是 duty_cycle、enable、period 以及 polarity 這四個屬性 文件,接下來分別介紹這四個屬性文件的作用: polarity:用于 PWM 極性的查看,只讀屬性,這里為 inversed 表示極性反轉(zhuǎn),如下圖所示: period:用于配置 PWM 周期,可讀可寫;寫入一個字符串?dāng)?shù)字值,以 ns(納秒)為單 位,譬如配置 PWM 周期為 10us(微秒): echo 10000 > period duty_cycle:用于配置 PWM 的占空比,可讀可寫;寫入一個字符串?dāng)?shù)字值,同樣也是以 ns 為單位,譬如: echo 5000 > duty_cycle enable:使能 PWM 輸出通常配置好 PWM 之后,再使能 PWM??勺x可寫,寫入"0"表 示禁止 PWM;寫入"1"表示使能 PWM。 允許 PWM 輸出: echo 1 > enable 禁止 PWM 輸出: echo 0 > enable |
|