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...