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

📄 ccxxx0lib.c

📁 mc68hc908jb8的usb代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
		Dly1mS(2);
		if(TMR1IF)
		{ 
			halSpiStrobe(CCxxx0_SIDLE);
			return 1;
		}
	}
	TMR1H=0;TMR1L=0;TMR1IF=0;
	while(P_GDO0)
	{
		Dly1mS(2);
		if(TMR1IF)
		{
			halSpiStrobe(CCxxx0_SIDLE);
			return 1;
		}
	}
	return 0;
}// halRfSendPacket




//-------------------------------------------------------------------------------------------------------
//  BOOL halRfReceivePacket(BYTE *rxBuffer, UINT8 *length)
//	接收数据包
//  
//  ARGUMENTS:
//      BYTE *rxBuffer
//          Pointer to the buffer where the incoming data should be stored
//      UINT8 *length
//          Pointer to a variable containing the size of the buffer where the incoming data should be
//          stored. After this function returns, that variable holds the packet length.
//          
//  RETURN VALUE:
//      BOOL
//          TRUE:   CRC OK
//          FALSE:  CRC NOT OK
//-------------------------------------------------------------------------------------------------------
BYTE halRfReceivePacket(BYTE *rxBuffer, UINT8 length) 
{
    BYTE status=0;
    UINT8 packetLength,j;
	status = halSpiReadStatus(CCxxx0_RXBYTES);
	if(status==0x00) 
	{
		if(halSpiReadStatus(CCxxx0_MARCSTATE)!=0x0D) halSpiStrobe(CCxxx0_SRX);
		return 0;
	}
	j=0x50;
	while((halSpiReadStatus(CCxxx0_MARCSTATE)&0x1f)!=0x01) 
	{
		
		Dly1mS(1);
		j--;
		if(!j)
		{ 
			halSpiStrobe(CCxxx0_SFRX);			
			return 0;
		}
	}

    	packetLength = halSpiReadReg(CCxxx0_RXFIFO);
    
    	if (packetLength <= length) 
		{
			halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, length); 
        
        	halSpiStrobe(CCxxx0_SFRX);
        	return 1;//(status & CRC_OK);
    	} 
		else 
		{

			halSpiStrobe(CCxxx0_SFRX);
        	return 0;
		}

  
}// halRfReceivePacket




//-------------------------------------------------------------------------------------------------------
//  void RfWriteRfSettings()
//	配置RF寄存器
//  DESCRIPTION:
//      This function is used to configure the CCxxx0 based on a given rf setting
//
//  ARGUMENTS:
//      
//         
//-------------------------------------------------------------------------------------------------------

void halRfWriteRfSettings_CC1100() //433mhz		//2.4k
{
	do{	
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x0C);
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);
	halSpiWriteReg(CCxxx0_FREQ2, 0x10);
	halSpiWriteReg(CCxxx0_FREQ1, 0xB0);
	halSpiWriteReg(CCxxx0_FREQ0, 0x71);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0xf6);//0xc6//f5
	halSpiWriteReg(CCxxx0_MDMCFG3, 0x83);
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x02);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0x22);//0x22
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x15);//0x30
	halSpiWriteReg(CCxxx0_FREND1, 0x56);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM1, 0x00);
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x15);
	halSpiWriteReg(CCxxx0_BSCFG, 0x6C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0x03);
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xA9);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x2A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x0D);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x86);
	halSpiWriteReg(CCxxx0_TEST1, 0x3D);
	halSpiWriteReg(CCxxx0_TEST0, 0x09);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x24);
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   
	}while(halSpiReadReg(CCxxx0_MDMCFG1)!=0x22);	
		
}
/*
void halRfWriteRfSettings_CC1100() 			//100k
{
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x12);
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);
	halSpiWriteReg(CCxxx0_FREQ2, 0x10);
	halSpiWriteReg(CCxxx0_FREQ1, 0xB0);
	halSpiWriteReg(CCxxx0_FREQ0, 0x71);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0x5b);//0xc6//f5
	halSpiWriteReg(CCxxx0_MDMCFG3, 0xf8);
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x03);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0x22);//0x22
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x47);//0x30
	halSpiWriteReg(CCxxx0_FREND1, 0x56);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM1, 0x30);
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x15);
	halSpiWriteReg(CCxxx0_BSCFG, 0x6C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0x83);
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xEA);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x2A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x0D);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x8E);
	halSpiWriteReg(CCxxx0_TEST1, 0x31);
	halSpiWriteReg(CCxxx0_TEST0, 0x09);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x24);
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   

}
*/

