OpenEdv-开源电子网

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

STM8S103 无线模块nrf24l01 发送成功 但是接收不成功 接收的数据在串口显示乱码

[复制链接]

2

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2015-9-24
在线时间
41 小时
发表于 2015-9-24 13:44:30 | 显示全部楼层 |阅读模式
5金钱
发送的status的TX_DS和MAX_RT发送完成后已经置1了,我也清除了标志位,确定数据发送成功。但是接收端接收不成功数据,有时能接收到数据,但串口显示出来的数据是乱码.......&nbsp; &nbsp; 是我的延时问题吗?但是修改了也没多大变化。求大神帮忙解决!!!!<br />
<br />
<br />
void NRF24L01_Set_RxMode()<br />
{<br />
ClrCE;&nbsp;<br />
<br />
&nbsp;         NRF24L01_Write_TxData(W_REGISTER+RX_ADDR_P0, TxAddr, TX_ADDR_WITDH); &nbsp;<br />
<br />
&nbsp;         NRF24L01_Write_Reg(W_REGISTER+EN_AA,0x01); &nbsp; &nbsp; &nbsp; /* 使能接收通道0自动应答 */<br />
&nbsp;         NRF24L01_Write_Reg(W_REGISTER+EN_RXADDR,0x01); &nbsp; /* 使能接收通道0 */<br />
&nbsp;         NRF24L01_Write_Reg(W_REGISTER+RF_CH,0x40); &nbsp; &nbsp; &nbsp; /* 选择射频通道0x40 */<br />
NRF24L01_Write_Reg(W_REGISTER+RX_PW_P0,TX_DATA_WITDH); &nbsp;/* 接收通道0选择和发送通道相同有效数据宽度 */<br />
&nbsp;         NRF24L01_Write_Reg(W_REGISTER+RF_SETUP,0x07); &nbsp; &nbsp;/* 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 */<br />
NRF24L01_Write_Reg(W_REGISTER+CONFIG,0x0f); &nbsp; &nbsp; &nbsp;/* CRC使能,16位CRC校验,上电 */&nbsp;<br />
SetCE;<br />
Delay(0xff);<br />
&nbsp;&nbsp;<br />
}<br />
<br />
<br />
unsigned char NRF24L01_RevData(unsigned char *RevData)<br />
{<br />
u8 RevFlags = 1;<br />
u8 sta;<br />
<br />
sta = NRF24L01_Read_Reg(R_REGISTER+STATUS);        /* 读取状态寄存器的值 */<br />
if(sta &amp; 0x40)                                /* 判断是否接收到数据 */<br />
{<br />
ClrCE; <br />
NRF24L01_Read_RxData(R_RX_PAYLOAD,RevData,RX_DATA_WITDH);        /* 从RXFIFO读取4位数据 */<br />
<br />
/* 接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志 */<br />
NRF24L01_Write_Reg(W_REGISTER+STATUS,0xff);&nbsp;<br />
<br />
ClrCSN;<br />
&nbsp;         NRF24L01_RW(FLUSH_RX);        /* 用于清空FIFO */<br />
&nbsp;         SetCSN; <br />
<br />
RevFlags = 0;         &nbsp;&nbsp;<br />
}<br />
<br />
return(RevFlags);<br />
}<br />
<br />
<br />
<br />
<br />
void main(void)<br />
{<br />
&nbsp;<br />
&nbsp; LED_Init(LED3);<br />
&nbsp; UART_Init();<br />
&nbsp; NRF24L01_Init();<br />
&nbsp; LED_Off(LED3);<br />
&nbsp; &nbsp;while (1)<br />
&nbsp; {<br />
&nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; &nbsp; while(NRF24L01_Check()) &nbsp; //判断nrf24l01是否连接<br />
&nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; Send_Str(Data2);<br />
&nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp;&nbsp;<br />
&nbsp; &nbsp; &nbsp; NRF24L01_Set_RxMode();<br />
&nbsp; &nbsp; &nbsp; if (!(NRF24L01_RevData(RecBuf)))&nbsp;<br />
&nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; LED_On(LED3);<br />
&nbsp; &nbsp; &nbsp; &nbsp; Send_Str(RecBuf);<br />
&nbsp; &nbsp; &nbsp; }<br />
&nbsp; }<br />
} &nbsp; &nbsp;<br />
<br />

最佳答案

查看完整内容[请看2#楼]

回复【4楼】正点原子: --------------------------- 行了   原来还是发送没成功   网上查到有人说nrf24l01上电后要等待3ms后在进行初始化   所以初始化前加了个延时   又再模块初始化那里加了个清除中断标志和清除FIFO的语句   最好两个模块数据交换成功
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2015-9-24
在线时间
41 小时
 楼主| 发表于 2015-9-24 13:44:31 | 显示全部楼层
回复【4楼】正点原子:
<br>---------------------------
<br>行了&nbsp;&nbsp;&nbsp;原来还是发送没成功&nbsp;&nbsp;&nbsp;网上查到有人说nrf24l01上电后要等待3ms后在进行初始化&nbsp;&nbsp;&nbsp;所以初始化前加了个延时&nbsp;&nbsp;
<br>又再模块初始化那里加了个清除中断标志和清除FIFO的语句&nbsp;&nbsp;&nbsp;最好两个模块数据交换成功
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-9-24 22:40:00 | 显示全部楼层
发送的是字符串,还是数值?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

30

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2015-9-24
在线时间
41 小时
 楼主| 发表于 2015-9-25 09:20:29 | 显示全部楼层
回复【2楼】正点原子:
<br>---------------------------------
<br>回复【2楼】正点原子:
<br>---------------------------------
<br>字符串啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2015-9-25 22:02:48 | 显示全部楼层
回复【3楼】haauhaau:
<br>---------------------------------
<br>那你对比下发送和接收数据的区别吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-9-29 23:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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