0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术ESM335x输出脉冲计数介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-04 10:30 次阅读

ESM335x的PWM1和PWM2除了可用于产生标准的PWM信号外还支持输出脉冲计数功能,输出脉冲计数的工作原理是驱动程序每输出一个PWM波就产生一个中断并计数,当计数达到用户设定的脉冲个数后,驱动程序自动停止PWM输出,由于系统响应中断有一定的延时,所以驱动程序对输出脉冲的最高频率限制在5KHz。

应用程序通过打开PWM设备("PWM1:"或"PWM2:")使用脉冲计数功能,下面是示例代码:

#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;//频率参数为0,停止PWM输出

bRc = WriteFile( hPWM, &pwm_info, sizeof( PWM_INFO), &dwBytes, NULL );

pwm_info.dwNum = 3;//PWM脉冲计数输出模式

pwm_info.dwFreq = 5000;//频率范围1Hz~5KHz

pwm_info.dwDuty = 500;//占空比50%, 单位0.1%

pwm_info.dwPol = 1;//极性,无输出时IO保持为高电平

//脉冲输出完成或超时后WriteFile函数返回, dwBytes返回实际输出的脉冲个数

bRc = WriteFile( hPWM, &pwm_info, sizeof( PWM_INFO), &dwBytes, NULL );

CloseHandle( hPWM );

return 0;

}

上面代码中的pwm_info用于设置PWM参数,其定义如下:

typedef struct

{

/*PWM频率,单位:Hz,PWM模式输出频率范围1Hz~50MHz,脉冲计数模式频率范围1Hz~5KHz

= 0: 停止PWM输出*/

DWORDdwFreq;

DWORDdwDuty;/*占空比, 单位:0.1%, 范围:0 - 1000*/

DWORD dwPol;/*PWM极性, =0:高电平有效, =1:低电平有效*/

DWORDdwNum;/*输出脉冲个数, =0:连续的PWM输出*/

} PWM_INFO, *PPWM_INFO;

当参数设置dwFreq=5000, dwDuty=500, dwPol=1, dwNum=3时,输出的波形如下:

只有当PWM脉冲信号输出时,其对应的IO才会被驱动为高电平或低电平,其余时间PWM引脚为高阻输入状态,由于ESM335x主板上GPIO上拉电阻的作用,在没有脉冲输出时,PWM引脚为上拉输入状态(高电平)。如果实际使用,时希望PWM平时保持为低电平,则需要在PWM信号上增加反向器,比如增加一级非门。

在PWM引脚上增加1K欧的下拉电阻,同时将设置dwPol=0,也可以保证PWM引脚在没有输出时保持为低电平,下图是在PWM引脚上增加了下拉电阻,同时参数设置为dwFreq=5000, dwDuty=500, dwPol=0, dwNum=3时输出的波形:

利用反向电路或增加下拉电阻,这两种方法都可以保证PWM信号在ESM335x上电启动过程中和没有脉冲输出时保持为低电平。

PWM脉冲通常用来控制步进电机,脉冲频率决定电机转速,脉冲个数控制电机的角位移。步进电机在启动过程中,需要控制脉冲从一个较低的频率逐渐增加到电机正常工作时的频率,电机在停止时也有一个相应的减速过程。在使用ESM335x的PWM驱动步进电机时,可以多次调用WriteFile函数,然后每次修改PWM脉冲频率来实现步进电机的加速和减速过程。需要注意的是在即便应用程序连续不断的调用WriteFile函数,在每次调用之间都会有几十到几百微秒不等的延时。

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

    关注

    7

    文章

    6064

    浏览量

    34614
