📄 nrf.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 + -