天线|RF射频
登录
直播中
文妮
7年用户
246经验值
私信
关注
[问答]
NRF24L01如何调试?
开启该帖子的消息推送
nRF24L01
好久没发帖。。忙于期末考试和校
电子
设计比赛。这几天重操旧业。。拾起
STM32
~~~调了三天的无线NRF24L01模块。。通道0和通道1都能自由自在的
通信
了。。可是通道2以上调了2天一点进展也没有。。搜了网上各种资料。目前还没有发现有调通通道2的。很多所谓的已调通所有通道。都是骗人的啊@_@!程序里就只有通道0和1调通,能实现2发1收,然后来了一句,6发1收同理。。同理!!我怎么就没有发现同理呢。。怎么都出不来啊!!不抱怨了。。上程序代码:
//发送地址
const uint8_t TX0_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA1}; //发送地址
const uint8_t TX1_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA2}; //发送地址
const uint8_t TX2_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA3}; //发送地址
const uint8_t TX3_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA4}; //发送地址
const uint8_t TX4_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA5}; //发送地址
const uint8_t TX5_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA6}; //发送地址
//接收地址
const uint8_t RX0_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA1}; //接收地址
const uint8_t RX1_ADDRESS[RX_ADDR_WIDTH]={0x62,0x62,0x62,0x62,0xA2}; //接收地址
const uint8_t RX2_ADDRESS[1]={0xA3}; //接收地址,高32位等于RX1_ADDRESS
const uint8_t RX3_ADDRESS[1]={0xA4}; //接收地址
const uint8_t RX4_ADDRESS[1]={0xA5}; //接收地址
const uint8_t RX5_ADDRESS[1]={0xA6}; //接收地址
//发射配置
void TX_Mode(uint8_t *TX_ADDRESS)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(MY_WRITE_REG+TX_ADDR,(uint8_t*)TX_ADDRESS,TX_ADDR_WIDTH); //写TX节点地址
NRF24L01_Write_Buf(MY_WRITE_REG+RX_ADDR_P0,(uint8_t*)TX_ADDRESS,RX_ADDR_WIDTH); //设置RX节点地址
//主要为了使能ACK
NRF24L01_Write_Reg(MY_WRITE_REG+EN_AA,0x01); //使能通道0的自动应答
NRF24L01_Write_Reg(MY_WRITE_REG+EN_RXADDR,0x01); //使能通道0的接收地址
NRF24L01_Write_Reg(MY_WRITE_REG+SETUP_RETR,0x1a); //设置自动重发间隔时间:500us + 86us
//最大自动重发次数:10次
NRF24L01_Write_Reg(MY_WRITE_REG+RF_CH,40); //设置RF通道为40
NRF24L01_Write_Reg(MY_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(MY_WRITE_REG+CONFIG,0x0e); //配置基本工作模式的参数
/ /PWR_UP,EN_CRC,16BIT_CRC,发射模式
NRF24L01_CE=1; //CE为高,10us后启动发送
}
//接收配置
void RX2_Mode(void)
{
NRF24L01_CE=0;
NRF24L01_Write_Buf(MY_WRITE_REG+RX_ADDR_P2,(uint8_t*)RX2_ADDRESS,1); //选择通道2作为接收
//写RX节点地址RX_ADDRESS
NRF24L01_Write_Reg(MY_WRITE_REG+EN_AA,0x04); //使能通道2的自动应答
NRF24L01_Write_Reg(MY_WRITE_REG+EN_RXADDR,0x04); //使能通道2的接收地址
NRF24L01_Write_Reg(MY_WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(MY_WRITE_REG+RF_CH,40); //设置RF通信频率
NRF24L01_Write_Reg(MY_WRITE_REG+RX_PW_P2,RX_DATA_WIDTH);//选择通道2的有效数据宽度
NRF24L01_Write_Reg(MY_WRITE_REG+RF_SETUP,0x0f); //设置TX发射参数,0db增益,2Mbps,低噪声增益开启
NRF24L01_Write_Reg(MY_WRITE_REG+CONFIG, 0x0f); //配置基本工作模式的参数
//PWR_UP,EN_CRC,16BIT_CRC,接收模式
NRF24L01_CE = 1; //CE为高进入接收模式,130us后检测空中信息
}
PS:数据手册都快被我翻烂了。。真的找不出问题所在。只能发帖求问了~~原子哥。。各位大虾~~~
tic/image/smiley/kindeditor/5.gif" />
回帖
(15)
汤敏树
2020-7-28 07:18:04
我全看过了。。真的只是声称。。看了他们的程序乱七八糟的的。。里面除了0和1 通道,根本没有其余通道了。。欺骗感情啊!
我全看过了。。真的只是声称。。看了他们的程序乱七八糟的的。。里面除了0和1 通道,根本没有其余通道了。。欺骗感情啊!
举报
李玉兰
2020-7-28 07:32:51
举报
王强
2020-7-28 07:50:18
通道2~5只写入一个地址就好了吧 没必要都写 通道1都得写
通道2~5只写入一个地址就好了吧 没必要都写 通道1都得写
举报
李耘蝶
2020-7-28 08:18:51
今天我也试了下,0,1通道确实可以,2通道就不行了,楼主这个问题搞定没?
今天我也试了下,0,1通道确实可以,2通道就不行了,楼主这个问题搞定没?
举报
更多回帖
rotate(-90deg);
回复
相关问答
nRF24L01
NRF24L01
模块
调试
经验分享
2021-12-16
876
如何解决
nRF24L01
模块设计和
调试
遇到的问题?
2021-12-17
1102
nrf24l01
调试
问题如何解答
2020-06-18
1320
如何解决STM32
调试
NRF24L01
模块无线收发通信遇到的问题?
2021-12-17
1024
NRF24L01
的天线怎么绘制?
2020-06-02
2573
NRF24L01
无线模块资料哪里有
2020-05-29
1060
要不要
nRF24L01
上位机
调试
软件?
2020-06-12
850
需要
nRF24L01
上位机
调试
软件及源码吗,协助
调试
24L01
相当有用
2020-06-15
1343
什么是
nRF24L01
?
2021-10-09
1055
NRF24L01
驱动函数包括哪些
2021-12-16
941
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分