在线时间116 小时
UID3123257
注册时间2016-10-11
NXP金币0
TA的每日心情 | 奋斗 2017-1-18 20:00 |
---|
签到天数: 45 天 连续签到: 1 天 [LV.5]常住居民I
高级会员

- 积分
- 533
- 最后登录
- 2024-11-23
|
利用LPC824驱动nRF24L01+实现无线通信
nRF24L01+是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。可以应用在如下领域:● 无线鼠标 键盘 游戏机操纵杆
● 无线门禁
● 无线数据通讯
● 安防系统
● 遥控装置
● 遥感勘测
● 智能运动设备
● 工业传感器
● 玩具
我们可以利用它来实现近距离的无线控制与传输。nRF24L01+引脚说明如下:
1GND | 2VCC | 3CE | 4CSN | 5SCK | 6MOSI | 7MISO | 8IRQ |
知道了nRF24L01+的引脚就是给它分配引脚了

/***************************************************************************************/
// GND 地
// VCC 3.3电源
// MISO P0_24 LPC824设置为输入
// CE P0_8 //使能
// SCK P0_26 //SPI时钟
// MOSI P0_15 //数字输入
// CSN P0_27 //片选信号
// IRQ P0_9 //LPC824设置为输入
/***************************************************************************************/
可以看到,这里使用的模拟SPI,其中MISO与IRQ引脚设置的都是输入,其他的是输出。程序如下:
- #define nRF24L01_CSN_Clr() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 27, 0) //0
- #define nRF24L01_CSN_Set() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 27, 1); //1
- #define nRF24L01_CE_Clr() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 26, 0) //0
- #define nRF24L01_CE_Set() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 26, 1) //1
- //#define nRF24L01_IRQ_Clr() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 15, 0) //0
- //#define nRF24L01_IRQ_Set() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 15, 1) //1
- #define nRF24L01_SCK_Clr() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 24, 0) //0
- #define nRF24L01_SCK_Set() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 24, 1) //1
- #define nRF24L01_MOSI_Clr() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 8, 0) //0
- #define nRF24L01_MOSI_Set() Chip_GPIO_PinSetState(LPC_GPIO_PORT, 0, 8, 1) //1
复制代码 引脚初始化:
- void nRF24L01_PIN_Init(void)
- {
- Chip_GPIO_Init(LPC_GPIO_PORT);
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 24, 0); //ÉèÖÃΪÊäÈë MISO
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 8, 1); //ÉèÖÃΪÊä³ö
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 26, 1); //ÉèÖÃΪÊä³ö
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 15, 1); //ÉèÖÃΪÊä³ö
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 27, 1); //ÉèÖÃΪÊä³ö
- Chip_GPIO_PinSetDIR(LPC_GPIO_PORT, 0, 9, 1); //ÉèÖÃΪÊäÈë IRQ
- }
复制代码 接下来就是修改网上找到的程序中需要修改的地方,待会会贴出源代码,这里就不叙述了。
nRF24L01是需要两个通信的,我这里只有一个LPC824,所示,另一半用的是LPC1114来写的程序,但是与平台没有关系,只要通信两个模块的地址一样就行。
LPC1114这里就不叙述了,我直接给出源代码。LPC824作为发送端,LPC1114作为接收,并通过串口与计算机通信,将接收到的数据发送给上位机,这里用串口助手替代。源程序与结果图如下:
源程序:
|
|