嵌入式Linux下PWM功能除錯

2021-08-01 17:56:49 字數 2012 閱讀 7471

by toradex秦海

1). 簡介

pwm(pulse-width modulation)介面是嵌入式裝置最為常用的介面之一,常用於電機驅動,蜂鳴器,脈衝計數等嵌入式領域,因此本文就基於嵌入式linux演示使用pwm介面。

本文所演示的平台來自於toradex colibri imx6dl嵌入式平台,這個平台是基於nxp imx6系列arm處理器,支援雙核心cortex-a9。

2. 準備

a). colibri imx6dl arm核心版配合colibri eva board v3.2b載板,連線除錯串列埠到開發主機,同時配置好ubuntu開發主機開發環境,具體操作方法可以參考這裡。

c). colibri imx6dl 提供了4路pwm介面支援,其中三路為標準的pwm輸出介面,另外一路特定為backlight背光驅動控制功能,toradex linux發布v2.7以上版本具體的定義請見如下,其他更低的linux版本以及其他系列產品的定義情況請見這裡。另外,如果需要將pwm_a作為常規pwm使用,需要修改device tree檔案並重新編譯,這裡就不詳細介紹了。

d). 這裡為了簡化測試,採用pwm輸出驅動colibri eva board上面提供的led燈,連線方式如下,分別測試pwm_b,pwm_c,pwm_d連線到led的驅動情況,pwm_a是backlight背光驅動功能這裡就不直接測試了。

./ pwm_b (x12 pwm_b 管腳) –> x21 led1

./ pwm_c (x12 pwm_b 管腳) –> x21 led1

./ pwm_d (x12 pwm_b 管腳) –> x21 led1

3). 在user space下對pwm介面進行測試

a). 這裡以pwm_b為例測試,其他pwm通道都是類似配置。

b). export pwm_b介面

root@colibri-imx6:~# cd /sys/class/pwm/pwmchip0/

root@colibri-imx6:~# echo 0 > export

c). 設定pwm 週期和占空比,這裡均為時間,單位為ns

// 這裡為了讓驅動led效果肉眼可見,分別設定週期為1s,占空比為50%

root@colibri-imx6:~# echo 1000000000 > pwm0/period

root@colibri-imx6:~# echo 500000000 > pwm0/duty_cycle

d). 使能pwm,這時候變可以看到連線的led以0.5s的週期交替亮和滅了。

root@colibri-imx6:~# echo 1 > pwm0/enable

4). 通過c程式操作pwm介面示例

./ pwmconfig.h - pwm基本操作函式定義標頭檔案

./ pwmconfig.c - pwm基本操作函式定義原始檔

./ pwmtest.c – pwm具體介面使能配置主檔案源**

b). 測試上述c程式**執行請見如下:

root@colibri-imx6:~# ./pwmtest b

pwm_b successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest c

pwm_c successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest d

pwm_d successfully enabled with period - 1000ms, duty cycle - 50.0%

root@colibri-imx6:~# ./pwmtest

usage:  ./pwmtest

root@colibri-imx6:~# ./pwmtest s

wrong pwm channel input

藍橋杯嵌入式 PWM模式

如何把定時器設定成pwm模式,從而產生相應頻率,相應占空比的pwm波 藍橋杯主要考的定時器也就三個 tim1 tim2 tim3 tim3 如何配置 pwm波 對應通道一,pa7對應通道 2 ifndef pwm h define pwm h include stm32f10x.h void tim...

嵌入式linux實現vnc功能

現在有乙個想法準備在嵌入式裝置和pc之間通過網路實現一種類似遠端桌面的功能,在pc端可以看到嵌入式裝置顯示的內容,並且可以使用滑鼠和鍵盤操作嵌入式裝置的程式。檢視了網路上的一些資料後,準備使用vnc功能來實現,在嵌入式裝置端啟動vncserver,在pc端啟動vncclient,建立連線後能實現需要...

linux 下嵌入式開發除錯

除錯使用者程式 主機 linux os eclipse cdt gdb gcc交叉編譯鏈 目標機 armlinux os gdbserver 通訊方式 tcp 檔案傳輸方式 ftp,minicom,通過nfs.配置參考 除錯linux kernel.bootloder u boot 除錯核心 gdb...