树莓派之RF24L01+

给树莓派扩展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的管脚详细信息参考这里
github上还有24L01+的相关库

4人评论了“树莓派之RF24L01+”

  1. 你好,我想问一下,我要写一个无线模块驱动,实现51单片机和树莓派通信,目前有一块树莓派,一块51单片机开发板,两个NRf24l01无线模块,51单片模拟SPI协议驱动写好了…但是树莓派的不会写,需要怎么写呢?

发表评论

电子邮件地址不会被公开。 必填项已用*标注