数2MHZ频率脉冲的上升沿,并且在得到上升沿的同时要进行一次AD采样
STM32中脉冲个数可以通过定时器的ETR过去上升沿个数,数的的个数确实很准,但有个问题就是找不到程序本身的脉冲计数入口,只能得到寄存器的CNT,无法确定上升沿时刻无从去做AD采样工作?
另一个使用外部中断,上升沿进入中断计数,到这种得到的数据好像偏差很大,不知道什么原因所致,这种情况就很容易得到上升沿这个时刻去做AD采样?
根据采样频率大于等于2倍被采样频率,就可以实现波形采集的原理!只要采样频率高于4MHZ以上,就完成波形的采样!
不知道你这里在上升沿进行AD采样的目的是做什么用!是直接采集波形峰值?
你采样频率高一点,可以直接把整个波形都采集出来,这样就不需要在上升沿来采样了!
参考GPT和自己的思路:
针对你的问题,我可以给出以下的答复:
对于STM32中脉冲的计数,你可以通过定时器的ETR模式来获取脉冲上升沿的个数,同时也可以通过定时器的CNT寄存器获取计数器的值。但是,由于STM32采用了中断机制,因此定时器的计数值可能会被打断,导致你无法准确地获取脉冲上升沿的时刻进行AD采样。
针对偏差很大的问题,如果你使用外部中断的方式来获取上升沿计数,在实际应用中可能会受到一些干扰因素的影响,比如信号噪声、抖动等,这些因素可能会导致计数结果不准确或存在一定的偏差。如果你想要减小误差,可以尝试优化你的硬件电路,或者采用其他的计数方式来获取更加精准的数据。
最后,如果你需要在上升沿时刻进行AD采样,我建议你使用定时器的捕获模式来获取脉冲的上升沿时刻。具体来说,你可以在上升沿时启动定时器的捕获功能,获取当前的计数器值,并根据捕获的时刻进行AD采样,这样可以保证采样时刻的准确性。
该回答引用GPTᴼᴾᴱᴺᴬᴵ
针对第一个问题,如果只是用定时器的ETR输入模式,确实无法确定上升沿时刻进行AD采样。但是可以考虑使用另一个定时器捕获外部脉冲,获取脉冲上升沿时的计数值,并在此时进行AD采样。
·
具体实现方法是:使用一个定时器作为计数器,在输入捕获模式下捕获外部脉冲的上升沿,在捕获中断中获取计数值,此时的计数值即为脉冲上升沿时的计数值,可以用这个计数值去触发AD采样。
·
针对第二个问题,使用外部中断进行计数时,可能存在一些误差,这可能是由于外部信号本身的抖动、噪声等原因导致的。为了避免这种误差,可以考虑使用硬件滤波器和软件滤波器对输入的信号进行处理,消除抖动和噪声。
·
另外,对于精度要求较高的应用场景,还可以使用定时器捕获来获取外部脉冲的上升沿时刻,从而避免由于外部信号的抖动导致计数误差。