cc1101初始化c语言程序,STC89C52单片机驱动CC1101无线模块的接收C语言程序

STC89C52单片机驱动CC1101无线模块的接收C语言程序

2015-07-03 11:16:30   来源:51hei

const RF_SETTINGS rfSettings =

{

0x00,

0x08, // FSCTRL1 Frequency synthesizer control.

0x00, // FSCTRL0 Frequency synthesizer control.

0x10, // FREQ2 Frequency control word, high byte.

0xA7, // FREQ1 Frequency control word, middle byte.

0x62, // FREQ0 Frequency control word, low byte.

0x5B, // MDMCFG4 Modem configuration.

0xF8, // MDMCFG3 Modem configuration.

0x03, // MDMCFG2 Modem configuration.

0x22, // MDMCFG1 Modem configuration.

0xF8, // MDMCFG0 Modem configuration.

0x00, // CHANNR Channel number.

0x47, // DEVIATN Modem deviation setting (when FSK modulation is enabled).

0xB6, // FREND1 Front end RX configuration.

0x10, // FREND0 Front end RX configuration.

0x18, // MCSM0 Main Radio Control State Machine configuration.

0x1D, // FOCCFG Frequency Offset Compensation Configuration.

0x1C, // BSCFG Bit synchronization Configuration.

0xC7, // AGCCTRL2 AGC control.

0x00, // AGCCTRL1 AGC control.

0xB2, // AGCCTRL0 AGC control.

0xEA, // FSCAL3 Frequency synthesizer calibration.

0x2A, // FSCAL2 Frequency synthesizer calibration.

0x00, // FSCAL1 Frequency synthesizer calibration.

0x11, // FSCAL0 Frequency synthesizer calibration.

0x59, // FSTEST Frequency synthesizer calibration.

0x81, // TEST2 Various test settings.

0x35, // TEST1 Various test settings.

0x09, // TEST0 Various test settings.

0x0B, // IOCFG2 GDO2 output pin configuration.

0x06, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

0x04, // PKTCTRL1 Packet automation control.

0x05, // PKTCTRL0 Packet automation control.

0x00, // ADDR Device address.

0x0c // PKTLEN Packet length.

};

//***************************

//函数名:delay(unsigned int s)

//输入:时间

//输出:无

//功能描述:普通廷时,内部用

//****************************

static void delay(unsigned int s)

{

unsigned int i;

for(i=0; i0;i--);

}

void halWait(INT16U timeout) {

do {

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

} while (--timeout);

}

void SpiInit(void)

{

CSN=0;

SCK=0;

CSN=1;

}

/*****************************

//函数名:CpuInit()

//输入:无

//输出:无

//功能描述:SPI初始化程序

/*************************************/

void CpuInit(void)

{

SpiInit();

delay(5000);

}

//*************************************

//函数名:SpisendByte(INT8U dat)

//输入:发送的数据

//输出:无

//功能描述:SPI发送一个字节

//*************************************

INT8U SpiTxRxByte(INT8U dat)

{

INT8U i,temp;

temp = 0;

SCK = 0;

for(i=0; i<8; i++)

{

if(dat & 0x80)

{

MOSI = 1;

}

else MOSI = 0;

dat <<= 1;

SCK = 1;

_nop_();

_nop_();

temp <<= 1;

if(MISO)temp++;

SCK = 0;

_nop_();

_nop_();

}

return temp;

}

//*************************************

//函数名:void RESET_CC1100(void)

//输入:无

//输出:无

//功能描述:复位CC1100

//*************************************

void RESET_CC1100(void)

{

CSN = 0;

while (MISO);

SpiTxRxByte(CCxxx0_SRES); //写入复位命令

while (MISO);

CSN = 1;

}

//************************************

//函数名:void POWER_UP_RESET_CC1100(void)

//输入:无

//输出:无

//功能描述:上电复位CC1100

//**********************************

void POWER_UP_RESET_CC1100(void)

{

CSN = 1;

halWait(1);

CSN = 0;

halWait(1);

CSN = 1;

halWait(41);

RESET_CC1100(); //复位CC1100

}

//*************************************

//函数名:void halSpiWriteReg(INT8U addr, INT8U value)

//输入:地址和配置字

//输出:无

//功能描述:SPI写寄存器

//************************************

void halSpiWriteReg(INT8U addr, INT8U value)

{

CSN = 0;

while (MISO);

SpiTxRxByte(addr);//写地址

SpiTxRxByte(value);//写入配置

CSN = 1;

}

//***********************************

//函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)

//输入:地址,写入缓冲区,写入个数

//输出:无

//功能描述:SPI连续写配置寄存器

//**********************************

void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)

{

INT8U i, temp;

temp = addr | WRITE_BURST;

CSN = 0;

while (MISO);

SpiTxRxByte(temp);

for (i = 0; i < count; i++)

{

SpiTxRxByte(buffer[i]);

}

CSN = 1;

}

//*******************************

//函数名:void halSpiStrobe(INT8U strobe)

//输入:命令

//输出:无

//功能描述:SPI写命令

//******************************

void halSpiStrobe(INT8U strobe)

{

CSN = 0;

while (MISO);

SpiTxRxByte(strobe);//写入命令

CSN = 1;

}

//***********************************

//函数名:INT8U halSpiReadReg(INT8U addr)

//输入:地址

//输出:该寄存器的配置字

//功能描述:SPI读寄存器

//**********************************

INT8U halSpiReadReg(INT8U addr)

{

INT8U temp, value;

temp = addr|READ_SINGLE;//读寄存器命令

CSN = 0;

while (MISO);

SpiTxRxByte(temp);

value = SpiTxRxByte(0);

CSN = 1;

return value;

}

//**********************************

//函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)

//输入:地址,读出数据后暂存的缓冲区,读出配置个数

//输出:无

//功能描述:SPI连续写配置寄存器

//*********************************

c2c9ed493cd281aa86d8a6f5178c4c01.gif [1] [2] [3] 610626052e95c7fbe3d254abc769d9ad.gif

404-电子工程世界

b094b28065371bab7e73d36d606aa669.png

97c883c75098afdd39f665c518c59eec.png

258b0bd82dd9ca476c7c8afdd48d607a.png

北京市海淀区知春路23号集成电路设计园量子银座1305

电话:(010)82350740

邮编:100191

电子工程世界版权所有

京ICP证060456号

Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值