[转载]NRF24L01+的5个通道调试经验
来源:互联网 发布:淘宝 优衣库 便宜 编辑:程序博客网 时间:2024/06/06 09:06
http://www.51hei.com/bbs/dpj-37676-1.html
一对多的比较好的帖子:http://www.rationmcu.com/elecjc/1592.html
/***************************************************************************
函数名称:void NRF24L01_Init_TX(uchar pipe)
函数功能:初始化NRF24L01
函数备注:在调用NRF24L01作为发射时,都要先调用该函数对NRF24L01进行初始化
***************************************************************************/
void NRF24L01_Init_TX(uchar pipe)//输入通道值
{
/*待机模式*/
CE=0;
CSN=1;
SCK=0;
/*装载数据*/
SPI_Write_Buf(WRITE_REG + TX_ADDR, pipe_add[pipe], TX_ADR_WIDTH);//写TX节点地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, pipe_add[pipe], RX_ADR_WIDTH); //设置RX节点地址,主要为了使能ACK
/*配置寄存器*/
SPI_Write_Reg(WRITE_REG + EN_AA, 0x3F); //使能所有通道自动应答
SPI_Write_Reg(WRITE_REG + EN_RXADDR, 0x3F);//使能所有通道的接收地址(这两项定义的通道数不得小于当前使用的通道数,奇怪的NRF24L01+(O__O "…))
SPI_Write_Reg(WRITE_REG + RF_CH, 40);//设置RF通道为40 收发必须一致!
SPI_Write_Reg(WRITE_REG + SETUP_RETR, 0xFF);//自动重发 4000+86us 重发15次
SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0F); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启 收发必须一致!
SPI_Write_Reg(WRITE_REG + CONFIG, 0x0E); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,发送模式,开启所有中断
}
/***************************************************************************
函数名称:void NRF24L01_Init_RX(uchar pipe)
函数功能:初始化NRF24L01
函数备注:在调用NRF24L01作为接收时,都要先调用该函数对NRF24L01进行初始化
***************************************************************************/
void NRF24L01_Init_RX(uchar pipe)//输入通道值
{
/*待机模式*/
CE=0;
CSN=1;
SCK=0;
/*装载数据*/
if(pipe == 0) //通道,对应设置40位地址
{
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS0, RX_ADR_WIDTH); //设置RX节点地址,主要为了使能ACK
SPI_Write_Buf(WRITE_REG + (RX_ADDR_P0+pipe), RX_ADDRESS0+pipe, RX_ADR_WIDTH); //设置RX节点地址,主要为了使能ACK
}
else //其他通道,对应设置通道1公共地址和相应8位地址
{
SPI_Write_Buf(WRITE_REG + RX_ADDR_P1, RX_ADDRESS1, RX_ADR_WIDTH); //设置RX节点地址,主要为了使能ACK
SPI_Write_Buf(WRITE_REG + (RX_ADDR_P0+pipe), pipe_add[pipe], 1); //设置RX节点地址,主要为了使能ACK(地址长度只能是1,不能多写,写一样的值也不行)
}
/*配置寄存器*/
SPI_Write_Reg(WRITE_REG + EN_AA, 1<<pipe);//使能通道的自动应答
SPI_Write_Reg(WRITE_REG + EN_RXADDR, 1<<pipe); //使能通道的接收地址
SPI_Write_Reg(WRITE_REG + RF_CH, 40); //设置RF通道为40 收发必须一致!
SPI_Write_Reg(WRITE_REG + (RX_PW_P0+pipe), RX_PLOAD_WIDTH); //选择通道的有效数据宽度
SPI_Write_Reg(WRITE_REG + RF_SETUP, 0x0F); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启 收发必须一致!
SPI_Write_Reg(WRITE_REG + CONFIG, 0x0F); //配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
}
- [转载]NRF24L01+的5个通道调试经验
- 2.4G模块NRF24L01调试经验
- 2015.07.28 STC15单片机学习日记--NRF24L01 6通道调试
- nrf24l01的调试测试程序
- NRF24L01多通道通讯
- NRF24L01通道之我见及基于NRF24L01的无线组网方案的几点看法
- 无线串口NRF24L01的使用与调试
- NRF24L01调试问题总结
- BCB 串口调试经验(转载)
- 编程经验:关于OpenCV源码调试的好文章转载~
- 编程经验:关于OpenCV源码调试的好文章转载~
- NRF24L01 使用小结/自动应答/通道地址
- NRF24L01 使用小结/自动应答/通道地址
- 软件项目成功的20个经验-转载
- USB_Mega 调试4 --- NRF24L01 Done
- 转载别人的经验
- 运算放大器的调试经验
- 使用 Eclipse 调试 Java 程序的 10 个技巧(转载)
- 欢迎使用CSDN-markdown编辑器
- WebService基础学习—基础知识
- Linux中的IO模型
- 链表应用:奇数位丢弃
- python:中dict和set
- [转载]NRF24L01+的5个通道调试经验
- Multipart/form-data POST文件上传详解
- HTML的a标签href属性指定相对路径与绝对路径的用法讲解
- 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
- 用php的chr和ord函数实现字符串和ASCII码互转
- JS原生实现本地图片上传预览
- acts_as_tree简单实现树形结构
- 毒蝎子过河的寓言
- R数据结构小结、读取文件