msp430g2553 的usci_b0 spi模式问题

2019-03-24 09:28发布

主要用到了launchpad msp430g2553的硬件spi与nrf24l01通信,已经用了usci_A0的串口通讯,现在用usci_B0的spi与nrf24l01通信,用io模拟可以通讯返回正确的status值,但是用usci_b0的spi模式,返回的值不正确
  1. //==============================================================================
  2. //函数:uint SPI_RW(uint uchar)
  3. //功能:NRF24L01的SPI写时序
  4. //******************************************************************************
  5. char SPI_RW(char data)
  6. {
  7.   UCB0TXBUF=data;
  8.   while(!(IFG2 & UCB0TXIFG));//发送完成?发送缓存空置1
  9.   //data1=U0RXBUF;
  10.   while(!(IFG2 & UCB0RXIFG));//接收完成?接收缓存有数据置1
  11.   return(UCB0RXBUF);
  12. }
  13. //****************************************************************************************************
  14. //函数:uchar SPI_Read(uchar reg)
  15. //功能:NRF24L01的SPI时序
  16. //****************************************************************************************************
  17. char SPI_Read(char reg)
  18. {
  19.         char reg_val;
  20.         RF24L01_CSN_0;           // CSN low, initialize SPI communication...
  21.         SPI_RW(reg);            // Select register to read from..
  22.         reg_val = SPI_RW(0);    // ..then read registervalue
  23.         RF24L01_CSN_1;         // CSN high, terminate SPI communication
  24.         return(reg_val);       // return register value
  25. }
复制代码这个是usci_b0的初始设置:
  1. //===========SPI设置=============//
  2.   UCB0CTL1 |= UCSWRST;
  3.   UCB0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC + UCMODE_0;  // 3-pin, 8-bit SPI master
  4.   UCB0CTL1 |= UCSSEL_2;                     // SMCLK
  5.   UCB0BR0 |= 0x02;                          // /2
  6.   UCB0BR1 = 0;                              //
  7.   
  8.   UCB0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
复制代码 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
hkhkdyx
2019-03-25 05:44
你好  请问你调试出来没啊?我是卡在了while(!(IFG2 & UCB0RXIFG));//接收完成?接收缓存有数据置1   不知道为啥啊,我的扣扣34555162   希望能指教~

一周热门 更多>

相关问题

    相关文章