//=========================================================================
void halRfWriteRfSettings_CC2500() 
{
	do{	
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x09);	
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);	
	halSpiWriteReg(CCxxx0_FREQ2, 0x5D);
	halSpiWriteReg(CCxxx0_FREQ1, 0x93);
	halSpiWriteReg(CCxxx0_FREQ0, 0xB1);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0x2D);
	halSpiWriteReg(CCxxx0_MDMCFG3, 0x3B); 
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x73);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0xA2);//22
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x01);
	halSpiWriteReg(CCxxx0_FREND1, 0xB6);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM1, 0x00);//0X00>NO CCA; 0X30>CCA
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x1D);
	halSpiWriteReg(CCxxx0_BSCFG, 0x1C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0xC7);
	halSpiWriteReg(CCxxx0_AGCCTRL1, 0x00);//cca=0x10
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0x91);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xEA);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x0A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x11);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x88);
	halSpiWriteReg(CCxxx0_TEST1, 0x31);
	halSpiWriteReg(CCxxx0_TEST0, 0x0B);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x29);//CCA=0x09:1=free
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   
	}while(halSpiReadReg(CCxxx0_MDMCFG1)!=0xA2);	
	
}
/*
void halRfWriteRfSettings_CC2500() //use fec 250K
{
	do{	
	halSpiWriteReg(CCxxx0_FSCTRL1, 0x07);	
	halSpiWriteReg(CCxxx0_FSCTRL0, 0x00);	
	halSpiWriteReg(CCxxx0_FREQ2, 0x5D);
	halSpiWriteReg(CCxxx0_FREQ1, 0x93);
	halSpiWriteReg(CCxxx0_FREQ0, 0xB1);
	halSpiWriteReg(CCxxx0_MDMCFG4, 0x2D);
	halSpiWriteReg(CCxxx0_MDMCFG3, 0x3B); 
	halSpiWriteReg(CCxxx0_MDMCFG2, 0x73);
	halSpiWriteReg(CCxxx0_MDMCFG1, 0xA2);//22
	halSpiWriteReg(CCxxx0_MDMCFG0, 0xF8);
	halSpiWriteReg(CCxxx0_CHANNR, 0x00);
	halSpiWriteReg(CCxxx0_DEVIATN, 0x00);
	halSpiWriteReg(CCxxx0_FREND1, 0xB6);
	halSpiWriteReg(CCxxx0_FREND0, 0x10);
	halSpiWriteReg(CCxxx0_MCSM1, 0x00);
	halSpiWriteReg(CCxxx0_MCSM0, 0x18);
	halSpiWriteReg(CCxxx0_FOCCFG, 0x1D);
	halSpiWriteReg(CCxxx0_BSCFG, 0x1C);
	halSpiWriteReg(CCxxx0_AGCCTRL2, 0xC7);
	halSpiWriteReg(CCxxx0_AGCCTRL0, 0xB2);
	halSpiWriteReg(CCxxx0_FSCAL3, 0xEA);
	halSpiWriteReg(CCxxx0_FSCAL2, 0x0A);
	halSpiWriteReg(CCxxx0_FSCAL0, 0x11);
	halSpiWriteReg(CCxxx0_FSTEST, 0x59);
	halSpiWriteReg(CCxxx0_TEST2, 0x88);
	halSpiWriteReg(CCxxx0_TEST1, 0x31);
	halSpiWriteReg(CCxxx0_TEST0, 0x0B);
	halSpiWriteReg(CCxxx0_IOCFG2, 0x29);
	halSpiWriteReg(CCxxx0_IOCFG0, 0x06);
	halSpiWriteReg(CCxxx0_PKTCTRL1, 0x04);
	halSpiWriteReg(CCxxx0_PKTCTRL0, 0x05);
	halSpiWriteReg(CCxxx0_ADDR, 0x00);
	halSpiWriteReg(CCxxx0_PKTLEN, 0xFF);
   
	}while(halSpiReadReg(CCxxx0_MDMCFG1)!=0xA2);	
	
}
*/
//-------------------------------------------------------------
//	通过写NOP获得RF的状态
//-------------------------------------------------------------
BYTE spiGetRxTxStatus(void) 
{
	unsigned char RxTxstatus;
	P_CSn = 0;
	while (P_SO);
	RxTxstatus=SPI_write(CCxxx0_SNOP);
	P_SCLK=0;
	P_SI=0;
	P_CSn=1;
    return(RxTxstatus);
} 

//----------------------------------------------------------------
//	复位RF
//----------------------------------------------------------------
void POWER_UP_RESET_CCxxx0() {
	unsigned char i; 
	halSpiStrobe(CCxxx0_SIDLE);
	P_CSn=1;
	for(i=0;i<5;i++);  
	P_CSn=0;
	for(i=0;i<5;i++);  
	P_CSn=1;
	for(i=0;i<200;i++);  
	P_CSn=0;
	while(P_SO);
	halSpiStrobe(CCxxx0_SRES);
	P_CSn=1;
	P_SCLK=0;
	P_SI=0;
}




⌨️ 快捷键说明

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