英创信息技术嵌入式主板EM9170的PWM介绍

描述

        英创公司新近推出的高性价比工控主板产品EM9170,其主板内部带有2路脉宽调制(PWM)输出通道,可用于通用的工业控制。本文介绍EM9170的PWM通道的基本使用方法。

        EM9170的2路PWM均与系统的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)
        这时的管脚将自动转为PWM输出。可使用的设备文件名为“PWM1:”和“PWM2:”。
        EM9170的PWM驱动程序,被设计成通过执行文件写来设置PWM参数及启动PWM输出。所写内容由以下结构定义:
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。占空比是指正脉冲的相对宽度。

        典型的调用方法为:

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可保证输出不间断地改变占空比参数。这对一些需要连续控制的应用很有必要的。

        当不再需要PWM脉冲输出时,只需简单关闭相应的文件即可:
CloseHandle(hPWMFile);
        在关闭PWM输出后,PWM1管脚将保持在低电平,PWM2管脚将保持在高电平。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分