Exemplo n.º 1
0
/* Read only one byte (useful for most of the reg.) */
unsigned char nrfRead1Reg(unsigned char address) {
  char byte;

  nrfReadReg(address, &byte, 1);

  return byte;
}
Exemplo n.º 2
0
/****************************检测应答信号******************************/
unsigned char nrfCheckACK()
{  //用于发射
	sta=nrfReadReg(R_REGISTER+STATUS); // 返回状态寄存器
	if(TX_DS||MAX_RT) //发送完毕中断
	{
		nrfWriteReg(W_REGISTER+STATUS,0xff);  // 清除TX_DS或MAX_RT中断标志
		CSN=0;
		nrfSPI(FLUSH_TX);//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!  
		CSN=1; 
		return(0);
	}
	else
	{
		return(1);
	}
}
Exemplo n.º 3
0
//获取24L01接收到的数据。
//当24L01收到数据触发中断后,调用本方法来取得24L01收到的数据
byte* nrfGetReceivedData()				 
{
	static byte dataBuffer[RECEIVE_DATA_WIDTH];
	
	sta=nrfReadReg(R_REGISTER+STATUS);//发送数据后读取状态寄存器
	if(RX_DR)				// 判断是否接收到数据
	{
		//CE=0;//待机Standby-I
		
		// 从RXFIFO读取数据
		nrfReadRxData( R_RX_PAYLOAD, dataBuffer, RECEIVE_DATA_WIDTH);
		
		//接收到数据后RX_DR置高为来清除中断标
		nrfWriteReg( W_REGISTER+STATUS, 0x40 );

		//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
		//我经过试验发现,不清FIFO的话,发送方有时候会出现收不到ACK的现象
		CSN=0;
		nrfSPI(FLUSH_RX); 
		CSN=1;
	}
	return dataBuffer;
} 
Exemplo n.º 4
0
//获取24L01接收到的数据。
//当24L01收到数据触发中断后,调用本方法来取得24L01收到的数据
unsigned char* nrfGetReceivedData()				 
{
	static unsigned char dataBuffer[RECEIVE_DATA_WIDTH];
	
	sta=nrfReadReg(R_REGISTER+STATUS);//发送数据后读取状态寄存器
	if(RX_DR) // 判断是否接收到数据
	{
		//CE=0;//进入Standby-I模式
		
		nrfReadRxData(R_RX_PAYLOAD,dataBuffer,RECEIVE_DATA_WIDTH);// 从RXFIFO读取数据
		
		//接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标
		//nrfWriteReg(W_REGISTER+STATUS,0xff);
		//网上找到的例子是用0xff来清中断标志,我通过试验发现用0x40也可以清掉RX_DR
		nrfWriteReg(W_REGISTER+STATUS,0x40);
		
		//用于清空FIFO !!关键!!不然会出现意想不到的后果!!!大家记住!!
		//我经过试验发现,不清FIFO的话,发送方有时候会出现收不到ACK的现象
		CSN=0;
		nrfSPI(FLUSH_RX); 
		CSN=1;
	}
	return dataBuffer;
}