打印
[DemoCode下载]

M030G快速脉冲整形输出

[复制链接]
643|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
en-us--EC_M030G_Rapid_Pulse_Shaping_Output_V1.00.zip (1.11 MB)
有些应用中,需要将不规则的输入脉冲快速整形成宽度固定的脉冲。若采用MCU,使用I/O口中断去检测输入脉冲,再输出宽度固定的脉冲,无法较快产生输出脉冲,且若输入脉冲较频繁,将占用大量CPU资源。

本范例代码将Timer0设置为事件计数功能,并使能time-out触发BPWM和PDMA功能。当Timer0检测到脉冲输入时,会同时触发BPWM和PDMA功能,由于BPWM响应比较快,会先输出高电平,PDMA接着会将其拉低,进而产生宽度固定的脉冲,其大致原理如图1-1所示。
采用这种方式,运行过程中,MCU会自动检测输入脉冲,并输出宽度固定的脉冲,全部硬件完成,不需要CPU的介入。




本范例代码使用PB4输出脉冲,模拟需要整形的脉冲;PB5(TM0)输入整形前的脉冲、PF3(BPWM1_CH0)输出整形后的脉冲。测试时,需要将PB4与PB5(TM0)接到一起。运行结果如图所示(通道1:输入脉冲;通道2:输出脉冲)。
从图中可以看出,触发输入脉冲边沿到输出脉冲边沿的时间差不多为104 ns,输出脉冲宽度约为420 ns。







使用特权

评论回复
沙发
zhuomuniao110|  楼主 | 2024-8-21 15:18 | 只看该作者
Timer0初始化时,会使能定时器的事件计数功能,并开启time-out触发BPWM和PDMA功能。

BPWM1初始化时,会先将BPWM1的零点、周期点、向上比较点、向下比较点都设置为低电平,时钟源设置成“BPWM_CLK”,BPWM1运行起来后,BPWM1将输出低电平;接着会将BPWM1的时钟源切换成“Timer0”,然后设置BPWM1的零点、周期点、向上比较点、向下比较点都为高电平。

使用特权

评论回复
板凳
zhuomuniao110|  楼主 | 2024-8-21 15:19 | 只看该作者
PDMA设置为Scatter-Gather模式,使用Timer0进行触发,触发时,首先会使能BPWM1的Mask功能,使BPWM1输出低电平,接着会做一些类似BPWM1初始化的动作,详情参考如下代码。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

203

主题

3325

帖子

10

粉丝