芯片资讯
- 发布日期:2024-12-11 07:38 点击次数:129
MCU计数功能有的传感器会输出脉冲信号,MCU单片机需要统计脉冲输入的个数,通常有如下实现方式:1.GPIO中断原理很简单,利用GPIO的上升沿或者下降沿中断,进中断的次数就是脉冲的个数。只需要在中断服务函数里计数即可。使用GPIO中断需要注意:脉冲信号的频率不能太高,否则MCU单片机可能处理不过来GPIO中断处理程序应尽可能短,否则影响处理速度GPIO中断优先级应高,否则会延迟对脉冲信号的处理
我们先用一个板子产生频率为10Khz的PWM波,时长为100ms 。
下降沿的脉冲数理论为100ms/0.1ms=1000个,实际上因为有少许误差,从上面逻辑分析仪可以看到实际脉冲数为1.009k,即1009个。然后将PWM接到另外一个板子的GPIO引脚上,开启下降沿中断,在中断服务函数中计数,可以看到实际值就是1009。
2.定时器输入捕获输入捕获
常用来测量脉冲宽度和频率,它也可以用来对脉冲计数。它的原理和上述GPIO中断类似,只不过用的是定时器的输入捕获中断。
3.定时器用作计数定时器和计数器其实很相似,只不过定时器是对内部的时钟脉冲进行计数,计数到一定数值时就可以根据频率,计算出时间。而计数器是对外部脉冲进行计数,JJW(捷捷微电)功率半导体IC汽车芯片 即外部引脚每发生一次变化,计数器就计数一次。可以将外部脉冲信号接入到MCU的TIMx_ETR引脚,就可以使用MCU单片机的定时器来计数。
它的使用也很简单,主要就是配置TIMx_SMCR寄存器(slave mode control register),具体可以参考芯片参考手册。
可以看到定时器CNT的值就是脉冲的个数。
总结:1)尽量使用TIMER ETR引脚通过计数器方式来实现脉冲计数,如果条件不允许,外部脉冲输入频率不是很高,也可以使用GPIO中断来实现,不过还是要同时考虑高频中断对整体系统的影响。比如上面MCU主频是48Mhz,将10Khz调整为100Khz,实测GPIO中断还可以准确计数,但是当再继续增大到1Mhz时,就处理不过来了,实测发出约50000个脉冲,GPIO中断只测出了10206个,而使用计数器模式则可以准确的计数。2)如果使用GPIO中断计数,要特别注意GPIO上不能有接地的电容,否则会改变脉冲波形,导致错误的计数。一起学习嵌入式!
- 如何使用万用表测量晶振的好坏2024-11-20
- MCU产品如何来实现低功耗2024-11-05
- Microchip推出具有集成2D GPU和集成DDR2存储器的MCU2024-11-03
- 铝电解电容器的工作原理_如何选择最适合的电容器2024-10-04
- 简单指导方针:如何为其高速转换器设计电源?2024-10-02
- 如何最大程度减少误差呢?选择外部电阻是关键2024-09-24