英創(chuàng)公司新近推出的高性價比工控主板產(chǎn)品EM9170,其主板內(nèi)部帶有2路脈寬調(diào)制(PWM)輸出通道,可用于通用的工業(yè)控制。本文介紹EM9170的PWM通道的基本使用方法。
EM9170的2路PWM均與系統(tǒng)的GPIO復用管腳,其中PWM1與GPIO12復用管腳,而PWM2與GPIO13復用管腳。在上電初始化階段,這兩個管腳均設置為GPIO的輸入模式帶100K上拉電阻。當應用程序需要操作PWM時,只需要打開對應的設備文件:
HANDLE hPWMFile;
hPWMFile = CreateFile(_T('PWM1:'), // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)
這時的管腳將自動轉(zhuǎn)為PWM輸出??墒褂玫脑O備文件名為“PWM1:”和“PWM2:”。
EM9170的PWM驅(qū)動程序,被設計成通過執(zhí)行文件寫來設置PWM參數(shù)及啟動PWM輸出。所寫內(nèi)容由以下結(jié)構定義:
typedef struct {
DWORD dwFreq; // PWM freq in Hz
DWORD dwDuty; // PWM duty in %
DWORD dwDuration; // duration of PWM output (msec), = 0: -> infinit
} PWMINFO, *PPWMINFO;
上述定義包括在范例程序的pwm.h頭文件中。在保證1%精度占空比的條件下,可輸出的PWM最高重復頻率為600KHz。占空比是指正脈沖的相對寬度。
典型的調(diào)用方法為:
PWMINFO PwmInfo;
DWORD dwNumberOfBytesToWrite;
DWORD dwNumberOfBytesWritten;
BOOL bRet;
PwmInfo.dwFreq = 1000; // PWM重復頻率 = 1000Hz
PwmInfo.dwDuty = 50; // PWM占空比 = 50%
PwmInfo.dwDuration = 10000; // PWM輸出保持10s后停止
dwNumberOfBytesToWrite = sizeof(PWMINFO);
dwNumberOfBytesWritten = 0;
bRet = WriteFile(hPWMFile, (LPCVOID)&PwmInfo,dwNumberOfBytesToWrite,&dwNumberOfBytesWritten, NULL);
PwmInfo.dwFreq = 2000; // PWM重復頻率 = 2000Hz
PwmInfo.dwDuty = 80; // PWM占空比 = 80%
PwmInfo.dwDuration = 0; // 始終保持輸出直至新的寫操作或文件關閉
dwNumberOfBytesToWrite = sizeof(PWMINFO);
dwNumberOfBytesWritten = 0;
bRet = WriteFile(hPWMFile, (LPCVOID)&PwmInfo, dwNumberOfBytesToWrite, &dwNumberOfBytesWritten, NULL);
若PWM脈沖的重復頻率不變,僅僅是改變占空比,EM9170的PWM可保證輸出不間斷地改變占空比參數(shù)。這對一些需要連續(xù)控制的應用很有必要的。
當不再需要PWM脈沖輸出時,只需簡單關閉相應的文件即可:
CloseHandle(hPWMFile);
在關閉PWM輸出后,PWM1管腳將保持在低電平,PWM2管腳將保持在高電平。
-
嵌入式主板
+關注
關注
7文章
6100瀏覽量
36296
發(fā)布評論請先 登錄
嵌入式主板特點與應用場景解析

嵌入式主板開發(fā)詳細指南

高可靠性嵌入式主板設計

小身材大能量:解讀小尺寸嵌入式主板

盤點無風扇嵌入式主板應用優(yōu)勢

嵌入式主板的概述與發(fā)展

評論