打印
[51单片机]

单片机的一个输入IO的电平总是莫名被拉低,求解决方法

[复制链接]
8404|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2013-9-27 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C8051F340单片机,有一个IO设置成漏极开路,弱上拉模式。
程序都没有问题的,不是第一块板了。
现在这块板的问题是:这个输入IO总是为低,万用表测量为0.45V,正常应该是3.3V。
开始以为是焊油污染,因为这个管脚相邻的管脚通常状态为低电平,于是用**蘸香蕉水擦了一下,还是不行。
后来,用烙铁把这几个管脚又焊了一下。重新上电后,变正常了,但是过了一会,这个管脚又变为低电平了。

这会是什么原因呢?焊接的问题??

相关帖子

沙发
ayb_ice| | 2013-9-27 17:02 | 只看该作者
99.9999%程序问题
写个最简单的程序
测试一下
void main(void)
{
    init();
    while(1)
    {
    }
}

使用特权

评论回复
板凳
wangyy608| | 2013-9-27 17:36 | 只看该作者
上图
没用过该芯片
一般设为开漏模式的引脚状态由外部电路决定

使用特权

评论回复
地板
popeye021|  楼主 | 2013-9-27 18:29 | 只看该作者
wangyy608 发表于 2013-9-27 17:36
上图
没用过该芯片
一般设为开漏模式的引脚状态由外部电路决定

这个管脚是悬空的

使用特权

评论回复
5
wangyy608| | 2013-9-27 18:53 | 只看该作者
1.悬空?没用?那为什么要刻意设为开漏模式;
2.悬空?没用?那这个脚的高低会对你的程序有什么影响?
3.开漏模式下悬空当然没法高了

使用特权

评论回复
6
popeye021|  楼主 | 2013-9-27 19:45 | 只看该作者
wangyy608 发表于 2013-9-27 18:53
1.悬空?没用?那为什么要刻意设为开漏模式;
2.悬空?没用?那这个脚的高低会对你的程序有什么影响?
3.开漏 ...

这个管脚是用来接收外部的一个低电平信号,测试的时候还没有插上那部分的排针。
以前同样的板子并不会出现这种情况。此外,同样的电路在其他板子上也是正常的。
设置为漏极开路后,芯片内部是有弱上拉的,这样的话,悬空测电压也应该是3.3V吧。
程序是轮询这个管脚的状态,为低时,则执行相应的操作。
我个人倾向于焊接原因。

使用特权

评论回复
7
popeye021|  楼主 | 2013-9-27 19:55 | 只看该作者
ayb_ice 发表于 2013-9-27 17:02
99.9999%程序问题
写个最简单的程序
测试一下

程序轮询这个设为漏极开路的端口,当检测到低电平时,执行相关操作。
如果是程序原因,不会上电以后,开始还是正常的,过了一会就出问题了吧。
再说,已经焊了好几块板了,程序在之前的板子上都正常运行的。
之前也出现过类似的现象:这个端口相邻的一个管脚是接近开关的输入,正常状态下,接近开关输入管脚是低电平,我也是发现漏极开路的端口总是为低,后来断开接近开关,电平就正常了。当时也问过论坛,有人说焊油污染可能会出现这种现象,我就用**蘸香蕉水擦了一下单片机管脚,问题就解决了。
这次不是因为接近开关输入管脚和这个管脚之间焊油污染的问题,断开接近开关后,此管脚仍然为低。
不过相邻的另一边的管脚正常状态也是低,要说也是焊油污染,我都用香蕉水擦过了,不管用。
用烙铁把这几个脚重新刮了一下,就正常了一小会。
我打算先把单片机这边的管脚的锡都用吸锡带去掉,然后重新焊一下,怎么样??

使用特权

评论回复
8
cjseng| | 2013-9-27 23:46 | 只看该作者
再加个上拉电阻好了。

使用特权

评论回复
9
受不了了| | 2013-9-28 00:20 | 只看该作者
C2D?

使用特权

评论回复
10
wangyy608| | 2013-9-28 08:15 | 只看该作者
popeye021 发表于 2013-9-27 19:45
这个管脚是用来接收外部的一个低电平信号,测试的时候还没有插上那部分的排针。
以前同样的板子并不会出 ...

既然是检测外部信号,为什么不设为输入?
开漏模式下弱上拉是可能被禁止的

使用特权

