📄 ccxxx0lib.c
字号:
{
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 + -