打印

SH88F54的I/O驱动能力问题

[复制链接]
2634|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近使用SH88F54遇到个问题:用P3.6控制蜂鸣器(如下图,单片机电源与蜂鸣器是同一电源V05),代码选项中IO口默认复位状态为准双向口,我焊了两块板子,在用keil下载程序的过程中,两个板子的蜂鸣器都会短响几声(声音听起来正常),在点击进入调试模式的过程中,其中一个板子蜂鸣器开始长响,并持续到程序控制P3.6输出低电平(程序中依旧设置该口为准双向口),之后程序控制其发声也正常,而另一块板子在进入调试模式的过程中,只是短响了一下,之后就不响了,再之后程序控制也无法让其响,检查了电路和焊接(包括单片机引脚),应该没问题。直接短接三极管的发射极和集电极,也能鸣响。用万用表测量P3.6的电压,只有大约 0.6V,如果断开限流电阻R34,测得电压是5V(电源5V),串入万用表,电流值约20uA,依旧不响。我开始怀疑是否驱动不够,就在程序中将IO口配置成推挽输出模式,这时终于能通过IO口控制蜂鸣器发声了。我将另一个板子也配置成推挽输出,也可以正常控制发声。

     照理说,这个电路用准双向口应该可以带动的,而且在下载和进入调试模式的过程中,蜂鸣器的短暂发声都是正常的,可同样配置成准双向口,为什么其中一片能驱动,另一片无法驱动?

沙发
bananarer| | 2011-1-12 09:36 | 只看该作者
本帖最后由 bananarer 于 2011-1-12 09:38 编辑

SH88F54的准双向IO有一个特点: 输入为斯密特输入(0.8Vdd为高,0.2Vdd为低)
当输出高,并且IO上面的电压逻辑是高(斯密特输入读到高)的时候,输出高的能力为10Kohm(相当于接10k电阻到5V);当输出高,并且IO上面的电压逻辑是低(斯密特输入读到低)的时候,输出高的能力为300Kohm(相当于接300K电阻到5V);当输出从低变成高,IC会先输出2个系统时钟的高(此时驱动能力为push-pull的强驱动能力约为10-15mA),然后判断IO的状态为高还是低(斯密特输入读到是高还是低),是高则是10Kohm,低则300Kohm。
现在解释好了以后,可以看楼主的问题了。
在初始上电的时候,FMQ io就被5.1k和三极管拉到一个中间状态,如果此时状态为高,则输出10kohm, 此时状态为低,则输出300kohm,初始状态不定,初始电平也不定,导致有的响,有的不响。
楼主可以量一下那个响的IC在蜂鸣器发声时,FMQ电压有多少?应该在1.5V以上。此时你将FMQ对地短接一下,然后放掉,就不会响了。

在使用蜂鸣器等外设的时候,建议使用Push-pull  IO,并且在上电的时候设置成Floating

使用特权

评论回复
板凳
yirongfu|  楼主 | 2011-1-14 09:56 | 只看该作者
豁然开朗,感谢bananarer的解答,很有深度:victory:
先前的那两块线路板现在不在手头,等我再焊几块板子试试。

使用特权

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

本版积分规则

99

主题

911

帖子

2

粉丝