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