|
给树莓派扩展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+的相关库
https://github.com/kehribar/nrf24L01_plus
http://maniacbug.github.io/RF24/
|
|