收藏 人收藏

    评论

    相关推荐

    stm8外部中断用来脉冲计数,外部中断开始计数,LED灯就不正常了的原因?

    外部中断用来脉冲计数。不计数时,定时器正常,每秒翻转一次LED灯。外部中断开始计数,LED灯就不正常了,有时两三秒,有时五六秒才翻转。一开始以为是优先级,可是配置软件优先级后还是一样啊。。。大神们指点一下
    发表于 04-22 07:29

    电路中如何实现脉冲计数功能和相位检测

    在进行DA转换,频率脉冲电压转换,pwm转变成对应的模拟量,电路是怎么实现对固定要求长度或固定频率脉冲个数进行计数进而转换成模拟量的功能? 在进行变频器有源逆变pwm回馈时,如何检测电网电压的相位,仅仅是用大阻值电阻降压分辨其三
    发表于 01-31 19:55

    CKS32F4xx系列产品Timer的基本使用方法-定时器脉冲计数

    CKS32F4xx系列产品Timer的基本使用方法-定时器脉冲计数
    的头像 发表于 11-09 17:38 545次阅读
    CKS32F4xx系列产品Timer的基本使用方法-定时器<b class='flag-5'>脉冲计数</b>

    STM8的中断脉冲计数,最大可以计数多少?

    最大能够计数多少个脉冲
    发表于 10-13 06:57

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    如何使用网络IO的脉冲计数脉冲输出功能?

    一适用型号该笔记适用于ME31系列、MA01系列等IO设备,其中脉冲计数需要IO设备具有输入检测(即,DI输入)功能,脉冲输出需要具有开关量输出(即,DO
    的头像 发表于 09-08 08:22 701次阅读
    如何使用网络IO的<b class='flag-5'>脉冲计数</b>和<b class='flag-5'>脉冲</b><b class='flag-5'>输出</b>功能?

    数字7段脉冲计数器电路分享

    可以使用 7490 解码计数器和 7557A 构建脉冲计数器。该电路可以从9计数到3。所有 2 的引脚 7490 必须连接在一起。
    的头像 发表于 07-27 15:59 584次阅读
    数字7段<b class='flag-5'>脉冲计数</b>器电路分享

    基于CD4511的两位数显脉冲计数

    使用计数器T0,工作在方式0,对外部脉冲进行计数,当外部脉冲数量累计达到1000后LED显示值加1。其实验电路如图所示
    的头像 发表于 07-12 11:51 967次阅读
    基于CD4511的两位数显<b class='flag-5'>脉冲计数</b>器

    圆光栅角度编码器计数采集流量计脉冲计数测量

    ● 光栅尺磁栅尺解码转换成标准Modbus RTU协议 ● 光栅尺5V差分信号直接输入,4倍频计数 ● 模块可以输出5V的电源给光栅尺供电 ● 高速光栅尺磁栅尺计数,频率可达5MHz ● 支持
    的头像 发表于 07-04 13:38 676次阅读
    圆光栅角度编码器<b class='flag-5'>计数</b>采集流量计<b class='flag-5'>脉冲计数</b>测量

    水表电表脉冲计数器 物流包裹数量计数器采集模块485 DO超速报警输出

    ● 编码器计数转换成标准Modbus RTU协议 ● 编码转速测量,能识别正反转,可报警输出 ● 也可以设置作为2路独立DI高速计数器 ● 一路DO输出可设置为
    的头像 发表于 06-26 15:01 711次阅读
    水表电表<b class='flag-5'>脉冲计数</b>器 物流包裹数量<b class='flag-5'>计数</b>器采集模块485  DO超速报警<b class='flag-5'>输出</b>

    2023年中海达星推官系列直播再度启航,与您一起探讨空间信息技术

    信息技术
    中海达
    发布于 :2023年06月21日 11:45:49

    M261芯片如何用定时器不中断的方式对外部脉冲计数

    M261芯片,如何用定时器不中断的方式对外部脉冲计数? 采用中断方式,如果脉冲频率过高,会频繁进出中断,如何不入中断来对外部脉冲计数
    发表于 06-19 08:22

    M261 TIMER capture外部脉冲计数的参数怎么设置?

    M261,咨询TIMER capture外部脉冲计数的设置参数? 有人能给一个例子吗?弄了很久都是没反应。
    发表于 06-19 06:53

    传感器脉冲频率计数远程采集WiFi模块 支持NPN和PNP

    ● 流量计脉冲计数或流量测量 ● 冲床冲压次数计数 ● 生产产量计数 ● 以太网工业自动化控制系统
    的头像 发表于 06-16 16:30 421次阅读
    传感器<b class='flag-5'>脉冲</b>频率<b class='flag-5'>计数</b>远程采集WiFi模块 支持NPN和PNP

    CKS32F4xx系列产品Timer的基本使用方法-定时器脉冲计数

    上一章我们介绍了CKS32F4的通用定时器定时操作的使用方法,这一章我们将向大家介绍通用定时器作为定时器脉冲计数的使用。在本章中,我们将用TIM5的通道1(PA0)来做输入捕获,捕获PA0上的
    的头像 发表于 06-05 09:39 534次阅读
    CKS32F4xx系列产品Timer的基本使用方法-定时器<b class='flag-5'>脉冲计数</b>