第一:應用層控制PWM基本簡介
與前面LED設備的控制方式類似,PWM同樣可以通過使用sysfd方式進程操控,進入到/sys/class/pwm目錄下,如圖所示:
這里舉例出了8個以pwmchipX(X 表示數字 0~7)命名的文件夾,這八個文件夾其實就對應了 I.MX6U的 8 個 PWM 控制器,總共有 8 個 PWM 控制器,大家可以通過查詢芯片參考手冊得知。我們隨便以其中一個為例,進入到 pwmchip0 目錄下:
npwm:這是一個只讀屬性,讀取該文件可以得知該 PWM 控制器下共有幾路 PWM 輸出
export:與 GPIO 控制一樣,在使用 PWM 之前,也需要將其導出,通過 export 屬性進行導出
第二:如何控制對應的PWM
通過 export 導出之后,便會生成 pwm0 這個目錄,我們進入到該目錄下看看:
enable:可讀可寫,寫入“0”表示禁止 PWM;寫入“1”表示使能 PWM。讀取該文件獲取 PWM 當前是禁止還是使能狀態。
echo 0 》 enable #禁止 PWM 輸出echo 1 》 enable #使能 PWM 輸出
polarity:用于設置極性,可讀可寫,可寫入的值如下:
echo normal 》 polarity #默認極性echo inversed 》 polarity #極性反轉
period:用于配置 PWM 周期,可讀可寫;寫入一個字符串數字值,以 ns(納秒)為單位,譬如配置 PWM 周期為 10us(微秒):
echo 10000 》 period #PWM 周期設置為 10us(10 * 1000ns)
duty_cycle:用于配置 PWM 的占空比,可讀可寫;寫入一個字符串數字值,同樣也是以 ns 為單位,譬如:
echo 5000 》 duty_cycle #PWM 占空比設置為 5us
第三:具體代碼實現
分析:
main()函數中,首先對傳參進行校驗,執行該應用程序的時候需要用戶傳入3個參數,分別是編號(0、 1、2、3 等,分別表示 I.MX6U 的 PWM1、PWM2、PWM3…)、周期(以 ns 為單位)、PWM 占空比(以ns 為單位)
。/testApp 0 500000 250000
接下來需要導出 pwm,首先使用 access()函數判斷 pwm0 目錄是否存在,如果存在表示 pwm 已經導出,如果不存在,則表示未導出,那么就需要通過 export 文件將其導出。導出成功之后,接著配置 PWM 周期、占空比,最后使能 PWM。編譯示例代碼:
總結:利用應用層可以實現對底層引腳PWM波形控制,檢測對應的引腳可以觀察相應的波形。
-
PWM
+關注
關注
114文章
5153瀏覽量
213456 -
波形控制
+關注
關注
0文章
5瀏覽量
6662
發布評論請先 登錄
相關推薦
評論