[DemoCode下载] M030G快速脉冲整形输出

[复制链接]
1281|2
 楼主| zhuomuniao110 发表于 2024-8-21 15:16 | 显示全部楼层 |阅读模式
en-us--EC_M030G_Rapid_Pulse_Shaping_Output_V1.00.zip (1.11 MB, 下载次数: 0)
有些应用中,需要将不规则的输入脉冲快速整形成宽度固定的脉冲。若采用MCU,使用I/O口中断去检测输入脉冲,再输出宽度固定的脉冲,无法较快产生输出脉冲,且若输入脉冲较频繁,将占用大量CPU资源。

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


563866c5941d60e2c.png

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

6550366c5944b509f0.png

651866c594505d44e.png

524766c5943f3ebfa.png

 楼主| zhuomuniao110 发表于 2024-8-21 15:18 | 显示全部楼层
Timer0初始化时,会使能定时器的事件计数功能,并开启time-out触发BPWM和PDMA功能。
3578166c594913d28c.png
BPWM1初始化时,会先将BPWM1的零点、周期点、向上比较点、向下比较点都设置为低电平,时钟源设置成“BPWM_CLK”,BPWM1运行起来后,BPWM1将输出低电平;接着会将BPWM1的时钟源切换成“Timer0”,然后设置BPWM1的零点、周期点、向上比较点、向下比较点都为高电平。
6339566c594a9f0feb.png
3526066c594b4166e2.png
 楼主| zhuomuniao110 发表于 2024-8-21 15:19 | 显示全部楼层
PDMA设置为Scatter-Gather模式,使用Timer0进行触发,触发时,首先会使能BPWM1的Mask功能,使BPWM1输出低电平,接着会做一些类似BPWM1初始化的动作,详情参考如下代码。
1891566c594d3594b3.png
216966c594e3c0fa0.png
5223666c594f35e8f7.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

233

主题

3529

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部