英創(chuàng)公司新近推出的嵌入式工控主板EM9160是一款專門面向工業(yè)智能設(shè)備的高性價(jià)比ARM9+WinCE平臺(tái),該工控主板不僅配置了常規(guī)的標(biāo)準(zhǔn)通訊接口,如以太、串口、USB,而且還配置了當(dāng)前智能控制設(shè)備中常用的SPI、I2C以及脈寬調(diào)制輸出PWM。本文主要介紹EM9160的PWM在性能及使用上的特色,以幫助客戶能快速完成自己的產(chǎn)品開發(fā)。
EM9160共提供3路PWM脈寬調(diào)制輸出通道,其基本性能包括:
1、作為對(duì)步進(jìn)電機(jī)等對(duì)象的控制脈沖,可以按客戶要求以一定的頻率、占空比,輸出設(shè)定數(shù)目的脈沖,其最高脈沖頻率為每秒600個(gè)。
2、支持3路脈沖的同步輸出,每路可獨(dú)立設(shè)置脈沖頻率、占空比、輸出的脈沖數(shù)目。
3、支持連續(xù)的可調(diào)占空比的周期性脈沖波形輸出,作為DA輸出、LCD亮度控制等應(yīng)用。最高輸出頻率1MHz。
在硬件上,3個(gè)PWM通道的引出管腳分別位于EM9160 CN2的33# 、35#及36#,它們與EM9160的SPI接口復(fù)用管腳,具體對(duì)應(yīng)關(guān)系如下:
EM9160_CN2管腳 |
SPI接口 |
PWM輸出 |
33# |
SPI_DIN |
PWM通道1 |
34# |
SPI_DOUT | |
35# |
SPI_CLK |
PWM通道2 |
36# |
SPI_CS# |
PWM通道3 |
上電啟動(dòng)時(shí)所有管腳處于高阻輸入狀態(tài)。對(duì)應(yīng)用程序,并不需要專用的管腳配置函數(shù)來選擇SPI或PWM,而只需直接打開“PWM1:”文件,相應(yīng)管腳將自動(dòng)切換到PWM狀態(tài),PWM各通道初始狀態(tài)為低電平。
注意:(1)EM9160嵌入式工控主板的PWM脈沖輸出個(gè)數(shù)是通過各通道內(nèi)部硬件中斷來控制實(shí)現(xiàn)的,因此輸出脈沖的頻率受到一定的限制,而作為連續(xù)脈沖波形輸出時(shí)就沒有這個(gè)限制。(2)在上電初始狀態(tài)PWM各通道處于高阻輸出狀態(tài),電平上呈現(xiàn)出高電平,這與PWM脈寬調(diào)制輸出平時(shí)為低電平不一致,可通過對(duì)各個(gè)通道分別接51K上拉電阻和5.1K下拉電阻的方法來解決。
EM9160內(nèi)部已裝載了符合WinCE標(biāo)準(zhǔn)的PWM流式驅(qū)動(dòng)程序(stream driver),應(yīng)用程序只需要使用與通用串口相似的方法,打開特定文件名“PWM1:”的文件,獲得文件句柄,就可通過WinCE的系統(tǒng)API函數(shù)DeviceIoControl(…)實(shí)現(xiàn)對(duì)3個(gè)PWM通道的各種操作了,當(dāng)使用完畢時(shí),直接關(guān)閉文件即可。為了方便不熟悉DeviceIoControl函數(shù)的客戶,EM9160的SDK還在其基礎(chǔ)上封裝了4個(gè)更簡(jiǎn)單的API函數(shù),應(yīng)用程序只需包含頭文件“pwm_api.h”,在打開文件后,直接調(diào)用這幾個(gè)API函數(shù)就可實(shí)現(xiàn)對(duì)PWM各個(gè)通道的控制輸出。
EM9160工控主板SDK關(guān)于PWM的API函數(shù)定義如下:
// 定義PWM參數(shù)結(jié)構(gòu)
typedef struct
{
BOOL bSync; // 是否選擇PWM三相同步輸出,TRUE為同步輸出
DWORD dwFreq[3]; // 分別定義PWM三相輸出脈沖信號(hào)的頻率,輸出的頻率范圍為:1 - 600 (Hz)
DWORD dwDuty[3]; // 分別定義PWM三相輸出脈沖信號(hào)的占空比,其范圍為:1 - 99 (%)
DWORD dwNbPulse[3]; // 分別定義PWM三相輸出脈沖信號(hào)的數(shù)目,》 0: 表示輸出脈沖的數(shù)目,= 0: 連續(xù)波形輸出
} PWM_STATE;
// 功能描述:設(shè)置PWM輸出脈沖信號(hào)的參數(shù):頻率、占空比、脈沖數(shù)目等。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T(‘PWM1:’),。..。)函數(shù)返回的有效句柄
// PWM_STATE pPWMState: PWM 輸出參數(shù)
// 返回值 = TRUE: PWM 輸出參數(shù)設(shè)置成功。
// = FALSE: PWM 輸出參數(shù)設(shè)置失敗。
BOOL SetupPWM( HANDLE hDevice, PWM_STATE *pPWMState );
// 功能描述:?jiǎn)?dòng)PWM 脈沖信號(hào)輸出。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T(‘PWM1:’),。..。)函數(shù)返回的有效句柄
// 返回值 = TRUE: 操作成功。
// = FALSE: 操作失敗。
BOOL StartPWM( HANDLE hDevice );
// 功能描述:終止結(jié)束PWM脈沖信號(hào)輸出。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T(‘PWM1:’),。..。)函數(shù)返回的有效句柄
// 返回值 = TRUE: 操作成功。
// = FALSE: 操作失敗。
BOOL StopPWM( HANDLE hDevice );
// 功能描述:獲取PWM 脈沖信號(hào)輸出自動(dòng)結(jié)束的事件,可通過WaitForSingleObject(。.)來響應(yīng)該事件。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T(‘PWM1:’),。..。)函數(shù)返回的有效句柄
// 返回值 = NULL: 操作失敗。
// != NULL: PWM 脈沖信號(hào)輸出自動(dòng)結(jié)束的事件。
HANDLE GetPWMEvent( HANDLE hDevice );
有關(guān)PWM的API函數(shù)的具體使用方法可參考EM9160資料光盤中的范例程序。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35402
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論