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

📄 mcbsp.c

📁 DSP与无线传输模块2401lde 应用
💻 C
📖 第 1 页 / 共 2 页
字号:
uint SPI_Write_Buf(uchar reg, uchar *pBuf, uchar uchars)
{
	uint status,uchar_ctr;
	
	CSNW(0);  //CSN = 0;            //SPI使能       
	_nop();
	status = SPI_RW(reg);   
	for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++) //
		SPI_RW(*pBuf++);
	_nop();
	CSNW(1);  //CSN = 1;           //关闭SPI
	return(status);    // 
}
/****************************************************************************************************/
//*函数:void SetRX_Mode(void)
//*功能:数据接收配置 
/****************************************************************************************************/
void SetRX_Mode(void)
{
	CEW(0);  //CE=0;
	_nop();
	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);   		// IRQ收发完成中断响应,16位CRC	,主接收
	_nop();
	CEW(1);  //CE = 1; 
	//inerDelay_us(130);
	inerDelay_us(1000);
}
/******************************************************************************************************/
//*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
//*功能:数据读取后放如rx_buf接收缓冲区中
/******************************************************************************************************/
unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
{
    unsigned char revale=0;
	sta=SPI_Read(STATUS);	// 读取状态寄存其来判断数据接收状况
	if(sta&0x40)				// 判断是否接收到数据
	{
	    CEW(0);  //CE = 0; 			//SPI使能
		_nop();
		SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
		revale =1;			//读取数据完成标志
	}
	_nop();
	SPI_RW_Reg(WRITE_REG+STATUS,sta);   //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志
	return revale;
}
/***********************************************************************************************************/
//*函数:void nRF24L01_TxPacket(unsigned char * tx_buf)
//*功能:发送 tx_buf中数据
//**********************************************************************************************************/
void nRF24L01_TxPacket(unsigned char *tx_buf)
{
	CEW(0);  //CE=0;			//StandBy I模式	
	SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // 装载接收端地址
	SPI_Write_Buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); 			 // 装载数据	
	SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);   		 // IRQ收发完成中断响应,16位CRC,主发送
	CEW(1);   //CE=1;		 //置高CE,激发数据发送
	inerDelay_us(10);
}