评论回复
11
ayb_ice| | 2013-9-28 09:11 | 只看该作者
硬件也可能引起这个问题

检查是否有IO是负压(外部硬件引起的)

使用特权

评论回复
12
popeye021|  楼主 | 2013-9-28 09:32 | 只看该作者
wangyy608 发表于 2013-9-28 08:15
既然是检测外部信号,为什么不设为输入?
开漏模式下弱上拉是可能被禁止的 ...

这个单片机的IO模式只有推挽和漏极开路两种模式啊,作为输入时就是设为漏极开路,而此时内部的弱上拉也是使能的。上次记得chunyang说,漏极开路时,一般单片机都有弱上拉。

使用特权

评论回复
13
wangyy608| | 2013-9-28 10:18 | 只看该作者
外接上拉电阻能不能正常检测?
设为推挽能不能正常输出0/1?
检查软件?

使用特权

评论回复
14
ayb_ice| | 2013-9-28 13:54 | 只看该作者
C8051F有个整体弱上拉使能位,不要禁止了

使用特权

评论回复
15
ecoren| | 2013-9-28 17:20 | 只看该作者
我们有一块板子,当然处理器和你的不一样,弱上拉工作起来老出错,换成强上拉就好了。

使用特权

评论回复
16
popeye021|  楼主 | 2013-9-29 11:07 | 只看该作者
wangyy608 发表于 2013-9-28 10:18
外接上拉电阻能不能正常检测?
设为推挽能不能正常输出0/1?
检查软件?

这个输入IO的一个相邻管脚也是输入,且接了下拉电阻,如果把相邻管脚的下拉电阻去掉,就不会有问题。
看起来的现象就是:上电以后,由于相邻的一个管脚总是处于低电平,影响了这个IO,使其电平被拉低,但是两个管脚并没有直通,万用表测没有导通;去掉相邻管脚的下拉电阻后,这个IO就为高电平了。
这可能是什么原因?之前怀疑是焊油污染,反复用香蕉水擦过这两个管脚,也不管用。不过擦过后,重新上电一开始正常,过了一会,这个IO又被拉低了。

使用特权

评论回复
17
popeye021|  楼主 | 2013-9-29 11:09 | 只看该作者
ayb_ice 发表于 2013-9-28 13:54
C8051F有个整体弱上拉使能位,不要禁止了

没有禁止弱上拉使能位。

这个输入IO的一个相邻管脚也是输入,且接了下拉电阻,如果把相邻管脚的下拉电阻去掉,就不会有问题。
看起来的现象就是:上电以后,由于相邻的一个管脚总是处于低电平,影响了这个IO,使其电平被拉低,但是两个管脚并没有直通,万用表测没有导通;去掉相邻管脚的下拉电阻后,这个IO就为高电平了。
这可能是什么原因?之前怀疑是焊油污染,反复用香蕉水擦过这两个管脚,也不管用。不过擦过后,重新上电一开始正常,过了一会,这个IO又被拉低了。

使用特权

评论回复
18
ayb_ice| | 2013-9-29 11:14 | 只看该作者
还是硬件有问题,应该是有GPIO被嵌位了

使用特权

评论回复
19
popeye021|  楼主 | 2013-9-29 12:07 | 只看该作者
ayb_ice 发表于 2013-9-29 11:14
还是硬件有问题,应该是有GPIO被嵌位了

我又重新焊了一块板,新焊的这块板没有问题,一切正常。况且之前都有三块正常的板子了。
之前也发生过类似的情况,也是这个管脚上电后被拉低,不过拉低它的是相邻的另一个管脚,我用香蕉水擦了后就正常了。这次也是被拉低,但是和以前不是同一个管脚。
这几个相关管脚的硬件电路很简单。直接外部电平输入的,一个直接接单片机,一个管脚上有个下拉。
箝位的话,周围也没什么相关电路啊,只有那个相邻管脚。难道是PCB缺陷??

使用特权

评论回复
20
macbook| | 2017-12-20 18:37 | 只看该作者
你好,我最近调试STM32单片机也遇到同样的问题,有两个IO配置为上拉输入,工作一会儿后电压就被拉低了,用烙铁把几个管脚焊一下又可以工作一会儿,电路上也不存在干扰,焊了两块板都这样,相同的引脚有问题。请问大神有什么解决办法?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

455

帖子

4

粉丝