CC1101 射频的UHF收发器解析
- 格式:doc
- 大小:54.00 KB
- 文档页数:8
RT-001-CC11011.简介RT-001-CC1101是集FSK/ASK/OOK/MSK调制方式于一体的高功率、性能收发模块。
它提供扩展硬件支持实现信息包处理、数据缓冲、群发射、空闲信道评估、链接质量指示和无线唤醒,可以采用曼彻斯特编码进行调制解调它的数据流。
性能优越并且易于应用到你的产品设计中,它可以应用在 RT-001-CC1101315/433/868/915MHz ISM/SRD频段的系统中,它可以应用在比如消费类电子产品、自动抄表系统、双向防盗器等等。
该型号最大的有点在于模块内部采用大功率PA及LNA架构,且采用电子开关及控制线路根据客户的需求达到远距离传输数据。
发射功率可通过外部电源来设置,最大发射功率可以达到1W。
超远距离方案应用的最佳选择。
1.1 基本特性●省电模式下,低电流损耗●方便投入应用●高效的串行编程接口●工作温度范围:﹣40℃~+85℃●工作电压:1.8~ 3.6 Volts.●有效频率:300-348Mhz, 400-464Mhz,800-928Mhz●灵敏度高、输出功率高且可编程产品数据手册.1.RT-001-CC1101 1.2 模块方框图图1.1 模块方框图1.3 评估套件本公司针对RT-1G0-PS------模块开发的多功能开发套件,体积小,功能完善,能够完成RT-1G0-PS性能评估及协议学习,缩短产品开发时间,是研发的极佳选择。
图1.2 开发套件总览1.4 主要功能介绍■ 配合测试仪器(高频信号源、频谱仪器)等,测试主要性能参数;■ 配合模块,室外测试,模拟空旷地,停车场,建筑群,等环境下进行距离测试;■ 通过读取RF Module和MCU之间的通讯数据。
了解数据传输的协议;产品数据手册RT-001-CC11011.5 基本配置■ JY-A1G-DK测试架(2个);■ 标准SMA-315MHz、433MHz天线(任一频率1对);■ 标准AA电池(4个);■ 客户待评估模块(TX、RX各1个);■ SMA双头高频线1根;2.系统级功能2.1 收发器ICCC1100是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。
基于CC1101的无线收发系统设计刘雪亭【摘要】无线射频收发系统是近年来通信领域中发展最快、应用最广的模块电路。
该系统由发射模块和接收模块组成,以单片机C8051F310作为控制核心部件,基于无线收发芯片CC1101构成的通信传输模块系统,实现信息的无线收发。
本文对其工作原理和工作方式进行了分析,给出了其软硬件设计过程。
%Wireless RF transceiver system is the fastest and most widely used in the communication field in recent years. The system is composed of a transmitting module and a receiving module. The system is composed of a single chip microcomputer C8051F310 as the core component, and a communication transmission module system based on the wireless transceiver CC1101 is realized. In this paper, the working principle and working mode are analyzed, and the software and hardware design process is given.【期刊名称】《电子设计工程》【年(卷),期】2016(024)018【总页数】4页(P123-125,128)【关键词】CC1101;C8051F310;发射模块;接收模块【作者】刘雪亭【作者单位】四川信息职业技术学院四川广元 628040【正文语种】中文【中图分类】TN929-5无线射频收发系统是近年来通信领域中发展最快、应用最广的技术。
基于cc1101无线模块的无线传感网络的设计摘要无线传感网络是一种由许多节点组成的自组织网络,它可以实现远程数据采集和监测。
本论文主要介绍了基于cc1101无线模块的无线传感网络的设计。
首先,介绍了cc1101无线模块的特点以及在无线传感网络中的应用。
然后,详细介绍了无线传感节点的硬件设计和软件设计。
最后,对整个系统进行了测试和验证,并总结了实验结果。
关键词:无线传感网络;cc1101无线模块;无线传感节点;硬件设计;软件设计;测试和验证。
AbstractWireless sensor network is a self-organized network composed of many nodes, which can realize remote data collection and monitoring. This paper mainly introduces the design of wireless sensor network based on cc1101 wireless module. Firstly, the characteristics of cc1101 wireless module and its application in wireless sensor network are introduced. Then, the hardware design and software design of wireless sensor nodes are described in detail. Finally, the whole system is tested and verified, and the experimental results are summarized.Keywords: wireless sensor network; cc1101 wireless module; wireless sensor node; hardware design; software design; test and verification.引言随着无线通信技术的不断发展,无线传感网络在环境监测、智能控制、安防系统等领域得到了广泛应用。
CC1101射频的UHF收发器解析CC1101在CC1100主要改善部分改善杂散响应;更紧密的相位噪声更好的改善邻道功率(ACP )的性能;饱和电平输入更高;更高效能的功率输出连续频率波段的扩展,CC1100: 400-464 MHz 和800-928 MHzCC1101: 387-464 MHz 和779-928 MHz产品简介CC1100/CC1101是Chipcon(已被TI收购)推出的一款低成本单片射频的UHF收发器。
该芯片电路主要设定为在315、433、868和915MHz 的ISM(工业,科学和医学),集成了一个软件可编程的调制解调器。
该调制解调器支持2-FSK、GFSK和MSK调制格式,数据传输率最高可达500kbps。
通过开启集成在调制解调器上的前向误差校正选项,能使性能得到提升。
CC1100/CC1101硬件支持数据包处理、数据缓冲、突发数据传输、清晰信道评估、连接质量指示和电磁波激发MCU可以通过SPI 接口与CC1100进行命令和数据交换。
CC1100/CC1101主要应用于低功耗无线应用设计。
CC1101在CC1100基础上主要进行以下改进改善杂散响应,饱和电平输入更高;连续频率波段的扩展:CC1100: 400-464 MHz和800-928 MHz;CC1101: 387-464 MHz和779-928 MHz;CC1101和CC1100二者在软件编程上完全兼容;更高效能的功率输出,能量越集中,信号传输就越远;更紧密的相位噪声更好的改善邻道功率(ACP)的性能,改善了近距离信号堵塞现象。
虽然CC1100芯片还存在,但鉴于CC1101的改进特性,我公司研制的模块已经从09年开始全部采用CC1101芯片。
为便于用户开发,我们提供配套评估套件,为产品开发保驾护航,使无线应用开发大大加速,并避免不必要的误区。
基本特点工作电压:1.8-3.6V工作频率:(模块:387-464MHZ)瞬间最大工作电流: <30mA;最大发射功率: 10mW (+10dBm);315/433/868/915MHZ的ISM频段;支持2-FSK、GFSK和MSK调制方式;接收灵敏度在1200波特率下-110dBm;最低工作速率1.2kbps,最高500kbps;单独的64字节RX和TX数据FIFO缓冲区;内置硬件CRC 检错可确保数据可靠传输;支持RSSI强弱信号检测和载波侦听功能;功耗低(RX中,15.6mA,2.4kbps,433MHz;快速频率变动合成器带来的合适的频率跳跃系统;通信地址(256个)工作频率都可以通过SPI编程设置;可编程控制的输出功率,对所有的支持频率可达+10dBm;WOR功能可设置待机、接收状态定时切换时间比例以降低功耗;典型主要应用车辆监控、遥控、遥测、水文气象监控无线标签、身份识别、非接触RF智能卡小型无线网络、无线抄表、门禁系统、小区传呼工业数据采集系统、无线232数据通信、无线485/422数据通信无线数据终端、安全防火系统、无线遥控系统、生参考例程更多功率参数设置可详细参考DATACC1101英文文档中第48-49页的参数表//INT8U PaTabel[8] ={0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04}; //-30dBm 功率最小//INT8U PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};//0dBmINT8U PaTabel[8] ={0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0}; //10dBm 功率最大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;}SPI写寄存器操作void halSpiWriteReg(INT8U addr, INT8U value) { CSN = 0;while (MISO);SpiTxRxByte(addr); //写地址SpiTxRxByte(value); //写入配置CSN = 1;}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;}CC1101初始化设置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 setting0xB6, // 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.0x04, // PKTCTRL1 Packet automation control.0x05, // PKTCTRL0 Packet automation control.0x00, // ADDR Device address.0x0c // PKTLEN Packet length.};数据接收流程操作INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length) {INT8U status[2];INT8U packetLength;INT8U i=(*length)*4; //具体多少要根据datarate和length来决定halSpiStrobe(CCxxx0_SRX); //进入接收状态delay(2);while (GDO0){delay(2);--i;if(i<1)return 0;}if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0{packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度if (packetLength <= *length)//如果所要的有效数据长度小于等于接收到的数据包的长度{halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength);//读出所有接收到的数据*length =packetLength;//把接收数据长度的修改为当前数据的长度// Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);//读出CRC校验位halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return (status[1] & CRC_OK); //如果校验成功返回接收成功}else{*length = packetLength;halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return 0;}}elsereturn 0;}数据发送流程操作void halRfSendPacket(INT8U *txBuffer, INT8U size){halSpiWriteReg(CCxxx0_TXFIFO, size);halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);//写入要发送的数据halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据// Wait for GDO0 to be set -> sync transmittedwhile (!GDO0);// Wait for GDO0 to be cleared -> end of packetwhile (GDO0);halSpiStrobe(CCxxx0_SFTX);}无线应用注意事项(1)无线模块的VCC电压范围为1.8V-3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。
cc1101 收发函数
CC1101是一款低成本、低功耗、高性能的单芯片无线收发器,
常用于无线通信应用中。
它能够在多个频段(300-348 MHz、387-
464 MHz和779-928 MHz)进行操作,支持多种调制方式和数据速率。
CC1101的收发函数主要包括以下几个方面:
1. 初始化,在使用CC1101进行通信之前,需要对其进行初始
化设置,包括设置工作频率、数据速率、调制方式、发射功率等参数。
这些参数的设置会影响CC1101的收发性能和通信距离。
2. 发送数据,通过配置CC1101的发送寄存器和发送缓冲区,
可以将待发送的数据加载到发送缓冲区中,并启动发送操作。
CC1101会根据之前设置的参数进行调制和发射,将数据发送出去。
3. 接收数据,CC1101在接收模式下,会不断监听无线信道,
当检测到符合预设条件的信号时,会将接收到的数据存储到接收缓
冲区中,并触发接收完成中断。
应用程序可以通过读取接收缓冲区
中的数据来获取接收到的信息。
4. 中断处理,CC1101支持多种中断类型,包括发送完成中断、
接收完成中断、接收超时中断等。
应用程序需要编写相应的中断处理函数,对中断进行处理,以确保数据的及时发送和接收。
总的来说,CC1101的收发函数涉及到对寄存器的配置、数据的加载和处理、中断的处理等多个方面,需要根据具体的应用场景和通信需求进行合理的设置和调用。
同时,还需要考虑到无线信道的特性、通信协议的要求等因素,以确保通信的稳定和可靠。
CC1101学习笔记2010年10月一、CC1100主要特性与优势:* 该款低功耗射频收发器全面支持介于470-510MHz之间的中国频带。
* 可为测量应用的所有引脚提供高度可靠的2kV ESD保护。
* 其引脚、寄存器和代码均与CC1100及CC1101兼容,升级简便易行。
* 低功耗:RX电流为16mA,休眠状态下电流为0.3uA。
* 自动分组引擎可实现丰富的数字特性:可使用支持SPI/UART的小型MCU。
CC1101对于CC1100的改进:1:High sensitivity .CC1101:–111 dBm at 1.2 kBaud,868 MHz, 1% packet error rate,CC1100是-110dBm. 2:Low current consumption .CC1101:14.7 mA in RX,1.2 kBaud, 868 1100是15.4mA.3:Programmable Preamble Quality Indicator (PQI) for improved protection against false sync word detection in random 1101 可编程的前导质量指示和改良的在任意噪音环境下,同步字节的纠错侦测。
4:CC1101:Frequency bands: 300-348 MHz, 387-464 MHz and 779-928 MHz。
CC1100:Frequency bands: 300-348 MHz, 400-464 MHz and 800-928 MHz。
即CC1101频率范围比CC1100宽。
5:Fast startup time: 240us from sleep to RX or TX mode (measured on EM reference design [5] and [6]).快速的启动时间,从睡眠到RX或TX只要240US。
CC1101无线模块使用说明书目录1.功能介绍 (2)2.引脚说明 (3)3.通信协议 (4)4.指令集 (5)4.1.芯片状态字节 (5)4.2配置寄存器 (6)5.操作函数 (8)5.1. 操作步骤 (8)5.2.函数 (9)1)读写一个字节 (9)2)写命令 (9)4)读取配置 (10)5)写入一串数据 (10)6)读取一串数据 (10)7)发送一组数据 (11)8)接收一组数据 (11)9)初始化配置 (12)10)设置接收模式 (13)11)设置发送模式 (13)1.功能介绍1.1.射.(RF.性能:1)采用 TI 最新的 CC110L 无线射频芯片, 软件完全兼容 CC1100, CC1101, 相比于前两者, CC110L 芯片更专注核心部分, 因此更稳定2)接收灵敏度低至−116 dBm(在 1 kbps 数据速率下,典型状态下-110dBm)3)可编程数据速率: 范围 0.6 至 600 kbps(推荐 2.4kbps--500kbps)4)工作于 433 MHz 免费 ISM 频段(387-464MHz, 推荐中心频点 430-436MHz)5)调制方式: 支持 2-FSK、4-FSK、GFSK 和 OOK(不支持 MSK 调制方式)1.2.数字特性:1)64 字节接收 (RX) 和发送 (TX) FIFO2)模块可软件设地址, 只有收到本机地址时才会输出数据(提供中断指示), 可直接接各种单片机使用, 软件编程非常方便1.3.低功耗特性:1)睡眠模式电流消耗约 2uA2)最大发射功率: +10dBm, 最大发射电流 30mA, 持续接收电流约 16mA3)快速启动时间: 240 uS(从睡眠模式到接收 [RX] 模式或发送[TX]模式)4)快速切换: 模块在接收 [RX]和发射[TX]模式切换时间 < 1ms1.4.接口及传输特性:1)采用标准 2.54mm 间距双排针接口方式。
低成本、低功耗1GHz以下无线收发器(增强型CC1100)应用l基于315/433/868/915 MHz ISM/SRD的极低功耗的无线应用。
l无线报警和安全系统l工业监视和控制产品描述CC1101是低成本的1GHz以下的无线收发器,为极低功耗的无线应用而设计。
电路主要设计为ISM(工业、科学和医疗)和SRD(短距离设备),频段在315、433、868和915,但是可以很容易的编程,使之工作在其他频率,在300-348MHz,387-464 MHz 和779-928 MHz 频段。
CC1101是CC1100 RF收发器改良以及代码一致的版本。
CC1101的主要改进如下:l改良的伪应答l更好的关闭相位噪声,因而改善相邻信道功耗(ACP)的性能l更高的输入饱和级别l改善输出功率斜面l扩大工作频段:CC1100: 400-464 MHz and 800-928MHzCC1101: 387-464 MHz and 779-928MHz10 4线串口配置和数据接口CC1101通过4线SPI兼容接口(SI,SO,SCLK和CSn)进行配置,CC1101作为从设备。
这个接口同事用作读写缓冲器数据。
SPI接口上所有的数据传送都是先传送MSB。
SPI接口上的所有传送都是以一个头字节(header byte)开始,包含一个读写位(R/W),一个突发(burst access)访问位(B)和6位地址位(A5~A0)。
在SPI总线上传输数据时,CSn脚必须保持低电平。
如果在发送头字节或者读写寄存器时CSn拉高,传送将被取消。
SPI接口上地址和数据的发送时序图见图12,并参考表19。
当CSn被拉低,MCU在发送头字节之前,必须等到CC1101的SO脚变为低电平。
这说明晶振开始工作。
除非芯片在SLEEP或者XOFF状态,SO脚在CSn引脚被拉低后马上变为低电平。
图12:配置寄存器读写操作表19:SPI接口时序要求10.1 芯片状态字节当在SPI接口上发送头字节,数据字节或者命令选通(command strobe)时,CC1101在SO引脚上发送芯片状态字节。
cc1101低功耗设计方案CC1101收发驱动程序
本文主要是关于cc1101的相关介绍,并着重对cc1101低功耗以及驱动收发程序进行了详尽的阐述。
cc1101CC1101是一款低于1GHz设计旨在用于极低功耗RF应用。
其主要针对工业、科研和医疗(ISM)以及短距离无线通信设备(SRD)。
CC1101可提供对数据包处理、数据缓冲、突发传输、接收信号强度指示(RSSI)、空闲信道评估(CCA)、链路质量指示以及无线唤醒(WOR)的广泛硬件支持。
CC1101在代码、封装和外引脚方面均与CC1100兼容,可用于全球最为常用的开放式低于1GHz频率的RF设计。
●超低功耗无线收发器
●家庭和楼宇自动化
●高级抄表架构(AMI)
●无线报警安全系统
◆387.0MHz~464.0MHz工作频段。
(433MHz,0.6kbps,1%误码率时为-116dBm)。
(接收模式,433MHz,1.2kbps时仅16.0mA)。
◆最高可设置为+10dBm的发射功率。
◆支持0.6kbps~500kbps的数据传输速率。
◆支持多种调制模式(OOK、ASK、GFSK、2-FSK、4-FSK和MSK)。
◆提供对同步字检测、地址校验、灵活的数据包长度以及自动CRC处理的支持。
◆支持RSSI(接收信号强度指示)和LQI(链路质量指示)。
◆通过4线SPI接口与MCU连接,同时提供2个可设定功能的通用数字输出引脚。
◆独立的64字节RXFIFO和TX FIFO。
◆工作电压范围:1.9V~3.6V,待机模式下电流仅为200nA。
◆工作温度范围:-40℃~+85℃。
CC1101在CC1100主要改善部分改善杂散响应;更紧密的相位噪声更好的改善邻道功率(ACP )的性能;饱和电平输入更高;更高效能的功率输出连续频率波段的扩展,CC1100: 400-464 MHz 和800-928 MHzCC1101: 387-464 MHz 和779-928 MHz产品简介CC1100/CC1101是Chipcon(已被TI收购)推出的一款低成本单片射频的UHF收发器。
该芯片电路主要设定为在315、433、868和915MHz 的ISM(工业,科学和医学),集成了一个软件可编程的调制解调器。
该调制解调器支持2-FSK、GFSK和MSK调制格式,数据传输率最高可达500kbps。
通过开启集成在调制解调器上的前向误差校正选项,能使性能得到提升。
CC1100/CC1101硬件支持数据包处理、数据缓冲、突发数据传输、清晰信道评估、连接质量指示和电磁波激发MCU可以通过SPI 接口与CC1100进行命令和数据交换。
CC1100/CC1101主要应用于低功耗无线应用设计。
CC1101在CC1100基础上主要进行以下改进改善杂散响应,饱和电平输入更高;连续频率波段的扩展:CC1100: 400-464 MHz和800-928 MHz;CC1101: 387-464 MHz和779-928 MHz;CC1101和CC1100二者在软件编程上完全兼容;更高效能的功率输出,能量越集中,信号传输就越远;更紧密的相位噪声更好的改善邻道功率(ACP)的性能,改善了近距离信号堵塞现象。
虽然CC1100芯片还存在,但鉴于CC1101的改进特性,我公司研制的模块已经从09年开始全部采用CC1101芯片。
为便于用户开发,我们提供配套评估套件,为产品开发保驾护航,使无线应用开发大大加速,并避免不必要的误区。
基本特点工作电压:1.8-3.6V工作频率:(模块:387-464MHZ)瞬间最大工作电流: <30mA;最大发射功率: 10mW (+10dBm);315/433/868/915MHZ的ISM频段;支持2-FSK、GFSK和MSK调制方式;接收灵敏度在1200波特率下-110dBm;最低工作速率1.2kbps,最高500kbps;单独的64字节RX和TX数据FIFO缓冲区;内置硬件CRC 检错可确保数据可靠传输;支持RSSI强弱信号检测和载波侦听功能;功耗低(RX中,15.6mA,2.4kbps,433MHz;快速频率变动合成器带来的合适的频率跳跃系统;通信地址(256个)工作频率都可以通过SPI编程设置;可编程控制的输出功率,对所有的支持频率可达+10dBm;WOR功能可设置待机、接收状态定时切换时间比例以降低功耗;典型主要应用车辆监控、遥控、遥测、水文气象监控无线标签、身份识别、非接触RF智能卡小型无线网络、无线抄表、门禁系统、小区传呼工业数据采集系统、无线232数据通信、无线485/422数据通信无线数据终端、安全防火系统、无线遥控系统、生参考例程更多功率参数设置可详细参考DATACC1101英文文档中第48-49页的参数表//INT8U PaTabel[8] ={0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04 ,0x04}; //-30dBm 功率最小//INT8U PaTabel[8] = {0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60 ,0x60};//0dBmINT8U PaTabel[8] ={0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0 ,0xC0}; //10dBm 功率最大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;}SPI写寄存器操作void halSpiWriteReg(INT8U addr, INT8U value) {CSN = 0;while (MISO);SpiTxRxByte(addr); //写地址SpiTxRxByte(value); //写入配置CSN = 1;}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;}CC1101初始化设置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 setting0xB6, // 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.0x04, // PKTCTRL1 Packet automation control.0x05, // PKTCTRL0 Packet automation control.0x00, // ADDR Device address.0x0c // PKTLEN Packet length.};数据接收流程操作INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length){INT8U status[2];INT8U packetLength;INT8U i=(*length)*4; //具体多少要根据datarate和length来决定halSpiStrobe(CCxxx0_SRX); //进入接收状态delay(2);while (GDO0){delay(2);--i;if(i<1)return 0;}if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO))//如果接的字节数不为0{packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度if (packetLength <= *length)//如果所要的有效数据长度小于等于接收到的数据包的长度{halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength);//读出所有接收到的数据*length =packetLength;//把接收数据长度的修改为当前数据的长度// Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);//读出CRC校验位halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return (status[1] & CRC_OK); //如果校验成功返回接收成功}else{*length = packetLength;halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区return 0;}}elsereturn 0;}数据发送流程操作void halRfSendPacket(INT8U *txBuffer, INT8U size){halSpiWriteReg(CCxxx0_TXFIFO, size);halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size);//写入要发送的数据halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据// Wait for GDO0 to be set -> sync transmittedwhile (!GDO0);// Wait for GDO0 to be cleared -> end of packetwhile (GDO0);halSpiStrobe(CCxxx0_SFTX);}无线应用注意事项(1)无线模块的VCC电压范围为1.8V-3.6V之间,不能在这个区间之外,超过3.6V将会烧毁模块。