求大家给一个msp430硬件spi操作nrf24l01的代码吧,自己写的老是发送失败

2019-03-24 08:57发布

代码是移植的正点原子的,但是前面的spi配置部分是自己写的,大神帮忙看看哪里配置不对,硬件spi跟软件模拟spi都试过了
  1. void SPI3_Init()
  2. {
  3. #if HW_SPI
  4.   P10SEL|=BIT1+BIT2+BIT3;    //设置P10.1~P10.3外设功能
  5.   P10SEL&=~(BIT0+BIT4+BIT5);
  6.   P10DIR|=BIT0+BIT1+BIT3+BIT4;     //设置CS,MOSI,CLK,CE,为输出方向
  7.   P10DIR&=~(BIT2+BIT5);             //设置MISO为输入方向
  8.   P10DS|=BIT0+BIT1+BIT3+BIT4;     
  9.   P10REN|=BIT2+BIT5;              //设置MISO上拉
  10.   P10OUT|=BIT1+BIT2+BIT5;
  11.   P10OUT&=~BIT0+BIT3;
  12.   UCB3CTL1|=UCSWRST;      
  13.   UCB3CTL0 =UCCKPH+UCMSB+UCMST+UCMODE_0+UCSYNC;    //3线SPI主机模式,时钟极性低,先发送MSB
  14.   UCB3CTL0&=~(UCCKPL);
  15.   UCB3CTL1|=UCSSEL_2;          ///选择SMCLK
  16.   UCB3BR0=5;                  //25M/5=5M <10M
  17.   UCB3BR1=0;
  18.   UCB3CTL1&=~UCSWRST;
  19.   UCB3IE &= ~(UCRXIE+UCTXIE);  //不开中断
  20. //  UCB3IFG&=~UCRXIFG;
  21. #elif !HW_SPI
  22.   P10DIR|=BIT0+BIT1+BIT3+BIT4;  
  23.   P10DIR&=~(BIT2+BIT5);
  24.   P10DS|=BIT0+BIT1+BIT3+BIT4;     
  25.   P10REN|=BIT2+BIT5;           
  26.   P10OUT|=BIT2+BIT5;
  27.   P10OUT&=~BIT3;
  28. #endif
  29. }

  30. //连接方式
  31.     //P10.0->CSN    P10.1->MOSI
  32.     //P10.2->MISO   P10.3->CLK
  33.     //P10.4->CE     P10.5->IRQ

  34. u8 SPI3_SendReceiveByte(u8 byte)
  35. {
  36.   u8 val;
  37. #if HW_SPI
  38.   while (!(UCB3IFG&UCTXIFG));   //等待TXBUF为空
  39.   UCB3TXBUF=byte;
  40.   while((UCB3STAT&UCBUSY)&&(!(UCB3IFG&UCRXIFG)));    //等待发送跟接收完成
  41.   val=UCB3RXBUF;
  42. #elif !HW_SPI
  43.   u8 i;
  44.   for(i=0;i<8;i++)
  45.   {
  46.     if(byte&0x80)
  47.       NRFMOSI_1;
  48.     else
  49.       NRFMOSI_0;
  50.     byte<<=1;
  51.     NRFCLK_1;
  52.     if(NRFMISO)
  53.       byte|=0x01;
  54.     NRFCLK_0;
  55.   }
  56.   val=byte;
  57. #endif
  58.   return val;
  59.   
  60. }
复制代码

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
jianping-sun
2019-03-25 10:22
shannon2014 发表于 2015-4-1 14:51
你是哪款430?

MSP430F5438A@25MHz

一周热门 更多>

相关问题

    相关文章