boat030 发表于 2023-6-27 21:12:51

MCU怎么实现使用1个信号稳定触发另一个信号

项目需要使用1个输入信号用于触发信号,输出一个和输入信号同步的信号,可以直接复制输入信号的电平,但需要保证2个信号之间的延时稳定,抖动最好控制在50ns以内;目前使用中断触发,检测到信号上升沿或下降沿时,在中断服务程序在立即控制输出信号为高电平或低电平,但实测最大抖动在200ns左右,使用的芯片是STM32F407,时钟已配置到最高168MHz,请问各位大神有什么办法可以降低信号的抖动,保证输出信号和输入信号之间的延时是稳定的(延时不重要,关键是保证输出信号和输入信号的时间差是稳定的,抖动要控制在50ns以内)。

zxq6 发表于 2023-6-27 21:32:11

门电路实现或者CPLD,用MCU在这个时间尺度上,肯定会有抖动。

Himem 发表于 2023-6-27 21:33:07

本帖最后由 Himem 于 2023-6-27 21:42 编辑

先关掉M4的Icache/Dcache再试试

或者让cpu不参与,靠硬外设实现,比如
Gated Timer mode

输入信号接定时器的时钟使能与定时器初值复位,定时器溢出信号为输出?

wshtyr 发表于 2023-6-27 21:55:10

50ns相当于20MHz,407的定时器最高可工作于84MHz,应该是可以满足要求的

定时器的ETR作为输入,CHx作为输出,定时器配置为由ETR触发的单脉冲模式即可

ackyee 发表于 2023-6-28 08:49:32

对呀 你输入端 接一个门电路 (好像是非门是最快的)然后直接 1拖二   ,输出的信号 一边给单片机一边给你最终负载

DoDoTech 发表于 2023-6-28 08:57:20

为毛不硬件做?软件监控型号电平?

Stm32Motor 发表于 2023-6-28 09:32:20

直接用不好?这么转的意义是啥?

weavr 发表于 2023-6-28 09:48:19

STC某些型号有个直通模式,不知是做什么用的,后来的型号好像又没有这个选项了

t3486784401 发表于 2023-6-28 10:14:17

这不就该是逻辑门的活么,非要整软件

多串几个反相器,要多少延迟都有

陆小凤之北京 发表于 2023-6-28 11:43:58

用个逻辑器件轻松解决了,延时取决于你的时钟输入。

qwe2231695 发表于 2023-6-28 12:43:39

树莓派 RP2040有这个功能,每个引脚都可以进行底层逻辑编程

siguo 发表于 2023-6-28 15:10:04

用自带的比较器输出

modbus 发表于 2023-6-28 18:34:25

用中断不容易实现,一个咬尾中断和不咬尾中断就抖动6个时钟周期

boat030 发表于 2023-6-28 22:55:06

Stm32Motor 发表于 2023-6-28 09:32
直接用不好?这么转的意义是啥?
(引用自7楼)

固件里面还需要做其它处理,不仅仅是检测这个信号

boat030 发表于 2023-6-28 22:55:36

siguo 发表于 2023-6-28 15:10
用自带的比较器输出
(引用自12楼)

怎么触发?

Stm32Motor 发表于 2023-6-29 08:47:00

处理完再输出信号?
页: [1]
查看完整版本: MCU怎么实现使用1个信号稳定触发另一个信号