ESM335x的PWM1和PWM2除了可用于產(chǎn)生標(biāo)準(zhǔn)的PWM信號外還支持輸出脈沖計(jì)數(shù)功能,輸出脈沖計(jì)數(shù)的工作原理是驅(qū)動程序每輸出一個PWM波就產(chǎn)生一個中斷并計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到用戶設(shè)定的脈沖個數(shù)后,驅(qū)動程序自動停止PWM輸出,由于系統(tǒng)響應(yīng)中斷有一定的延時,所以驅(qū)動程序?qū)敵雒}沖的最高頻率限制在5KHz。
應(yīng)用程序通過打開PWM設(shè)備("PWM1:"或"PWM2:")使用脈沖計(jì)數(shù)功能,下面是示例代碼:
#include "stdafx.h"
#include "bsp_drivers.h"
int _tmain(int argc, _TCHAR* argv[])
{
HANDLEhPWM;
PWM_INFO pwm_info;
DWORDdwBytes;
BOOL bRc;
hPWM = CreateFile( TEXT("PWM1:"),
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS,
NULL);
pwm_info.dwNum = 0;//PWM輸出模式
pwm_info.dwFreq = 100000;//頻率范圍1Hz~50MHz
pwm_info.dwDuty = 500;//占空比50%, 單位0.1%
pwm_info.dwPol = 1;//極性
bRc = WriteFile( hPWM, &pwm_info, sizeof( PWM_INFO), &dwBytes, NULL );
pwm_info.dwFreq = 0;//頻率參數(shù)為0,停止PWM輸出
bRc = WriteFile( hPWM, &pwm_info, sizeof( PWM_INFO), &dwBytes, NULL );
pwm_info.dwNum = 3;//PWM脈沖計(jì)數(shù)輸出模式
pwm_info.dwFreq = 5000;//頻率范圍1Hz~5KHz
pwm_info.dwDuty = 500;//占空比50%, 單位0.1%
pwm_info.dwPol = 1;//極性,無輸出時IO保持為高電平
//脈沖輸出完成或超時后WriteFile函數(shù)返回, dwBytes返回實(shí)際輸出的脈沖個數(shù)
bRc = WriteFile( hPWM, &pwm_info, sizeof( PWM_INFO), &dwBytes, NULL );
CloseHandle( hPWM );
return 0;
}
上面代碼中的pwm_info用于設(shè)置PWM參數(shù),其定義如下:
typedef struct
{
/*PWM頻率,單位:Hz,PWM模式輸出頻率范圍1Hz~50MHz,脈沖計(jì)數(shù)模式頻率范圍1Hz~5KHz
= 0: 停止PWM輸出*/
DWORDdwFreq;
DWORDdwDuty;/*占空比, 單位:0.1%, 范圍:0 - 1000*/
DWORD dwPol;/*PWM極性, =0:高電平有效, =1:低電平有效*/
DWORDdwNum;/*輸出脈沖個數(shù), =0:連續(xù)的PWM輸出*/
} PWM_INFO, *PPWM_INFO;
當(dāng)參數(shù)設(shè)置dwFreq=5000, dwDuty=500, dwPol=1, dwNum=3時,輸出的波形如下:

只有當(dāng)PWM脈沖信號輸出時,其對應(yīng)的IO才會被驅(qū)動為高電平或低電平,其余時間PWM引腳為高阻輸入狀態(tài),由于ESM335x主板上GPIO上拉電阻的作用,在沒有脈沖輸出時,PWM引腳為上拉輸入狀態(tài)(高電平)。如果實(shí)際使用,時希望PWM平時保持為低電平,則需要在PWM信號上增加反向器,比如增加一級非門。
在PWM引腳上增加1K歐的下拉電阻,同時將設(shè)置dwPol=0,也可以保證PWM引腳在沒有輸出時保持為低電平,下圖是在PWM引腳上增加了下拉電阻,同時參數(shù)設(shè)置為dwFreq=5000, dwDuty=500, dwPol=0, dwNum=3時輸出的波形:

利用反向電路或增加下拉電阻,這兩種方法都可以保證PWM信號在ESM335x上電啟動過程中和沒有脈沖輸出時保持為低電平。
PWM脈沖通常用來控制步進(jìn)電機(jī),脈沖頻率決定電機(jī)轉(zhuǎn)速,脈沖個數(shù)控制電機(jī)的角位移。步進(jìn)電機(jī)在啟動過程中,需要控制脈沖從一個較低的頻率逐漸增加到電機(jī)正常工作時的頻率,電機(jī)在停止時也有一個相應(yīng)的減速過程。在使用ESM335x的PWM驅(qū)動步進(jìn)電機(jī)時,可以多次調(diào)用WriteFile函數(shù),然后每次修改PWM脈沖頻率來實(shí)現(xiàn)步進(jìn)電機(jī)的加速和減速過程。需要注意的是在即便應(yīng)用程序連續(xù)不斷的調(diào)用WriteFile函數(shù),在每次調(diào)用之間都會有幾十到幾百微秒不等的延時。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6107瀏覽量
37098
發(fā)布評論請先 登錄
高速脈沖計(jì)數(shù)采集模塊怎么用?485通訊,監(jiān)測頻率、占比、周期
脈沖/頻率計(jì)數(shù)采集模塊:高速脈沖+頻率,支持?jǐn)嚯姳4?/a>
龍芯中科成功舉辦2025信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)教融合交流會
龍芯中科助力2025教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦
誠邁科技信創(chuàng)電腦助力2025第二屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿收官
寶馬南京信息技術(shù)有限公司開業(yè)
定時器實(shí)現(xiàn)步進(jìn)電機(jī)的正反脈沖計(jì)
由倍訊科技研制的CCLinkIE轉(zhuǎn)ModbusTCP網(wǎng)關(guān),可達(dá)成與脈沖計(jì)數(shù)器的連接
易華錄入選國家級信息技術(shù)應(yīng)用創(chuàng)新典型解決方案
佛瑞亞如何通過信息技術(shù)推動業(yè)務(wù)增長
飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力
DEKRA德凱成為沙特通信和信息技術(shù)設(shè)備技術(shù)法規(guī)認(rèn)證機(jī)構(gòu)
開疆智能CCLinkIE轉(zhuǎn)ModbusTCP網(wǎng)關(guān)連接脈沖計(jì)數(shù)器配置案例
經(jīng)過光耦之后,脈沖計(jì)數(shù)功能為什么不能實(shí)現(xiàn)?
科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略
英創(chuàng)信息技術(shù)ESM335x輸出脈沖計(jì)數(shù)介紹
評論