void main()
{
	unsigned char i,temp;
//	unsigned char tf =0;
	unsigned char TxBuf[32]={0};	 // 
	unsigned char RxBuf[32]={0};

	CSL_init();
	GPIO_pinDirection(GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN7,1);
	GPIO_pinDirection(GPIO_PIN4|GPIO_PIN6,0);
/*	GPIO_pinDirection(GPIO_PIN4|GPIO_PIN6|GPIO_PIN7,1);
	GPIO_pinWrite(GPIO_PIN0,0);
	GPIO_pinWrite(GPIO_PIN1,0);
	GPIO_pinWrite(GPIO_PIN2,0);
	GPIO_pinWrite(GPIO_PIN3,0);
	GPIO_pinWrite(GPIO_PIN4,0);
	GPIO_pinWrite(GPIO_PIN6,0);
	GPIO_pinWrite(GPIO_PIN7,0);
	GPIO_pinWrite(GPIO_PIN0,1);
	GPIO_pinWrite(GPIO_PIN1,1);
	GPIO_pinWrite(GPIO_PIN2,1);
	GPIO_pinWrite(GPIO_PIN3,1);
	GPIO_pinWrite(GPIO_PIN4,1);
	GPIO_pinWrite(GPIO_PIN6,1);
	GPIO_pinWrite(GPIO_PIN7,1);
	GPIO_pinWrite(GPIO_PIN0,0);
	GPIO_pinWrite(GPIO_PIN1,0);
	GPIO_pinWrite(GPIO_PIN2,0);
	GPIO_pinWrite(GPIO_PIN3,0);
	GPIO_pinWrite(GPIO_PIN4,0);
	GPIO_pinWrite(GPIO_PIN6,0);
	GPIO_pinWrite(GPIO_PIN7,0);
	GPIO_pinWrite(GPIO_PIN0,1);
	GPIO_pinWrite(GPIO_PIN1,1);
	GPIO_pinWrite(GPIO_PIN2,1);
	GPIO_pinWrite(GPIO_PIN3,1);
	GPIO_pinWrite(GPIO_PIN4,1);
	GPIO_pinWrite(GPIO_PIN6,1);
	GPIO_pinWrite(GPIO_PIN7,1);
	GPIO_pinWrite(GPIO_PIN0,0);
	GPIO_pinWrite(GPIO_PIN1,0);
	GPIO_pinWrite(GPIO_PIN2,0);
	GPIO_pinWrite(GPIO_PIN3,0);
	GPIO_pinWrite(GPIO_PIN4,0);
	GPIO_pinWrite(GPIO_PIN6,0);
	GPIO_pinWrite(GPIO_PIN7,0);
	GPIO_pinWrite(GPIO_PIN0,1);
	GPIO_pinWrite(GPIO_PIN1,1);
	GPIO_pinWrite(GPIO_PIN2,1);
	GPIO_pinWrite(GPIO_PIN3,1);
	GPIO_pinWrite(GPIO_PIN4,1);
	GPIO_pinWrite(GPIO_PIN6,1);
	GPIO_pinWrite(GPIO_PIN7,1);
*/	
/*
    GPIO_pinDirection(GPIO_PIN1|GPIO_PIN0,0);
	GPIO_pinDirection(GPIO_PIN0|GPIO_PIN1,1);//作为输出时读是可以的
	GPIO_pinWrite(GPIO_PIN0,0);
	iod=GPIO_pinRead(GPIO_PIN0);
	GPIO_pinWrite(GPIO_PIN0,1);
	iod=GPIO_pinRead(GPIO_PIN0);
	GPIO_pinWrite(GPIO_PIN0,0);
	iod=GPIO_pinRead(GPIO_PIN0);
	GPIO_pinWrite(GPIO_PIN0,1);
	iod=GPIO_pinRead(GPIO_PIN0);
	GPIO_pinWrite(GPIO_PIN1,0);
	GPIO_pinWrite(GPIO_PIN1,1);
	GPIO_pinWrite(GPIO_PIN1,0);
	GPIO_pinWrite(GPIO_PIN1,1);
//	GPIO_pinDirection();
	iod=GPIO_RGET(IODIR);
	iod=GPIO_RGET(IODATA);
*/
//	unsigned char tf =0;
//	unsigned char TxBuf[20]={0};	 // 
//	unsigned char RxBuf[20]={0};	
    init_NRF24L01() ;
//	led0=0;led1=0;led2=0;led3=0;
//	P0=0x00;
//	TxBuf[1] = 1 ;
//	TxBuf[2] = 1 ;
//	LBDS=0;
//	nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
//	LBDS=(unsigned int)1;
	Delay(6000);
/*
	for(i=0;i<0x18;i++)
	{
		temp=SPI_Read(i);
	}
	SPI_Read_Buf(0x0a, TxBuf, 5);
	SPI_Read_Buf(0x10, TxBuf, 5);
*/
//	SetRX_Mode();
//	P0=0xBF;
	while(1)
	{
/*
//    	if(KEY1 ==0 ) 
	  	{
//			P0=seg[1];
		    TxBuf[1] = 1 ;
		    tf = 1 ; 
	    }
//	   if(KEY2 ==0 )
	   {
//			P0=seg[2];
			TxBuf[2] =1 ;
			tf = 1 ; 
	   }
*/
//	   if (tf==1)
/*
       for(i=0;i<20;i++)
	   {
	   		TxBuf[i]=i;
	   }
       {	
			nRF24L01_TxPacket(TxBuf);	// Transmit Tx buffer data
			TxBuf[1] = 0x00;
			TxBuf[2] = 0x00;
//			tf=0;
			Delay(1000);
	   }
	   while(1);
*/
//***********************************************************************************************
		SetRX_Mode();
		nRF24L01_RxPacket(RxBuf);
//		temp=SPI_Read(0);
/*
   		if(RxBuf[1]|RxBuf[2])
		{
		
						
			if(	RxBuf[1]==1)
			{	 	
//				P0=seg[3];
//				LBDS=(unsigned int)2;
			}
			if(	RxBuf[2]==1)
			{
//				P0=seg[4];
//				LBDS=(unsigned int)4;
			}
//			JDQ=~JDQ;
			Delay(3000);
		}
	
		RxBuf[1] = 0x00;
		RxBuf[2] = 0x00;
*/
	}
}

⌨️ 快捷键说明

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