1968|32

61

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

大佬们上午好:请问有什么好的方法检测IO口是否一直处于高电平? [复制链接]

 

是这样的:外部电路有四路1KHz的方波输入到stm32的IO口,但是需要监测这些方波什么时候会没有?没有的时候就一直处于高电平状态,有没什么好的方法来进行监测?

此帖出自单片机论坛

最新回复

用外部中断就可以呀,端口电平变化就会进入中断,一般的单片机都有,注意画板的时候看看对应的管脚是否可以设置中断输入,上升沿/下降沿/边沿中断都可以触发中断,设置好中断的优先级。   详情 回复 发表于 4 小时前
点赞 关注
 

回复
举报

1285

帖子

4

TA的资源

版主

沙发
 
已经采用单片机检测了,是需要再额外监测显示?那就在端口并联上拉电阻和LED
此帖出自单片机论坛

点评

是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转速,但是我发现在风扇不转时,转速值还是有的不是0。 但是实际风扇不转时,FG信号一直处于低电平,我就想  详情 回复 发表于 2024-12-23 11:36
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
beyond_笑谈 发表于 2024-12-23 11:30 已经采用单片机检测了,是需要再额外监测显示?那就在端口并联上拉电阻和LED

是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转速,但是我发现在风扇不转时,转速值还是有的不是0。

但是实际风扇不转时,FG信号一直处于低电平,我就想通过监测不转时的低电平信号,来修改显示的转速值为0。

这样还可以监测风扇的好坏,风扇坏了不转时可以实时发现。

感谢您的回复!

此帖出自单片机论坛

点评

当年在另一个论坛,有位网友提出单片机的一个I/O口控制一个设备。但是该I/O口并不是联接到这个设备,而是通过一个倍压整流电路接到这个设备。这位网友问为什么要这么麻烦。我回复他说:这是为了单片机程序“跑  详情 回复 发表于 2024-12-23 15:54
【但是实际风扇不转时,FG信号一直处于低电平,我就想通过监测不转时的低电平信号,来修改显示的转速值为0。】 如果你的方波信号源内阻不是很大,可以考虑使用倍压整流电路。如果方波信号无变化,倍压整流电路就  详情 回复 发表于 2024-12-23 15:48
引脚设置成输入捕获,可能还是可以直接读引脚的状态,因为直接读的是寄存器,对捕获模式没有什么影响。  详情 回复 发表于 2024-12-23 15:13
在MCU的信号输入捕捉通道接反相器,采用MCU另一个引脚读取这个信号状态,同时反相器也能驱动LED   [attachimg]873821[/attachimg]    详情 回复 发表于 2024-12-23 13:24
那就增加一个RC,将PWM滤波成直流量,用ADC进行采集,通过ADC的值来判断  详情 回复 发表于 2024-12-23 13:15
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(高级)

4
 
Tacking 发表于 2024-12-23 11:36 是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...

那就增加一个RC,将PWM滤波成直流量,用ADC进行采集,通过ADC的值来判断

此帖出自单片机论坛

点评

感谢指导,我用这种方式来试试!  详情 回复 发表于 2024-12-23 13:23
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

5
 
dige 发表于 2024-12-23 13:15 那就增加一个RC,将PWM滤波成直流量,用ADC进行采集,通过ADC的值来判断

感谢指导,我用这种方式来试试!

此帖出自单片机论坛

点评

如果不够精确,加一个频率电压转换电路,比如用LM331等器件制作。如果价格因素,可以采用你之前的捕获比较+ADC检测等结合。  详情 回复 发表于 2024-12-23 13:34
 
 
 

回复

1285

帖子

4

TA的资源

版主

6
 
Tacking 发表于 2024-12-23 11:36 是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...

在MCU的信号输入捕捉通道接反相器,采用MCU另一个引脚读取这个信号状态,同时反相器也能驱动LED

 

 

此帖出自单片机论坛

点评

您的意思是不是用另一个引脚去轮询这个输入捕获引脚的状态?如果轮循到状态长时间不变,就是风扇不转了。  详情 回复 发表于 2024-12-23 14:24
 
 
 

回复

95

帖子

0

TA的资源

一粒金砂(高级)

7
 
Tacking 发表于 2024-12-23 13:23 感谢指导,我用这种方式来试试!

如果不够精确,加一个频率电压转换电路,比如用LM331等器件制作。如果价格因素,可以采用你之前的捕获比较+ADC检测等结合。

此帖出自单片机论坛

点评

好的,非常感谢  详情 回复 发表于 2024-12-23 14:25
 
 
 

回复

8

帖子

9

TA的资源

一粒金砂(初级)

8
 
中断?
此帖出自单片机论坛

点评

