#include///*************************************************************引腳連接宏定義*************************************************************/#define DATA LATBbits.LATB0//頻道1收發(fā)數(shù)據(jù)端#define CLK1 LATBbits.LATB1//頻道1時(shí)鐘#define DR1 LATBbits.LATB2//頻道1數(shù)據(jù)已準(zhǔn)備好#define CS LATBbits.LATB3//配置模式片選#define CE LATBbits.LATB4//收發(fā)狀態(tài)控制#define PWR_UP LATBbits.LATB5//芯片喚醒///*************************************************************狀態(tài)切換宏定義*************************************************************/#define NRF2401_Mode_RT() PWR_UP=1;CE=1;CS=0;//收發(fā)#define NRF2401_Mode_Deploy() PWR_UP=1;CE=0;CS=1;//配置#define NRF2401_Mode_Free() PWR_UP=1;CE=0;CS=0;//空閑#define NRF2401_Mode_Off() PWR_UP=0//關(guān)機(jī)///*************************************************************測(cè)試用數(shù)據(jù)*************************************************************/const unsigned char Dat[10]={1,2,3,4,5,6,7,8,9,10};const unsigned char Add[4]={//目標(biāo)地址000000ff0x00,0x00,0x00,0xff};/*************************************************************NRF2401配置數(shù)據(jù)備 注:當(dāng)芯片未掉電,且需要切換收發(fā)方式時(shí)僅需要發(fā)送一個(gè)字節(jié)*************************************************************/const unsigned char NRF2401_Deploy_Data[15]={0x50,//DATA2_W通道二數(shù)據(jù)包長(zhǎng)度80bit(10byte),DATA2_W<=256-ADDR_W-CRC(bit)0x50,//DATA2_W通道一數(shù)據(jù)包長(zhǎng)度,DATA1_W<=256-ADDR_W-CRC(bit)0x00,//通道二地址(A24),ADDR20x00,//通道二地址(A23)0x00,//通道二地址(A22)0x00,//通道二地址(A21)0x02,//通道二地址(A20)0x00,//通道一地址(A14),ADDR1=0x00000000fe0x00,//通道一地址(A13)0x00,//通道一地址(A12)0x00,//通道一地址(A11)0xfe,//通道一地址(A10)0x83,//b7~b2:接收地址寬度32位,(和發(fā)送端一致,不超過40bit),ADDR_W//b1~b0:16CRC模式(01-8bit;11-16bit;00/10-no);b1,CRC_L;b0,CRC_EN0x6F,//b15:通道二禁止(0-通道1;1-通道1和2),RX2_EN//b14:通訊模式為ShockBurat(0-Direct模式,1-ShockBurst模式),CM//b13:通信速率為1M(0-250Kbps;1-1Mbps),RFDR_SB//b12~b10:晶振選擇16M(000-4M;001-8M;010-12M;011-16M),XO_F//b9~b8:發(fā)射功率0db(00,01,10,11>-20db,-10db,-5db,0db),RF_PWR0x04 //b7~b1:頻道選擇4,RF_CH#//b0:收發(fā)控制(0-發(fā)送;1-接收),RXEN};///*************************************************************IO初始化函數(shù)函數(shù)名稱:Init_IOforNRF2401();輸入?yún)?shù):無輸出參數(shù):無備 注:無*************************************************************/void Init_IOforNRF2401(void){TRISBbits.TRISB0=0;//設(shè)置DATA引腳為輸出TRISBbits.TRISB1=0;//設(shè)置CLK引腳為輸出TRISBbits.TRISB2=1;//設(shè)置DR1引腳為輸入TRISBbits.TRISB3=0;//設(shè)置CS引腳為輸出TRISBbits.TRISB4=0;//設(shè)置CE引腳為輸出TRISBbits.TRISB5=0;//設(shè)置PWR_UP引腳為輸出}///*************************************************************數(shù)據(jù)串行通信函數(shù)函數(shù)名稱:NRF2401_DataSerialSend();輸入?yún)?shù):待發(fā)送數(shù)據(jù)塊首地址,待發(fā)送數(shù)據(jù)個(gè)數(shù)輸出參數(shù):無備 注:調(diào)用前要對(duì)NRF2401的工作模式做相應(yīng)的設(shè)定*************************************************************/void NRF2401_DataSerialSend(unsigned char *p,unsigned char n){unsigned char i,j;//unsigned char d;//TRISBbits.TRISB0=0;//設(shè)置DATA引腳為輸出TRISBbits.TRISB1=0;//設(shè)置CLK引腳為輸出//CLK1=0;LATAbits.LATA5 = 0;for(i=0;i500nS}else{DATA=0;}//Nop();CLK1=1;//最短時(shí)鐘寬度500nSd<<=1;// Nop();CLK1=0;}}LATAbits.LATA5 = 1;DATA=0;}//
評(píng)論