10回答

0收藏

[原创] 树莓派之RF24L01+

Raspberry Pi Raspberry Pi 11330 人阅读 | 10 人回复 | 2013-07-11

原帖:http://www.elecbench.com/?p=1099

给树莓派扩展RF24L01+是我想了蛮久的事情,今天终于实现了,总结、记录、分享。
本文将讨论如下问题:
1.wiringPi的基本使用
1.1安装于更新
1.2使用wiringPi的程序编译
1.3使用wiringPi的程序执行
1.4wiringPi中SPI相关函数wiringPiSPIDataRW的注意事项
2.RF24L01+模块与RPi连接的接口问题
2.1MOSI和MISO
2.2CSN和CE
2.3我使用的管脚连接
1.wiringPi的基本使用
1.1安装于更新
    下载与安装请参考wiringPi官方网站
    第一个简单的例子Blink
1.2使用wiringPi的程序编译
    在编译程序时需要使用如下语句:
    gcc -o rfpi -Wall -I/usr/local/include -L/usr/local/lib main.c nRF_24L01.c nRF_spi.c -lwiringPi
1.3使用wiringPi的程序执行
     before run your app,you should load the spi module into the kernel by command:

gpio load spi
    且app需要使用root权限,所以,
    sudo ./rfpi
1.4wiringPi中SPI相关函数wiringPiSPIDataRW的注意事项
    该函数的说明如下:
/*
* wiringPiSPIDataRW:
*    Write and Read a block of data over the SPI bus.
*    Note the data ia being read into the transmit buffer, so will
*    overwrite it!
*    This is also a full-duplex operation.
*********************************************************************************
*/
    所以,对该函数的调用应该如下:
    wiringPiSPIDataRW(0,&aByte,1);
    ret = aByte;                                   //调用该函数后从SPI bus上读取到的数据已经存放在aByte中。
2.RF24L01+模块与RPi连接的接口问题
2.1MOSI和MISO
    SPI接口与UART口的描述不同,UART接口中TXD和RXD常常是针对该器件而言,所以两个器件使用UART连接时,A器件与B器件的TX和RX应该交叉连接;而SPI接口的描述是针对整个接口而言的 ,MOSI表示 master output slave input,在整个接口中一方为master,另一方为slave,所以两个器件的接口是直连的。
2.2CSN和CE
    nRF24L01+有一个CSN还有一个CE。CSN是SPI Chip Select 应该接RPi的CE0或CE1,而CE是Chip Enable Activates RX or TX mode,该脚应该由另外一个独立的IO口来控制。
2.3我使用的管脚连接nRF24L01+ pin name        RPi header pin num        wiringPi pin num
CE        12        1
CSN        24        10
SCLK        23        14
MOSI        19        12
MISO        21        13
IRQ        13        2
VCC        17       
GND        25       

RPi和wiringPi的管脚详细信息参考这里。(请前往原帖,论坛不兼容我的opera浏览器,无法上传图片。)

github上还有24L01+的相关库
https://github.com/kehribar/nrf24L01_plus
http://maniacbug.github.io/RF24/
分享到:
回复

使用道具 举报

回答|共 10 个

倒序浏览

沙发

ukonline2000

发表于 2013-7-11 11:22:24 | 只看该作者

不错,要是再详细一点就更好了,
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
板凳

奔跑-350257

发表于 2013-7-11 13:02:24 | 只看该作者

ukonline2000 发表于 2013-7-11 11:22
不错,要是再详细一点就更好了,

我可是把折腾过程中遇到的关键问题都分享啦,搞个24L01的驱动放上去就可以跑了。

暂时我还只到读取寄存器内容这一步。
地板

ukonline2000

发表于 2013-7-11 13:54:05 | 只看该作者

gdmgb520 发表于 2013-7-11 13:02
我可是把折腾过程中遇到的关键问题都分享啦,搞个24L01的驱动放上去就可以跑了。

暂时我还只到读取寄存 ...

不管怎么说,都感谢你的分享呀!
博客站点:http://ukonline2000.com
网店:http://ukonline2000.taobao.com
5#

小菜儿

发表于 2013-7-12 08:57:57 | 只看该作者

多谢楼主分享!!!继续期待~
6#

a20084666

发表于 2013-7-12 21:39:16 | 只看该作者

那无线模块我也用过
7#

奔跑-350257

发表于 2013-7-13 08:09:26 | 只看该作者

Discuz! 怎么对opera支持不好了?
传不了图片
8#

奔跑-350257

发表于 2013-7-13 08:13:02 | 只看该作者



用查询方式接收数据,
这模块信号太差了!淘宝买的,跟我们产品上用的差得太远了。
9#

奔跑-350257

发表于 2013-7-13 08:13:57 | 只看该作者

接下来添加中断
10#

瑶白^

发表于 2015-4-2 21:18:34 | 只看该作者

我想问一下哪个编译指令是由什么组成的?
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条