NRF24L01与51单片机端口连接电平匹配问题

[复制链接]
15660|16
 楼主| mcu_lover 发表于 2010-3-10 10:49 | 显示全部楼层 |阅读模式
最近在玩NRF24L01这个芯片。买的是模块,共有8个I/O口引出。除了VCC和GND外,SPI四个引脚:CS,SCK,MOSI, MISO,剩下的是芯片使能CE以及中断引脚IRQ。
     我用的是普通的51单片机AT89S52,只能5V供电。NRF24L01采用3.3V的供电。由于NRF24L01的I/O能够承受5V的电压,同时SCK,MOSI以及CS,CE对于NRF24L01而言都只是输入,不需要输出,因此直接与AT89S52的I/O相连。而MISO,以及IRQ,除了接受数据外,还要发数据给单片机,由于NRF24L01最高电平为3.3V,达不到AT89S52的最小输入高电平Vih。因此需要进行电平转换。请问我在这两个引脚上面,直接接两个4.7K上拉电阻到5V,行的通吗?谢谢。
bnm99 发表于 2010-3-10 11:47 | 显示全部楼层
没试过,我是用3.3V的,换单片机是最简单的方法,
 楼主| mcu_lover 发表于 2010-3-10 20:55 | 显示全部楼层
各位老师帮帮忙啊。
chenpan161 发表于 2010-3-11 21:03 | 显示全部楼层
我看了一下,NLF2401的IO电流也不大,单片机的IO灌电流可以承受,直接接没有什么问题,如果实在担心的话,接一个1K左右的电阻限下流吧
sinanjj 发表于 2010-3-11 21:41 | 显示全部楼层
加个1k电阻就行.









当然最好是换个3.3v MCU
ShakaLeo 发表于 2010-3-11 23:03 | 显示全部楼层
如果输出口不是开漏的, 把这个输出口通过电阻上拉至5V应该不会起作用,在输出高电平的时候应该还是3.3V的,而且还会对3.3V芯片的电源有一定影响。还是用三极管做电平转换或者用电平转换芯片吧。
 楼主| mcu_lover 发表于 2010-3-12 08:00 | 显示全部楼层
谢谢楼上各位朋友。
6L ShakaLeo朋友一句话倒是提醒了菜鸟我。哎,不知道改到P0口会不会有作用
ShakaLeo 发表于 2010-3-12 09:03 | 显示全部楼层
51的P0口在不作为总线用的时候是开漏的,但如果跟nrf2401的输出口连接的话,因为nrf2401的输出口不是开漏输出,所以还是会把上拉的5V拉下来,或者上拉的5V会对nrf2401的输出端口造成损坏。
楼主从哪里看到的3.3V达不到89S52的输入高电平最小值啊,怎么我在手册上看到的是0.2VCC+0.9V啊,VCC=5V的话,1.9V以上就可以了,所以应该不用电平转换。

评分

参与人数 1威望 +1 收起 理由
mcu_lover + 1

查看全部评分

 楼主| mcu_lover 发表于 2010-3-12 10:07 | 显示全部楼层
51的P0口在不作为总线用的时候是开漏的,但如果跟nrf2401的输出口连接的话,因为nrf2401的输出口不是开漏输出,所以还是会把上拉的5V拉下来,或者上拉的5V会对nrf2401的输出端口造成损坏。
楼主从哪里看到的3.3V达不 ...
ShakaLeo 发表于 2010-3-12 09:03

非常感谢Shakaleo!
在你的指点下,我又重新翻看了AT89S52的datasheet,确实如你所言。呵呵,可能不仔细看datasheet,是我这样菜鸟的通病吧,这次长记性了,谢谢。


这样我就可以直接将NRF24L01的I/O和AT89S52的I/O直接连接了。
开漏输出我容易理解,就是输出高电平时输出悬空,需要外部上拉确定输出电平。而这里的三态输出,除了一个高电平,一个低电平,还有一个高阻态,这个高阻态一般起啥作用啊?谢谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
ShakaLeo 发表于 2010-3-12 10:39 | 显示全部楼层
高阻态应该是一种近似悬空的状态,作用就是可以不干扰总线上的其它设备。假如您的MCU的SPI口上接的不是一个设备,而是两个或以上,MCU通过CE来选择和哪个设备通讯,那么MISO在不输出数据(没有被MCU的CE信号选中)的时候保持高阻态就很有必要了,不然就有可能和别的设备的输出电平有冲突。
chen3bing 发表于 2010-3-12 10:58 | 显示全部楼层
学习了。
 楼主| mcu_lover 发表于 2010-3-12 13:16 | 显示全部楼层
:)理解了。谢谢各位老师帮助,尤其是ShakaLeo。
maoweikeji 发表于 2010-4-18 11:39 | 显示全部楼层
必须电平匹配!
jewelhs 发表于 2011-5-2 12:50 | 显示全部楼层
楼主,您最后是怎么连接的呢,我现在是想直接用两节电池给NRF42L01供电,其他管脚就直接接到单片机的I/O口上,不知道是否可以,希望您能指点下,谢谢
ye269797168 发表于 2011-5-2 16:08 | 显示全部楼层
我也用过NRF24L01+AT89S52,NRF24L01我是用3.3V供电的,MCU就用5V,NRF24L01与MCU直接相连无问题
jewelhs 发表于 2011-5-2 17:33 | 显示全部楼层
谢谢.... 您的3.3v是怎么供电的
sytqq280787575 发表于 2011-9-19 09:40 | 显示全部楼层
直接连可以的,用过,不过是BK2421,输入电压允许到5V的
也可以试试另一种方法,MCU还是5V,2401 3V供电
MCU 的SPI用IO模拟,输出低就是低,输出高时转为输入,输入口接上拉电阻到2401 VDD(3.3V)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

82

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部