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

📄 tx.c

📁 基于430F169的nr2401的发送程序
💻 C
字号:
#include "msp430x16x.h"
#include "sfuntion.h"



#define PWR_UP BIT3 //P5.3
#define CE  BIT2  //P5.2
#define CS  BIT6  //P4.6
#define CLK1 BIT4  //P4.4
#define DATA BIT3  //P4.3
#define DR1  BIT5  //P4.5
#define KEY  BIT4  //P2.4


uchar InitData[15];
uchar TXData[14];


uchar BitCnt;
uchar ByteCnt;

uchar tempi;


void IO_2401A();
void nRF2401_ON();

void delay(uint del);
void delayus(uchar del);
void DoSPIClock();
void CE_High();
void CE_Low();
void BuildInitWord();
void InitnRF2401();

void TXEN_LOW();
void BuildShockWord(uchar *data);
void ShockBurst();

void CheckButton();


void IO_2401A()
{P5DIR|=PWR_UP+CE;
 P2DIR&=~KEY;
 P4DIR|=CS+CLK1+DATA;
 P4DIR&=~DR1;
 P5OUT&=~(PWR_UP+CE);
 P4OUT&=~(DATA+CS+CLK1);
 }

void nRF2401_ON()
{P5OUT|=PWR_UP;
delay(48);//延时3MS
}

/*void nRF2401_OFF()
{P5OUT&=~PWR_UP;}*/

void delay(uint del)
{uint x,y;
 for(x=0;x<del;x++)
 {for(y=0;y<100;y++)
   ;
 }
}

void delayus(uchar del)
{uchar x;
 for(x=0;x<del;x++)
 ;
}

void DoSPIClock()//上升沿时钟
{P4OUT|=CLK1;
 _NOP();
P4OUT&=~CLK1;
}

void CE_High()
{P5OUT|=CE;}
void CE_Low()
{P5OUT&=~CE;}

void BuildInitWord()  //ConfigurationWord
{InitData[0]=0x50;   //channel2 receiver 2,datalength 80bit(10byte) 
 InitData[1]=0x50;   //channel1 receiver 1,datalength 80bit(10byte) 
 InitData[2]=0x00;
 InitData[3]=0xcc;  //
 InitData[4]=0xcc;   // 
 InitData[5]=0xcc;   //
 InitData[6]=0xcc;   //channel2 5 bytes  rx address
 InitData[7]=0x00;    
 InitData[8]=0xcc;     // 
 InitData[9]=0xcc;     //
 InitData[10]=0xcc;    //
 InitData[11]=0xcc;   // channel1 5 bytes rx address
 InitData[12]=0x82;//32bits address  CRC(16bit)  CRC (DENABLE)....................
 InitData[13]=0x6f;//one channel,shock mode,datarate 1Mbps,f=16MHZ
 InitData[14]=0x00;//TX MODE
}
void InitnRF2401() //Configuration Word Enter
{P5OUT&=~CE;
 P4OUT|=CS;  // confige mode
 for(ByteCnt=0;ByteCnt<15;ByteCnt++)
 {tempi=InitData[ByteCnt];
   for(BitCnt=0;BitCnt<8;BitCnt++)
   {if(tempi&0x80) P4OUT|=DATA;
      else  P4OUT&=~DATA;
      tempi<<=1;
      DoSPIClock();// 模拟CLOCK
   }
 }
 P4OUT&=~CS;
}


void BuildShockWord(uchar *data)
{ uchar i;
  TXData[0]=0xcc;
  TXData[1]=0xcc;
  TXData[2]=0xcc;
  TXData[3]=0xcc; //receiver 1 address
  for(i=0;i<10;i++)
  TXData[4+i]=data[i];
}
  
void ShockBurst()
{  for(ByteCnt=0;ByteCnt<14;ByteCnt++)
  {tempi=TXData[ByteCnt];
   for(BitCnt=0;BitCnt<8;BitCnt++)
   {  if(tempi&0x80) P4OUT|=DATA;    
        else P4OUT&=~DATA;
      tempi<<=1;
      DoSPIClock();
       }
  }
   P5OUT&=~CE;
  P4OUT&=~DATA;
   delayus(40); //Tsby2txSB=195US
}

⌨️ 快捷键说明

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