This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS:通过 SPI 访问 CC1120寄存器

Guru**** 2024750 points
Other Parts Discussed in Thread: MSP430F5529, CC1120, SIMPLICITI, BOOSTXL-CC1120-90
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/568177/ccs-access-cc1120-registers-over-spi

主题中讨论的其他器件:MSP430F5529CC1120SimpliciTIBOOSTXL-CC1120-90

工具/软件:Code Composer Studio

我已通过 SPI 将 CC1120模块与 MSP430F5529 Launchpad 连接。但我无法读取我已通过 SPI 写入同一寄存器的相同数据。这意味着我的 SPI 不能正常工作。您能否向我推荐一些示例代码或文档。以下是代码 我写过

#include

unsigned char 命令 Byte、dataByte、receivedByte、i;
void SPI_init();
void sendCommand (unsigned char);
void sendData (unsigned char);
unsigned char receiveData (void);
void CC1120_init();
void send_Serial (unsigned char);
void init_serial (void);
void send_value (unsigned char);

int main (空)

   WDTCTL = WDTPW | WDTHOLD;                      //停止看门狗计时器

   //SFRIE1=0X0010;
   init_serial();
   spi_init();                                  //初始化 SPI
   CC1120_init();                               //初始化射频设置

   P1OUT=0x01;                                  //选择输出
      P1OUT^= BIT0;
      sendCommand (0x80);
      receivedByte=receiveData();
                      SEND_VALUE (接收字节);
      sendCommand (0x31);
      receivedByte=receiveData();
                SEND_VALUE (接收字节);
          sendCommand (0x34);//启用 Rx 模式
          receivedByte=receiveData();
          SEND_VALUE (接收字节);

          /* DO   //***检查空 RXFIFO 的条件
              {
             P2OUT&=~BIT2;
             对于(i=0;i<128;i++)
             {
                  receivedByte = receiveData();
                //send_value (receivedByte);
                SEND_Serial ('B');
             }

                P2OUT|=BIT2;
              _DELAY_CYCLES (1000);
              }while (1);*/


   返回0;

void sendCommand (无符号字符命令字节)


         UCB0TXBUF =命令字节;                    //发送命令字节

         while ((((UCB0IFG&UCTXIFG)!=UCTXIFG));

void send_value (无符号字符字节)

   unsigned char 字节2、字节1、字节0;
      字节2=(字节/100);
      字节2=字节2|0X30;
      SEND_Serial (字节2);
      字节=字节%100;
      字节1 =字节/10;
      字节1=字节1|0X30;
      SEND_Serial (字节1);
      字节0=byte%10;
      字节0=字节0|0X30;
      SEND_Serial (字节0);
       SEND_Serial ('\n');

void send_Serial (无符号字符字节)


      UCA1TXBUF=字节;
      //while (UCA1STAT 和 UCBUSY);
      while (!(((UCA1IFG&UCTXIFG)=UCTXIFG));

void init_serial (void)

      P4SEL|=0X30;//选择 P4.4、5作为 TxD、RxD;
      UCA1CTL1|=UCSWRST;//复位 UART
      UCA1CTL1|=UCSSEL_1;//选择32668HZ
      UCA1BR0=3;//设置9600波特率
      UCA1BR1=0x00;
      UCA1IE=0x03;
      UCA1MCTL=0x06;
      UCA1CTL0=0x00;
      UCA1CTL1 &=~UCSWRST;


void SPI_init()

   P2DIR|=BIT2;                                  //为输出配置 CS
   P2OUT = BIT2;                                     // CS High
   P3REN=BIT1;                                     //
      P3DIR |= BIT0 + BIT2;                         //设置为输出
      P3SEL = BIT0+ BIT1 + BIT2;                          //配置 SPI
      /* USCI */
      UCB0CTL1 = UCSWRST;                            //将状态机复位
      UCB0CTL0 |= UCCKPL + UCMSB+UCMST + UCSYNC;       // 3引脚8位 SPI 主器件
      UCB0CTL1 |= UCSSEL_2;                         // USCI 时钟源:SMCLK
      UCB0BR0 |= 0x02;
      UCB0BR1 = 0;
      UCB0IE=0x03;
      UCB0CTL1 &=~UCSWRST;                         //启用模块或模块初始化
      P2OUT &=~BIT2;                               //选择设备
      while (((P3IN&0x02)=0x02);



void sendData (无符号字符数据字节)

         UCB0TXBUF =数据字节;                      //输入要发送的0-255值

         // while (UCB0STAT 和 UCBUSY);                   //等待移位寄存器和缓冲区为空完成
          while ((((UCB0IFG&UCTXIFG)!=UCTXIFG));


unsigned char receiveData()


   unsigned char receivedByte;
   while ((((UCB0IFG&UCRXIFG)!=UCRXIFG));

      接收字节= UCB0RXBUF;                //存储接收到的数据
          return receivedByte;


空 CC1120_init()

   
      receivedByte=receiveData();
      SEND_VALUE (receiveData);//1st 显示
      while (!(receivedByte&0x00)=0x00);


      //while (!((P3IN&0x02)=0x02);
   sendCommand (0x40);
   sendData (0x20);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请下载 SimpliciTI_RF_Stack 1_x_x_5软件包或 BOOSTXL-CC1120-90软件示例。

    software-dl.ti.com/.../index_FDS.html
    www.ti.com/.../swra493

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。

    SPI 设置中有一个小错误、现在发现它、SPI 工作正常。请在此处结束此讨论。

    谢谢、

    Pavan