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