求nrf24l01通信程序,msp430 的,自己写的在测试的时候一直发送失败

2019-03-24 10:23发布

不晓得怎么回事,一直发送失败,有没有nrf24l01的例子给我参考一下,或者大神帮我看看问题在哪

  1. u8 NRF_WriteReg(u8 reg,u8 val)
  2. {
  3.   u8 temp;
  4.   NRF24L01_CSN_0;
  5.   temp=SPI3_SendReceiveByte(reg);
  6.   SPI3_SendReceiveByte(val);
  7.   NRF24L01_CSN_1;
  8.   return temp;
  9. }




  10. u8 NRF_ReadReg(u8 reg)
  11. {
  12.   u8 val;
  13.   NRF24L01_CSN_0;
  14.   SPI3_SendReceiveByte(reg);
  15.   val=SPI3_SendReceiveByte(0xff);
  16.   NRF24L01_CSN_1;
  17.   return val;
  18. }


  19. u8 NRF_ReadBuf(u8 reg,u8 *buff,u8 num)
  20. {
  21.   u8 i,val;
  22.   NRF24L01_CSN_0;
  23.   val=SPI3_SendReceiveByte(reg);
  24.   for(i=0;i<num;i++)
  25.     *buff++=SPI3_SendReceiveByte(0xff);
  26.   NRF24L01_CSN_1;
  27.   return val;
  28. }


  29. u8 NRF_WriteBuf(u8 reg,u8 *buff,u8 num)
  30. {
  31.   u8 val,i;
  32.   NRF24L01_CSN_0;
  33.   val=SPI3_SendReceiveByte(reg);
  34.   for(i=0;i<num;i++)
  35.     SPI3_SendReceiveByte(*buff++);
  36.   NRF24L01_CSN_1;
  37.   return val;
  38. }

  39. u8 NRF_SendPacket(u8 *TxBuf)
  40. {
  41.   u8 val;
  42.   NRF24L01_CE_0;
  43.   NRF_WriteBuf(WR_TX_PLOAD,TxBuf,TX_PLOAD_WIDTH);
  44.   NRF24L01_CE_1;
  45.   delay_ms(5);
  46.   while(NRF24L01_IRQ!=0);
  47.   val=NRF_ReadReg(STATUS);
  48.   NRF_WriteReg(WRITE_REG,val);
  49.   if(val&MAX_TX)
  50.   {
  51.     NRF_WriteReg(FLUSH_TX,0xff);
  52.     return MAX_TX;
  53.   }
  54.   if(val&TX_OK)
  55.     return TX_OK;
  56.   return 0xff;  
  57. }
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jianping-sun
1楼-- · 2019-03-24 15:36
这个是SPI3初始化的代码
  1. void SPI3_Init()
  2. {
  3.   P10SEL|=BIT1+BIT2+BIT3;    //设置P10.1~P10.3外设功能
  4.   P10SEL&=~(BIT0+BIT4+BIT5);
  5.   P10DIR|=BIT0+BIT1+BIT3+BIT4;     //设置CS,MOSI,CLK,CE,为输出方向
  6.   P10DIR&=~(BIT2+BIT5);             //设置MISO为输入方向
  7.   P10DS|=BIT0+BIT1+BIT3+BIT4;     
  8.   P10REN|=BIT2+BIT5;              //设置MISO上拉
  9.   P10OUT|=BIT1+BIT2+BIT5;
  10.   P10OUT&=~BIT0+BIT3;
  11.   UCB3CTL1|=UCSWRST;      
  12.   UCB3CTL0 =UCCKPH+UCMSB+UCMST+UCMODE_0+UCSYNC;    //3线SPI主机模式,时钟极性高,先发送MSB
  13.   UCB3CTL1|=UCSSEL_2;          ///选择SMCLK
  14.   UCB3BR0=5;                  //25M/5=5M <10M
  15.   UCB3BR1=0;
  16.   UCB3CTL1&=~UCSWRST;
  17.   UCB3IE &= ~(UCRXIE+UCTXIE);  //不开中断
  18.   UCB3IFG&=~UCRXIFG;
  19. }

  20. //连接方式
  21.     //P10.0->CSN    P10.1->MOSI
  22.     //P10.2->MISO   P10.3->CLK
  23.     //P10.4->CE     P10.5->IRQ




  24. u8 SPI3_SendReceiveByte(u8 byte)
  25. {
  26.   u8 val;
  27.   while (!(UCB3IFG&UCTXIFG));   //等待TXBUF为空
  28.   UCB3TXBUF=byte;
  29.   while((UCB3STAT&UCBUSY)&&(!(UCB3IFG&UCRXIFG)));    //等待发送跟接收完成
  30. //  while (!(UCB3IFG&UCRXIFG));   //等待接收完
  31.   val=UCB3RXBUF;
  32.   return val;
  33. }
复制代码
jianping-sun
2楼-- · 2019-03-24 21:30
< :TI_MSP430_内容页_SA7 --> 哪位大神给一个nrf24l01的例子啊,要msp430的
jianping-sun
3楼-- · 2019-03-24 21:53
 精彩回答 2  元偷偷看……
jianping-sun
4楼-- · 2019-03-24 22:03
硬件SPI或者软件模拟SPI的都行啊

一周热门 更多>

相关问题

    相关文章