OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4687|回复: 2

关于nrf24l01想请教一个问题:1收6发,接收机在发送应答信号时能否接收到其他通道的数据?

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-3-30
在线时间
0 小时
发表于 2015-3-30 12:06:22 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2015-3-30 12:34:10 | 显示全部楼层
可以的,你开启好对应的接收通道就可以,地址不能是一样的。
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2015-3-30
在线时间
0 小时
 楼主| 发表于 2015-3-30 13:52:27 | 显示全部楼层
回复【2楼】ST-FAE-SALE: <br />
--------------------------------- <br />
大体情况: <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目前我开了6路,发射机每隔1s发送一次数据,经过长期几十个小时的测试,数据收发比较稳定。但是不定期时间内,会丢1-2次包,丢包很少,但是存在,在三秒之内所有的发射机必定都会收到正确的数据(通过看闪灯的情况)。 <br />
<br />
目前在分析丢包的原因: <br />
1.同频干扰排除,之前看到一个网友,调试时频率调到2.5G,&nbsp;排除wifi干扰。&nbsp;&nbsp;频率调到2.5G测试过,仍然存在这个问题。 <br />
2.电源干扰。使用的电池都比较好的稳定的电池。加在stm32与nrf24l01,还有pa上的都比较稳定。 <br />
3.第三点我就想到,开启了ack后,看到英文手册上,接收机接收到数据后,shockburst模式中自动切换到发射模式,发送应答,发完后又切换回来。 <br />
会不会存在这样一种情况:就是6路发射机的信号同时到达,接收机接收其中一路,应答一路。其他发射机,则进入自动重发。(这里设置的重发15次)以此这样循环。但是不确定这一点。跳出来想想,芯片设计能1对6,肯定是考虑到这种情况的。 <br />
<br />
我想问一下大家,有没有遇到的同样的情况的。或是能给我提供一些其他丢包的原因&nbsp;。^-^谢谢! <br />
<br />
<br />
下面是发包代码。 <br />
<br />
void&nbsp;nRF24L01_TxPacket(unsigned&nbsp;char&nbsp;*&nbsp;tx_buf,u8&nbsp;&nbsp;tx_len,&nbsp;unsigned&nbsp;char&nbsp;pwr) <br />
{ <br />
&nbsp; &nbsp; &nbsp;u8&nbsp;sta_reg; <br />
&nbsp; &nbsp; &nbsp;CE_0; <br />
&nbsp; &nbsp; inerDelay_us(10);//StandBy&nbsp;I模式 <br />
&nbsp; <br />
&nbsp; &nbsp; sta_reg&nbsp;=&nbsp;SPI_Read(STATUS); <br />
&nbsp; &nbsp;&nbsp;if(sta_reg&nbsp;&amp;&nbsp;0x70) <br />
&nbsp; &nbsp; &nbsp; &nbsp; SPI_RW_Reg(WRITE_REG+STATUS,sta_reg&nbsp;&amp;&nbsp;0x70);&nbsp;//清标志&nbsp; <br />
<br />
&nbsp; &nbsp;SPI_Write_Buf(WR_TX_PLOAD,&nbsp;tx_buf,&nbsp;tx_len);&nbsp;        &nbsp;//&nbsp;装载数据 <br />
<br />
&nbsp; &nbsp;SPI_RW_Reg(WRITE_REG&nbsp;+&nbsp;CONFIG,&nbsp;0x0e);&nbsp;//&nbsp;IRQ收发完成中断响应,16位CRC,主发送 <br />
&nbsp; &nbsp;CE_1;        &nbsp;&nbsp;        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//置高CE,激发数据发送 <br />
&nbsp; &nbsp;inerDelay_us(60); <br />
<br />
&nbsp; do{ <br />
&nbsp; &nbsp; &nbsp; &nbsp;sta_reg&nbsp;=&nbsp;SPI_Read(STATUS); <br />
&nbsp; &nbsp; &nbsp; &nbsp;if(sta_reg&nbsp;&amp;&nbsp;0x20) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;                                        &nbsp;&nbsp; <br />
&nbsp; &nbsp; &nbsp;inerDelay_us(5); <br />
&nbsp;}while(!(sta_reg&nbsp;&amp;&nbsp;0x10)); <br />
<br />
SPI_RW_Reg(FLUSH_TX,0xff);//清空FIFO <br />
CE_0;//发送完成后,进入待机模式1&nbsp; <br />
} <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;main.c中: <br />
<br />
&nbsp;nRF24L01_TxPacket(Tx_DAT,TX_PLOAD_WIDTH_WORK,pwr);//&nbsp;发送&nbsp;&nbsp;&nbsp;&nbsp; <br />
if&nbsp;(0x20&nbsp;&amp;&nbsp;SPI_Read(STATUS)) <br />
&nbsp; &nbsp; LED_flash(GREEN,1);&nbsp;<span>//闪绿灯,发送成功</span><br />
else&nbsp; <br />
&nbsp; &nbsp;LED_flash(ORANGE,1);<span>//闪橙灯,发送失败&nbsp;</span>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表