PWM是指一種周期可調、占空比可調的穩(wěn)定脈沖輸出,即通常所說的脈寬調制脈沖信號。這種信號在工業(yè)自動控制中有廣泛的應用。英利公司的嵌入式Linux主板EM9160可支持3路獨立的PWM輸出,輸出頻率范圍從1Hz–10MHz,占空比從1%-99%。與EM9160的其他硬件資源一樣,應用程序對EM9160的PWM功能的操作也是通過驅動程序來實現的。下表列出的是EM9160的PWM資源配置情況:
PWM編號 |
設備文件名 |
輸出管腳 |
PWM1 |
'/dev/em9x60_pwm1' |
GPIO12 |
PWM2 |
'/dev/em9x60_pwm2' |
GPIO14 |
PWM3 |
'/dev/em9x60_pwm3' |
GPIO15 |
PWM功能的操作很簡單,在打開設備文件后,通過兩個IOCTL命令來實現PWM的啟動和停止:
IOCTL命令 |
備注 |
|
EM9X60_PWM_IOCTL_START |
是 |
設置 PWM的頻率和占空比,并啟動 |
EM9X60_PWM_IOCTL_STOP |
否 |
停止PWM脈沖輸出 |
啟動PWM的命令,通過雙參數數據結構來傳遞必要的參數:
struct double_pars
{
unsigned int par1;
unsigned int par2;
};
在上述結構中,par1用于設置PWM的輸出頻率,單位為Hz;而par2用于設置PWM的輸出占空比,單位為% 。若我們需要生成38KHz脈沖用于紅外串口數據的調制,則:
struct double_pars paras;
paras.par1 = 38000; // -》 38000Hz = 38KHz
paras.par2 = 50; // -》 50%
若我們希望用PWM1輸出38KHz信號,其主要的代碼為:
int fd = open(‘/dev/em9x60_pwm1’, O_RDWR); //打開設備文件
通過IOCTL函數啟動PWM:
int rc = ioctl(fd, EM9X60_PWM_IOCTL_START, ?s); //啟動PWM
或暫停PWM輸出:
int rc = ioctl(fd, EM9X60_PWM_IOCTL_STOP, NULL); //暫停PWM
在使用PWM中需要注意以下幾點:
1、EM9160所有的PWM通道都是與GPIO管腳復用的,因此需避免在設計出現GPIO的使用與PWM沖突。
2、若串口‘/dev/ttyS2’或‘/dev/ttyS4’-‘/dev/ttyS6’之一被設置作為ISO7816的接口,它將自動占用PWM2或PWM3作為SCK時鐘的輸出,因此應用程序也不應當打開對應的PWM設備文件,以避免資源沖突。
3、當PWM設備文件關閉、及執(zhí)行來close(fd)后,對應的管腳會恢復成輸入狀態(tài)的GPIO,這時仍然可以通過GPIO的設備文件“/dev/em9x60_gpio”來操作這些管腳。
-
Linux
+關注
關注
87文章
11351瀏覽量
210505 -
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35643
發(fā)布評論請先 登錄
相關推薦
嵌入式工控主板EM9160的PWM功能
英創(chuàng)信息技術嵌入式工控主板EM9160的PWM功能使用方法
英創(chuàng)信息技術嵌入式主板EM9160精簡ISA總線硬件中斷的使用方法
![<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>精簡ISA總線硬件中斷的使用方法](https://file.elecfans.com/web1/M00/AC/00/pIYBAF27jViAdEr7AACYefH35f8460.png)
英創(chuàng)信息技術工控主板EM9160L的低功耗應用介紹
英創(chuàng)信息技術嵌入式Linux串口通訊的C++設計概述
![<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>串口通訊的C++設計概述](https://file.elecfans.com/web1/M00/A7/DC/o4YBAF2KEeWADwppAAAQHzzxKZU022.gif)
英創(chuàng)信息技術工控主板EM9160對紅外通訊用途介紹
![<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>工控<b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>對紅外通訊用途介紹](https://file.elecfans.com/web1/M00/A8/30/pIYBAF2KEmeAbhWnAAArwSCS8EM127.jpg)
英創(chuàng)信息技術工業(yè)主板EM9160介紹
英創(chuàng)信息技術嵌入式Linux工控板EM9160介紹
![<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>工控板<b class='flag-5'>EM9160</b>介紹](https://file.elecfans.com/web1/M00/B3/2A/o4YBAF4dLg6APjWiAADIc_PIHEc258.png)
英創(chuàng)信息技術嵌入式Linux工控板EM9160介紹
英創(chuàng)信息技術工控主板EM9160介紹
![<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>工控<b class='flag-5'>主板</b><b class='flag-5'>EM9160</b>介紹](https://file.elecfans.com/web1/M00/B3/82/pIYBAF4dMoSATTc0AACWceAx29U551.png)
評論