我尝试了下中断,没搞定!设定了有中断标志位置1,没有置0,然后测试发现这个标志位一直为1。刚接触编程,还很多不懂 void EXTI9_5_IRQHandler(void) {     if (EXTI_GetITStatus(EXTI_Line7) =  详情 回复 发表于 2024-12-23 14:29
 
 
 

回复

7219

帖子

195

TA的资源

五彩晶圆(高级)

9
 

低电平捕获 获取这个脚不是低电平的状态吧 应该可以吧

此帖出自单片机论坛

点评

我也想着实在不行就采用轮询的方式来读取引脚电平是不是一直低电平状态。谢谢  详情 回复 发表于 2024-12-23 14:30
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

10
 
beyond_笑谈 发表于 2024-12-23 13:24 在MCU的信号输入捕捉通道接反相器,采用MCU另一个引脚读取这个信号状态,同时反相器也能驱动LED   ...

您的意思是不是用另一个引脚去轮询这个输入捕获引脚的状态?如果轮循到状态长时间不变,就是风扇不转了。

此帖出自单片机论坛

点评

对,就是这个意思。而且反相器的驱动能力大一点,可以直接驱动LED显示状态。  详情 回复 发表于 2024-12-23 15:25
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

11
 
dige 发表于 2024-12-23 13:34 如果不够精确,加一个频率电压转换电路,比如用LM331等器件制作。如果价格因素,可以采用你之前的捕获比 ...

好的,非常感谢

此帖出自单片机论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

12
 

我尝试了下中断,没搞定!设定了有中断标志位置1,没有置0,然后测试发现这个标志位一直为1。刚接触编程,还很多不懂

void EXTI9_5_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line7) == SET)        //判断是否是外部中断7号线触发的中断
    {
        TIM3CH_CAPTURE_Flag = 1;                //置接收标志位变量为1
        EXTI_ClearITPendingBit(EXTI_Line7);            //清除外部中断7号线的中断标志位
    }
    else if (EXTI_GetITStatus(EXTI_Line7) != SET)    //判断是否是外部中断7号线触发的中断
    {
        TIM3CH_CAPTURE_Flag = 0;                //置接收标志位变量为1
    }
}

此帖出自单片机论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

13
 
常见泽1 发表于 2024-12-23 13:59 低电平捕获 获取这个脚不是低电平的状态吧 应该可以吧

我也想着实在不行就采用轮询的方式来读取引脚电平是不是一直低电平状态。谢谢

此帖出自单片机论坛
 
 
 

回复

7196

帖子

2

TA的资源

版主

14
 
Tacking 发表于 2024-12-23 11:36 是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...

引脚设置成输入捕获,可能还是可以直接读引脚的状态,因为直接读的是寄存器,对捕获模式没有什么影响。

此帖出自单片机论坛

点评

感谢指导!  详情 回复 发表于 2024-12-23 15:34
 
 
 

回复

1285

帖子

4

TA的资源

版主

15
 
Tacking 发表于 2024-12-23 14:24 您的意思是不是用另一个引脚去轮询这个输入捕获引脚的状态?如果轮循到状态长时间不变,就是风扇不转了。 ...

对,就是这个意思。而且反相器的驱动能力大一点,可以直接驱动LED显示状态。

此帖出自单片机论坛

点评

谢谢!  详情 回复 发表于 2024-12-23 15:35
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

16
 
wangerxian 发表于 2024-12-23 15:13 引脚设置成输入捕获,可能还是可以直接读引脚的状态,因为直接读的是寄存器,对捕获模式没有什么影响。

感谢指导!

此帖出自单片机论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

17
 
beyond_笑谈 发表于 2024-12-23 15:25 对,就是这个意思。而且反相器的驱动能力大一点,可以直接驱动LED显示状态。

谢谢!

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

18
 
Tacking 发表于 2024-12-23 11:36 是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...

【但是实际风扇不转时,FG信号一直处于低电平,我就想通过监测不转时的低电平信号,来修改显示的转速值为0。】

如果你的方波信号源内阻不是很大,可以考虑使用倍压整流电路。如果方波信号无变化,倍压整流电路就没有输出,方波信号在变化,倍压整流输出将接近你的方波幅度。

 

此帖出自单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

19
 
Tacking 发表于 2024-12-23 11:36 是这样的:我现在用一个输入捕获通道通过多路复用器分别获取四个直流风扇的FG信号的方波,读取出风扇的转 ...

当年在另一个论坛,有位网友提出单片机的一个I/O口控制一个设备。但是该I/O口并不是联接到这个设备,而是通过一个倍压整流电路接到这个设备。这位网友问为什么要这么麻烦。我回复他说:这是为了单片机程序“跑飞”时,该I/O口电平就会保持不变,那么该设备的状态是确定的。如果I/O口直接联接到设备,则程序“跑飞”时设备状态是不确定的。

此帖出自单片机论坛

点评

谢谢,我了解下倍压整流电路!  详情 回复 发表于 2024-12-23 16:37
 
 
 

回复

6483

帖子

9

TA的资源

版主

20
 

没有的时候就一直处于高电平状态,这个是外部电路的的状态吗?如果是的话其实可以用外部中断进行实时检测,只要一定周期没有来外部中断就说明方波不正常或者停止了,来了外部中断就请检测周期

此帖出自单片机论坛

点评

没有的时候,我用逻辑分析仪抓了下波形,就是一直处于高电平状态!我现在就是想通过外部中断来监测,但是一直没能成功。一直没想明白需要怎么去判定一定周期没有来外部中断的方法。还请指导下需要怎么去判定到底有没  详情 回复 发表于 2024-12-23 16:41
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表