中级会员
- 积分
- 253
- 金钱
- 253
- 注册时间
- 2012-3-8
- 在线时间
- 29 小时
|
两个模块,一个发送一个接收,修改原子哥的代码经测试单片机与模块SPI通信没有问题,但无法通信<br />
<div>uchar NRF24L01_TxPacket(uchar *txbuf)</div>
<div>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>uchar sta; </div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>CE=0;</div>
<div> <span class="Apple-tab-span" style="white-space:pre;"> </span>SPI_W_DBuffer(W_TX_PLOAD,txbuf,TX_DATA_WITDH);//写数据到TX BUF 32个字节</div>
<div> <span class="Apple-tab-span" style="white-space:pre;"> </span>CE=1;//启动发送<span class="Apple-tab-span" style="white-space:pre;"> </span> </div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>while(IRQ!=0);//等待发送完成</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>sta=SPI_R_byte(STATUS); //读取状态寄存器的值<span class="Apple-tab-span" style="white-space:pre;"> </span> </div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>SPI_W_Reg(W_REGISTER+STATUS,sta); //清除TX_DS或MAX_RT中断标志</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(sta&0x10)//达到最大重发次数</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>SPI_W_Reg(FLUSH_TX,0xff);//清除TX FIFO寄存器 </div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 2; </div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>if(sta&0x20)//发送完成</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 1;</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre;"> </span>return 3;//其他原因发送失败</div>
<div>}<br />
这个函数的返回值是2,就是达到最大重发次数,这说明发送成功了没?</div> |
|