英创公司新近推出的嵌入式工控主板em9160是一款专门面向工业智能设备的高性价比arm9+wince平台,该工控主板不仅配置了常规的标准通讯接口,如以太、串口、usb,而且还配置了当前智能控制设备中常用的spi、i2c以及脉宽调制输出pwm。本文主要介绍em9160的pwm在性能及使用上的特色,以帮助客户能快速完成自己的产品开发。
em9160共提供3路pwm脉宽调制输出通道,其基本性能包括:
1、作为对步进电机等对象的控制脉冲,可以按客户要求以一定的频率、占空比,输出设定数目的脉冲,其最高脉冲频率为每秒600个。
2、支持3路脉冲的同步输出,每路可独立设置脉冲频率、占空比、输出的脉冲数目。
3、支持连续的可调占空比的周期性脉冲波形输出,作为da输出、lcd亮度控制等应用。最高输出频率1mhz。
在硬件上,3个pwm通道的引出管脚分别位于em9160 cn2的33# 、35#及36#,它们与em9160的spi接口复用管脚,具体对应关系如下:
em9160_cn2管脚
spi接口
pwm输出
33#
spi_din
pwm通道1
34#
spi_dout
35#
spi_clk
pwm通道2
36#
spi_cs#
pwm通道3
上电启动时所有管脚处于高阻输入状态。对应用程序,并不需要专用的管脚配置函数来选择spi或pwm,而只需直接打开“pwm1:”文件,相应管脚将自动切换到pwm状态,pwm各通道初始状态为低电平。
注意:(1)em9160嵌入式工控主板的pwm脉冲输出个数是通过各通道内部硬件中断来控制实现的,因此输出脉冲的频率受到一定的限制,而作为连续脉冲波形输出时就没有这个限制。(2)在上电初始状态pwm各通道处于高阻输出状态,电平上呈现出高电平,这与pwm脉宽调制输出平时为低电平不一致,可通过对各个通道分别接51k上拉电阻和5.1k下拉电阻的方法来解决。
em9160内部已装载了符合wince标准的pwm流式驱动程序(stream driver),应用程序只需要使用与通用串口相似的方法,打开特定文件名“pwm1:”的文件,获得文件句柄,就可通过wince的系统api函数deviceiocontrol(…)实现对3个pwm通道的各种操作了,当使用完毕时,直接关闭文件即可。为了方便不熟悉deviceiocontrol函数的客户,em9160的sdk还在其基础上封装了4个更简单的api函数,应用程序只需包含头文件“pwm_api.h”,在打开文件后,直接调用这几个api函数就可实现对pwm各个通道的控制输出。
em9160工控主板sdk关于pwm的api函数定义如下:
// 定义pwm参数结构
typedef struct
{
bool bsync; // 是否选择pwm三相同步输出,true为同步输出
dword dwfreq[3]; // 分别定义pwm三相输出脉冲信号的频率,输出的频率范围为:1 - 600 (hz)
dword dwduty[3]; // 分别定义pwm三相输出脉冲信号的占空比,其范围为:1 - 99 (%)
dword dwnbpulse[3]; // 分别定义pwm三相输出脉冲信号的数目,》 0: 表示输出脉冲的数目,= 0: 连续波形输出
} pwm_state;
// 功能描述:设置pwm输出脉冲信号的参数:频率、占空比、脉冲数目等。
// 输入参数 handle hdevice: 运行createfile( _t(‘pwm1:’),。..。)函数返回的有效句柄
// pwm_state ppwmstate: pwm 输出参数
// 返回值 = true: pwm 输出参数设置成功。
// = false: pwm 输出参数设置失败。
bool setuppwm( handle hdevice, pwm_state *ppwmstate );
// 功能描述:启动pwm 脉冲信号输出。
// 输入参数 handle hdevice: 运行createfile( _t(‘pwm1:’),。..。)函数返回的有效句柄
// 返回值 = true: 操作成功。
// = false: 操作失败。
bool startpwm( handle hdevice );
// 功能描述:终止结束pwm脉冲信号输出。
// 输入参数 handle hdevice: 运行createfile( _t(‘pwm1:’),。..。)函数返回的有效句柄
// 返回值 = true: 操作成功。
// = false: 操作失败。
bool stoppwm( handle hdevice );
// 功能描述:获取pwm 脉冲信号输出自动结束的事件,可通过waitforsingleobject(。.)来响应该事件。
// 输入参数 handle hdevice: 运行createfile( _t(‘pwm1:’),。..。)函数返回的有效句柄
// 返回值 = null: 操作失败。
// != null: pwm 脉冲信号输出自动结束的事件。
handle getpwmevent( handle hdevice );
有关pwm的api函数的具体使用方法可参考em9160资料光盘中的范例程序。
祝贺!北斗三号全球卫星导航系统星座部署圆满完成
物联网有哪一些要求
1206封装 77种容值 每种容值50片 贴片电容盒
紫光与日月光抢亲矽品一战,何时见分晓?
GigaDevice推出GD32F450系列高性能200MHz主频Cortex-M4 MCU
英创信息技术嵌入式工控主板EM9160的PWM功能使用方法
怒喵科技发布新品牌NOWIRE,一款与众不同的无线键盘
思歌锁业科技A160-DAC/DAB/SG门锁介绍
富士康罕见公告称大客户订单发生变动 普遍认为是苹果
新思科技助力OPPO芯片自研和软件安全生态建设
关于MATLAB安装树莓派硬件支持包并实现手机远程控制的可能性分析介绍
英创信息技术网络接口(RJ45)布线设计简要说明
台积电面临挑战多 半导体循环周期不乐观
Oculus:3A级VR游戏《Asgard’s Wrath》即将上线
Google无人驾驶添新装备:自主清洁系统
高智能土壤检测仪的详细参数介绍以及应用领域
智浦欣推出ClassAB,ClassD全兼容系列音频产品线
小米6X新机发布:5.99英寸全面屏,竖排双摄+背部指纹识别
当反激式转换器达到其极限时
被裹挟的台积电与昂贵的“美国制造”:投资400亿美元补贴不足5%