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

📄 transmit.c

📁 CC2420基本收发功能的实现。mcu:msp430
💻 C
字号:
/*******************************************************************
CC2420 RF transmit
*******************************************************************/
#include <msp430x16x.h>
#include "stdlib.h"
#include "cc2420init.h"
#include "cc2420run.h"
#include "cc2420const.h"




void init_SPI()
{
    if (U0CTL & SYNC)
	return;
	
    U0CTL |= SYNC;    //disableUART
    U0CTL &= ~I2C;    //disableI2C
      P4DIR |= 0x02;    //p4.2->2420_CS
      P3SEL |= 0x0E;    //P3.1,2,3 MODFUNC;	
                        //TOSH_SEL_SIMO0_MODFUNC();
                        //TOSH_SEL_SOMI0_MODFUNC();
                        //TOSH_SEL_UCLK0_MODFUNC();
      IE1 &= ~(UTXIE0 | URXIE0);  // interrupt disable
		
      U0CTL = SWRST;
      U0CTL |= CHAR | SYNC | MM;  // 8-bit char, SPI-mode, USART as master
      U0CTL &= ~(0x20);
		
      U0TCTL = STC ;     // 3-pin
      U0TCTL |= CKPH;    // half-cycle delayed UCLK
		

      U0TCTL &= ~(SSEL1 | SSEL0 );
      U0TCTL |= SSEL1; // use SMCLK, assuming 1MHz


	
      U0MCTL = 0;
		
      ME1 &= ~(UTXE0 | URXE0); //USART UART module disable
      ME1 |= USPIE0;   // USART SPI module enable
      U0CTL &= ~SWRST;
		
      IFG1 &= ~(UTXIFG0 | URXIFG0);
      IE1 &= ~(UTXIE0 | URXIE0);  // interrupt disabled
    return;
}
void MCUInit(void)
{
   //using 4M external oscillator crystal
 volatile unsigned int i;

//DCOCTL=0;
_BIS_SR(SCG0);
_BIS_SR(OSCOFF);
 BCSCTL1 =0;
  BCSCTL1 &= ~XT2OFF;                       // XT2= HF XTAL

   while ((IFG1 & OFIFG))
  {
  IFG1 &= ~OFIFG;                           // Clear OSCFault flag
  for (i = 0xFF; i > 1; i--);               // Time for flag to set
  }
                  // OSCFault flag still set?
  BCSCTL2=0;
  //BCSCTL2 &=~(SELM_2 +  SELS);
  BCSCTL2 |= SELM_2 +  SELS ;                        // SMCLK = MCLK= XT2 (safe) = 4M
//BCSCTL2 |= SELM_1  +DIVS_3;
}
void hardwareinit()
{
  MCUInit();
  init_SPI();
  cc2420init();


}

void main()
{
 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
 hardwareinit();
 Msg * data;
 long int i,j;
 data=(Msg*)malloc(sizeof(Msg));

 P5DIR|=0X70;
 P5OUT|=0X70;
 data -> length = 12;  //msg data length:10   last lqi&rssi:2
 data -> fcflo = CC2420_DEF_FCF_LO;//destination address mode:10
 data -> fcfhi = CC2420_DEF_FCF_HI_ACK;//ack request:1 frame type:10
// destination PAN is broadcast
 data -> destpan = TOS_BCAST_ADDR;
 // adjust the destination address to be in the right byte order
 data -> addr = 0x0001;
 // adjust the data type if need
 data -> type = FRAME_TYPE_DATA;
 // keep the DSN increasing for ACK recognition
 data -> dsn = 1;
 // reset the time field
 data -> time = 0;
data -> group=0x00;
data -> Txdata[0]=0x55;
for(i=0;i<100;i++)
{
 data->dsn =i;
  sendAMessage(data -> length,(char*)data);
 for(j=0;j<50000;j++);
 }
free(data);
P5OUT|=0X10;
}

⌨️ 快捷键说明

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