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

📄 2401.txt

📁 2401接收和发送的c文件
💻 TXT
字号:
void Config_RF_rtchange(char tr_id)
{
	unsigned char cfg_byte;
    	unsigned char temp_sdi_byte;		//为SPI协议的SDI端定义临时变量

	cfg_byte = 0x04;
	// 接收模式
  	if (tr_id=='r') cfg_byte = 0x05;
  
	//先进入standby模式
	rf_pwr = 1;
	dly(1);
	rf_ce = 0;
	dly(1);
	rf_cs = 0;
	dly(1);			//确保延迟50ns

 	//进入配置模式
	rf_ce = 0;
  	dly(1);
  	rf_cs = 1;
  	dly(2);				//确保延迟5us
  		
	SPI2CONbits.DISSDO = 0;		//打开SDO端 
  	SPI2BUF = cfg_byte;			//写入配置数据
	dly(50);
	while(SPI2STATbits.SPITBF);	//从SPIBUF向SPISR传输结束
	while(!IFS1bits.SPI2IF);		//SPISR与SDO/SDI端口传输结束
	IFS1bits.SPI2IF = 0;			//清标志
	temp_sdi_byte = SPI2BUF;		//执行SPI协议的SDI端
	while(SPI2STATbits.SPIRBF);	//读入完成
	SPI2STATbits.SPIROV = 0;		//清标志
	
	//进standby模式
  	rf_ce = 0;			
	dly(1);
	rf_cs = 0;
  	dly(1);
	//进入工作模式
  	rf_ce = 1;			//确保延迟5us
	dly(1);
	rf_cs = 0;
  	dly(2);
}

void Send_RF_msg()
{
	unsigned int cnt;
	unsigned char sndmsg[18];
	unsigned char temp_sdi[18];    //为SPI协议的SDI端定义临时数组
	
	for(cnt=0;cnt<18;cnt++)
	{
		sndmsg[cnt]='a';
	}	
	rf_ce = 1;						
	dly(2);							//确保延迟5us
	rf_cs = 0;
  	dly(1);							
	SPI2CONbits.DISSDO = 0;			//打开SDO端
	 //先发送目标节点地址
	for(cnt=0;cnt<4;cnt++)					
	{	
		
		SPI2BUF = 0xcc;				//写入目标地址
		dly(50);
		while(SPI2STATbits.SPITBF);	//从SPIBUF向SPISR传输结束
		while(!IFS1bits.SPI2IF);		//SPISR与SDO/SDI端口传输结束
		IFS1bits.SPI2IF = 0;			//清标志
		temp_sdi[cnt] = SPI2BUF;		//执行SPI协议的SDI端
		while(SPI2STATbits.SPIRBF);	//读入完成
		SPI2STATbits.SPIROV = 0;		//清标志
     }
  	
	for(cnt=0;cnt<18;cnt++)					
	{	
		
		SPI2BUF = sndmsg[cnt];			//写入发送数据
		dly(50);
		while(SPI2STATbits.SPITBF);	//从SPIBUF向SPISR传输结束
		while(!IFS1bits.SPI2IF);		//SPISR与SDO/SDI端口传输结束
		IFS1bits.SPI2IF = 0;			//清标志
		temp_sdi[cnt] = SPI2BUF;		//执行SPI协议的SDI端
		while(SPI2STATbits.SPIRBF);	//读入完成
		SPI2STATbits.SPIROV = 0;		//清标志
     }
	rf_ce = 0;						//启动发射
	dly(1);							
	rf_cs = 0;
  	dly(1);	
	dly(100);						//确保延迟195us

}

void Rcv_RF_msg()
{	
	unsigned int cnt;
	unsigned char rcvmsg[18];
	unsigned char temp_sdo[18];     //为SPI协议的SDO端定义临时数组
	rf_ce = 1;						
	dly(1);							//确保延迟50ns
	rf_cs = 0;
  	dly(1);												
/*	
	//SPI2CONbits.CKP = 1;		//时钟空闲时为高电平
	SPI2CONbits.CKP = 0;		//时钟空闲时为低电平
	//SPI2CONbits.CKE = 0;		//数据在时钟从空闲转变为有效时切换
	SPI2CONbits.CKE = 1;		//数据在时钟从有效转变为空闲时切换
*/
	SPI2CONbits.DISSDO = 1;			//关闭SDO端
	for(cnt=0;cnt<18;cnt++)					
	{	
		temp_sdo[cnt] = cnt;
		SPI2BUF = temp_sdo[cnt];		//执行SPI协议的SDO端
		dly(50);
		while(SPI2STATbits.SPITBF);	//从SPIBUF向SPISR传输结束
		while(!IFS1bits.SPI2IF);		//SPISR与SDO/SDI端口传输结束
		IFS1bits.SPI2IF = 0;			//清标志
		rcvmsg[cnt] = SPI2BUF;			//读入数据
		//rfmsg[cnt] = SPI2BUF;		//读入数据
		while(SPI2STATbits.SPIRBF);	//读入完成
		SPI2STATbits.SPIROV = 0;		//清标志
	}
	//rf_ce = 0;						
	//dly(1);						//确保延迟5us
	//rf_cs = 0;
  	//dly(1);
	dly(100);						//确保延迟202us
}

⌨️ 快捷键说明

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