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

📄 nrf.c

📁 基于msp430的射频模块905的驱动程序。
💻 C
字号:
#include <msp430x14x.h>#include "nrf.h"#include "osc.h"unsigned char Rec[32];unsigned char a[32];unsigned char b[4];//********************************////****RF配置寄存器****************////********************************////RF配置寄存器//The content of this struct is nRF905 intialize data//CH_NO=1;433MHZ,Normal Operation,No Return;RX,TX Address is 4Bytes//RX TX Payload Width is 32Bytes;Disable Extern Clock;Fosc=16MHZ//8Bits CRC and enableRFConfig RxTxConf={  10,  0x01,0x0c,0x44,0x20,0x20,0xcc,0xcc,0xcc,0xcc,0x58};//********************************////*******NRF接口初始化************////********************************//void Nrf_Init(void){  //Port1  P1SEL=0x00;  P1DIR|=PWR+TXEN+TRX_CE;  P1OUT=0x00;  P1IE=0x00;  P1IES=0x00;  P1IFG=0x00;  //Port2  P2SEL=0x00;  P2DIR=0x00;  P2OUT=0x00;  P2IE=0x00;  P2IES=0x00;  P2IFG=0x00;  //Port5  P5SEL=0x00;  P5DIR|=CSN+MOSI+SCK;  P5OUT|=CSN;}//******************************////******NRF905处于Standby模式***////******************************//void Standby_Mode(void){  P1OUT|=PWR;  P1OUT&=~TRX_CE;  Delay_ms(4);  return;}//*****************************////********发送模式*************////*****************************//void Send_Mode(void){  P1OUT|=TXEN;  Delay_us(800);}//******************************////*******接收模式***************////******************************//void Receive_Mode(void){  P1OUT&=~TXEN;  Delay_us(800);  return;}//******************************////********打开电源**************////******************************//void Power_On(void){  P1OUT|=PWR;  Delay_ms(5);  return;}//******************************////********关闭电源**************////******************************//void Power_Off(void){  P1OUT&=~PWR;  Delay_ms(3);}//*****************************////*****NRF905配置初始化********////*****************************//void Config905(void){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x00);//写配置字  for(unsigned char i=0;i<RxTxConf.n;i++)  {    SPI1_WRITE(RxTxConf.buf[i]);  }  P5OUT|=CSN;}//*****************************////****读NRF905配置*************////*****************************//void ReadConfig(void){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x10);//读配置字  for(unsigned char i=0;i<32;i++)  {    a[i]=SPI1_READ();  }  P5OUT|=CSN;}//**************************////******NRF905的发送地址****////**************************//void TxAdress(void){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x22);//写发送地址  for(unsigned char i=0;i<4;i++)  {    SPI1_WRITE(RxTxConf.buf[i+5]);  }  P5OUT|=CSN;}//***************************////******读NRF905的地址*******////***************************//void ReadAdress(void){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x23);//读发送地址  for(unsigned char i=0;i<4;i++)  {    b[i]=SPI1_READ();  }  P5OUT|=CSN;}//*************************////*******写发送数据********////*************************//void SendData(unsigned char *p){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x20);//写发送数据  for(unsigned char i=0;i<32;i++)  {    SPI1_WRITE(*p);    p=p+1;  }  P5OUT|=CSN;}//*************************////********读发送的数据*******////**************************//unsigned char* ReadData(void){  P5OUT|=CSN;  P5OUT&=~CSN;  SPI1_WRITE(0x21);//读905的发送数据  for(unsigned char i=0;i<32;i++)  {    Rec[i]=SPI1_READ();  }  P5OUT|=CSN;  return  Rec;}//**************************////*******SPI1写*************////**************************//void SPI1_WRITE(unsigned char n){  unsigned char i;  for(i=8;i>0;i--)  {    _NOP();    Delay_us(5);    P5OUT&=~SCK;    Delay_us(5);    if(n&0x80)      P5OUT|=MOSI;    else      P5OUT&=~MOSI;    Delay_us(5);    P5OUT|=SCK;    Delay_us(5);    n=n<<1;  }  P5OUT&=~SCK;  Delay_us(5);  return;}//*************************////********SPI1读***********////*************************//unsigned char SPI1_READ(void){  unsigned char i;  unsigned char tempbit=0;  unsigned temp=0;  for(i=0;i<8;i++)  {    _NOP();    Delay_us(5);    P5OUT&=~SCK;    Delay_us(5);    P5OUT|=SCK;    Delay_us(5);    if((P5IN&0x04)==0x04)    {      tempbit=1;    }    else    {      tempbit=0;    }    temp=(temp<<1)|tempbit;  }  P5OUT&=~SCK;  Delay_us(5);  return temp;}

⌨️ 快捷键说明

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