📄 nrf905dai.c
字号:
/*=========================================
Title: nrf905.c
Author: DAI,DME@THU
Date: 2006-10-12
version: v1.0
funciton:nrf905
===========================================*/
#include <nrf905.h>
#include <comm.h>
//#include "lf2407regs.h"
#include <spisim.h>
void SetNrf905Regs()
{
xdata byte buff[11];
PWR=1;
TRX_CE=0;
TX_EN=1;
buff[0]=W_CONFIG;
buff[1]=0x6c;
buff[2]=0x0e;
buff[3]=0x44;
buff[4]=0x04;
buff[5]=0x04;
buff[6]=0xe7;
buff[7]=0xe7;
buff[8]=0xe7;
buff[9]=0xe7;
buff[10]=0xde;
//set address len and data len is 4
SPISTE=0;
SpiSendBuff(buff, 11);
SPISTE=1;
}
void GetNrf905Regs(byte *buff)
{
byte c;
PWR=1;
TRX_CE=0;
TX_EN=1;
c=R_CONFIG;
SPISTE=0;
SpiSendBuff(&c,1);
SpiRecvBuff(buff,10);
SPISTE=1;
}
void Nrf905InterfaceInitial()
{
/* _MCRA.bit7=0;
_MCRC.bit6=0;
_MCRC.bit7=0;
_PADATDIR.bit15=1;
_PEDATDIR.bit14=1;
_PEDATDIR.bit15=1;
_MCRC.bit8=0;
_PFDATDIR.bit0=0;
//*/
PWR=1;
TRX_CE=0;
TX_EN=1;
SpiInitial();
SPISTE=1;
}
//Send the data buff (len=32)
void Nrf905SendData(byte *buff)
{
unsigned int i=0;
byte c;
PWR=1;
TRX_CE=0;
TX_EN=1;
DelayUs(150);
SPISTE=0;
c=W_TX_PAYLOAD;
SpiSendBuff(&c,1);
SpiSendBuff(buff,RT_DATA_LEN);
SPISTE=1;
TX_EN=1;TRX_CE=1;
while(!DR)
{
if(i++==0xfff0)
break;
}
TRX_CE=0;
TX_EN=0;
}
//recv the data to buff(len=32)
void Nrf905RecvData(byte *buff)
{
byte c;
PWR=1;
TRX_CE=0;
TX_EN=0;
DelayUs(150);
SPISTE=0;
c=R_RX_PAYLOAD;
SpiSendBuff(&c,1);
SpiRecvBuff(buff,RT_DATA_LEN);
SPISTE=1;
}
void SetNrf905RecvMode()
{
PWR=1;
TRX_CE=1;
TX_EN=0;
}
void SetNrf905TxAddr(byte *buff)
{
byte c;
PWR=1;
TRX_CE=0;
TX_EN=0;
c=W_TX_ADDRESS;
SPISTE=0;
SpiSendBuff(&c,1);
SpiSendBuff(buff, 4);
SPISTE=1;
}
void GetNrf905TxAddr(byte *buff)
{
byte c;
PWR=1;
TRX_CE=0;
TX_EN=0;
c=R_TX_ADDRESS;
SPISTE=0;
SpiSendBuff(&c, 1);
SpiRecvBuff(buff, 4);
SPISTE=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -