⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc2420run.c

📁 CC2420基本收发功能的实现。mcu:msp430
💻 C
字号:
#include "port_config_CC2420.h"
#include "cc2420init.h"
#include "cc2420const.h"
#include <msp430x16x.h>
char txlen;
char *txbuf;
char data[20];
void flushTxfifo(void)
{
HPLCC2420_cmd(CC2420_SFLUSHTX);
}
MsgPtr HPLCC2420_readRXFIFO()
{
int RevLen,i=1;


        PHY_Selected();
        // clear the RX flag if set
         isTxIntrPending();
         SPI_Rx(); //isRxIntrPending();
         SPI_Tx(CC2420_RXFIFO |CMD_READ);
         while(!(isRxIntrPending())) ;
         SPI_Rx();
         SPI_Tx(0);
         while(!(isRxIntrPending())) ;
        // get the length of the buffer
         RevLen = SPI_Rx();
         data[0]=RevLen;
         //msg->length = Revlen;
         while(!(RevLen==0))
         {
            SPI_Tx(0);
	    while(!(isRxIntrPending())) ;
            data[i++]=SPI_Rx();
            RevLen--;

         }
     flushRxfifo();
     return (MsgPtr)data;
     }


void HPLCC2420_writeTXFIFO(char length, char *data) {
    char i = 0;
	
        txlen = length;
        txbuf = data;

      PHY_Selected();//TOSH_CLR_RADIO_CSN_PIN();
      // clear the RX flag if set
      isTxIntrPending();
      SPI_Rx(); //isRxIntrPending();
      SPI_Tx(CC2420_TXFIFO);
      while(!(isTxIntrPending())) ;
      SPI_Tx(length);//发送长度
      while(!(isTxIntrPending())) ;
      for (i =1; i < txlen; i++) {
        SPI_Tx(txbuf[i]);
        while(!(isTxIntrPending())) ;
      }
      while(!(isTxEmpty())) ;
      PHY_Deselected();//TOSH_SET_RADIO_CSN_PIN();
}
void sendAMessage(char length,char*tBuf)
{
  //unsigned char v;
   flushTxfifo();


  HPLCC2420_writeTXFIFO(length,tBuf);




  if(READ_PIN_CCA)//1表示可以发送了,0表示忙
          {
              PHY_Selected();
              /*Transmission is enabled by issuing aSTXON or STXONCCA command strobe.*/
            
              HPLCC2420_cmd(CC2420_STXON);
              while(!(P4IN&0x02));//等待是否有发送 
              while((P4IN&0x02));//等待发完
/*
              do {
                        SPI_Tx(CC2420_SNOP);
                        v = SPI_Rx();

               } while (!(v & 0x08 )||);//等待是否有发送

              do {
                        SPI_Tx(CC2420_SNOP);
                        v = SPI_Rx();
                        if(v&0x20)
                        HPLCC2420_cmd(CC2420_SFLUSHTX);
               } while ((v & 0x08 ));    //等待发完
              */
              
              P5OUT^=0X10;
              PHY_Deselected();
            }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -