打印
[51单片机]

三极管开关 不能完全闭合 [已经找到问题]

[复制链接]
1492|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
peter_wjp|  楼主 | 2014-7-22 08:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 peter_wjp 于 2014-7-22 08:49 编辑

目前我在做一个通过SPI总线读取EEPROM的程序,使用的是STC15单片机,标准的SPI接口 非软件模拟。
但是由于需要读取的EEPROM是在别的PCB上已经焊接好的,所以 我通过一个SOP8的测试夹来进行连接。在软件调试中遇到了很多问题。
1. 如果我使用一个按键来触发读取操作,则单片机在连接PCB上电后,读取的内容一直为0,后来经过研究我发现PCB上的EEPROM的电源与PCB其他芯片的电源共通的,也就是说 存在其他芯片干扰数据读取。(后来通过示波器发现,需要读取的PCB板上的ARM芯片会在上电300ms以后将EEPROM的MISO拉低 内部估计是开漏状态,用万用表测量下是直接接地了)。
2. 基于第一点,我为了验证,就在程序里设置为上电初始化的时候执行一次读取(上电300ms以内),此时的数据就对了。 但是设计功能时候就要求必须用一个按键触发读取指令,我也想过讨巧的办法,就是在上电后读取一次,把数据暂存起来,按键触发时候直接就把数据显示出来就行了。但是因为还有其他功能,所以在初始化时候执行读取,会影响其他功能。
3. 然后我就想到,用三极管做为开关,在按键触发后,导通EEPROM的电源,然后读取完毕 就关断。使用的NPN管子(手头上有现成的)  E极直接接地,+5V和C之间接需要读取的芯片,同时为了验证 我还并了一个发光二极管(包含限流电阻)来做为状态指示。然后通过单片机引脚来驱动三极管 (单片机口有上拉10K电阻)。在没有连接芯片时候,通过LED状态能够看到三极管能够可靠打开与关断,但是连接了EEPROM后,上电初始化没问题,三极管打开一次,之后当单片机输出为0时候,LED依然有微弱的亮光,可以判定三极管并没有可靠关断。
求原因,我下一步准备在单片机输出口和三极管B极加一个二极管。

--------------
7月22日更新
今天回去在三极管基极增加了二极管和电阻,情况依旧,后来分析程序,基本上找到答案了。
我对EEPROM进行读取时候使用的是mode 0的SPI协议,读取完毕后 SCK引脚会持续输出低电平,对于单片机来说,输出低电平相当于端口内部三极管开漏状态,相当于内部接地。因为所有的元件都是公用5V电源,所以才存在三极管即便关闭了,但是由于SCK拉低,相当于CE短接了。
我如果把SPI初始化放在程序运行最开始阶段,果然 监控状态的LED在上电后就开始亮了。基本验证了这个事实,我把SCK线移除,LED马上灭了。

相关帖子

沙发
dirtwillfly| | 2014-7-22 08:51 | 只看该作者
赞一个,谢谢分享:handshake

使用特权

评论回复
板凳
peter_wjp|  楼主 | 2014-7-22 08:55 | 只看该作者
期间还用了NMOS的场效应管测试,效果基本是一致的,应该都是SCK在作怪。
因为手头上有现成的NPN的三极管和NMOS的效应管,如果选用PMOS或者PNP的,也许就没这种情况了。下一步准备就这么测试。
或者在读取完毕后,取消SPI使能,将SCK置高电平。


使用特权

评论回复
地板
peter_wjp|  楼主 | 2014-7-22 22:00 | 只看该作者
peter_wjp 发表于 2014-7-22 08:55
期间还用了NMOS的场效应管测试,效果基本是一致的,应该都是SCK在作怪。
因为手头上有现成的NPN的三极管和N ...

今晚测试了下,在执行完读取后,取消了SPI使能,将SCK拉高,问题解决

使用特权

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

本版积分规则

5

主题

63

帖子

0

粉丝