单片无线收发芯片CC1100的原理与开发应用
基于CC1100的无线传输系统设计

第12卷第24期2012年8月1671—1815(2012)24-6040-06科学技术与工程Science Technology and EngineeringVol.12No.24Aug.2012 2012Sci.Tech.Engrg.基于CC1100的无线传输系统设计徐兴1徐胜2王卫星1岳学军1*(华南农业大学工程学院1,广州510642;广东工业大学物理与光电工程学院2,广州510642)摘要无线射频(RF )是21世纪最有发展前途的信息技术之一,而CC1100正是其中一种单片UHF 射频芯片。
其低功耗、灵敏度高、链接性能好、工作稳定、外围元件简单的特点,得到了广泛地应用。
介绍了一种以STC89C52单片机为控制核心,基于无线收发芯片CC1101的通信系统。
通过对其的DATASHEET ,工作原理以及工作方式进行了分析,设计了该系统的硬件电路并编写了CC1101芯片的通信软件。
实现了点对点的无线数据通信,并增加了慢启动-拥塞避免功能和路由转发功能。
使该无线数据传输系统的应用面增广,更加适合在不同突发状况下的无线数据传输。
关键词射频CC1100无线通信路由转发慢启动-拥塞避免中图法分类号TN929.5;文献标志码A2012年5月18日收到广东高校优秀青年创新人才培育项目(LYM10035)、高等学校博士学科点专项科研基金联合资助项目(200805640010)、公益性行业(农业)科研专项经费项目(20090323-06)、广东省省部产学研结合项目(2011B090400359)、广东省科技计划项目(2010B020314007)资助第一作者简介:徐兴(1978—),江西宁都人,讲师,博士,研究方向:无线网络技术。
*通信作者简介:岳学军(1971—),博士,研究方向:现代信息网络技术,xuejunyue@ 。
利用单片和CC1100构成的无线数据传输系统能够,可以实现低功耗近距离的无线数据传输,具有成本低,通用性强,可拓展性强,操作灵活简单的特点。
基于CC1100的无线射频通信模块的设计

摘要本文介绍了基于CC1100的无线射频通信模块的设计。
论文首先介绍了无线通信技术的发展以及无线传感器网络节点并对MSP430单片机基础知识、CC1100基础知识以及开发平台做了简单介绍。
然后对基于CC1100芯片的射频通信模块的设计与实现分两大部分进行了详细说明:即电路硬件设计和模块通信软件设计。
其中硬件设计包括四大部分:MSP430最小系统、电源系统、人机接口与传感器部分、CC1100电路设计;软件设计包括四大部分:程序整体结构、CC1100底层驱动程序介绍、发送端程序设计、接收端程序设计。
最后对测试结果进行了简单分析。
基于MSP430与CC1100的无线射频通信主要有两大核心元件构成,MSP430单片机和CC1100无线收发芯片,MSP430为TI推出的16位高性能,低功耗单片机,在各个领域得到了广泛的运用,节点主要由主芯片,串口电平转换电路,射频电路,电源系统构成,支持DI(数字量输入),AI(模拟量输入),UART(智能传感器),以及单总线传感器的接入,在实际的工程运用中主要使用这几种接口,可以接入烟雾传感器,湿度温度传感器,红外传感器,门磁等。
【关键词】无线传感器 MSP430单片机 CC1100目录第一章绪论 (1)1.1 引言 (1)1.2 课题研究的背景和意义 (1)1.3 无线通信概述 (2)第二章系统设计及平台简介 (3)2.1 基于MSP430+CC1100无线传感器网络节点原理简介 (3)2.2 MSP430单片机原理与结构 (4)2.2.1 MSP430系列单片机特点 (4)2.2.2 MSP430发展和应用 (7)2.2.3 MSP430单片机结构 (8)2.3 CC1100原理及结构 (9)2.4 开发平台简介 (11)2.4.1 IAR430 (11)2.4.2 Altium Designer 6 (12)第三章硬件平台的设计 (15)3.1 MSP430最小系统 (15)3.2 电源系统 (17)3.3 人机接口与传感器部分 (18)3.4 CC1100电路设计 (19)第四章单片机软件设计 (21)4.1 程序整体结构 (21)4.2 CC1100底层驱动程序介绍 (22)4.2.1 写指令 (22)4.2.2 写寄存器 (23)4.2.3 读寄存器 (24)4.2.4 读状态 (24)4.2.5 发送数据包 (25)4.2.6 接收数据包 (26)4.3 发送端程序设计 (27)4.4 接收端程序设计 (28)第五章测试结果及分析 (29)5.1 测试环境介绍 (29)5.2 测试过程介绍 (29)5.3 测试结果及分析 (29)第六章结束语 (30)致谢 (31)参考文献 (32)第一章绪论第一章绪论1.1 引言近些年信息通信领域中,发展最快、应用最广的就是无线通信技术。
基于无线传输芯片CC1100信号源的设计

⑥ 2 0 1 3 S c i . T e c h . E n g r g .
通 信 技 术
基 于无线传输芯 片 C C l l 0 0信号源的设计
张献 生 , 谭秋 林 ' 丁利琼 , 康 昊 ,
( 中北大学 电子测试技术 国家重点实验室 和仪器科学 与动态测试教育部重点实验室 , 太原 0 3 0 0 5 1 )
C C 1 1 0 0是美 国 T I 公 司 生 产 的一 种 低 成 本 、 超
高频真正单片的 U H F收发器 , 为低功耗无线应用而
科
学
技
术
与
工
程
1 3卷
重 叭
图2 C C 1 1 0 0典型应用 电路图
设计。芯片 电路主要设定在 3 1 5 M H z , 4 3 3 M H z , 8 6 8
险人 员在遇 险时等紧急情况下 的求救信号源 。
关键词
P I C 1 6 F 6 9 0
C C 1 1 0 0
微 带天线
中图法分类号
T N 8 3 8 ;
文献标志码
A
小 信 号源是 一 种 常 用 的信 号源 , 它广 泛 应 用 与 电子技 术 实 验 室 测 量 中 。一 些 应 用 于 野 外 的 设 备 常 常需要 进 行 前 期 测 量 , 比如 物 体 的重 力 测 量 , 但 是在 的 野外 环 境 下 , 目标 物 体 常 常 因 为 地 形 复 杂 ,
外部 “ 事件” 触发单片机工作 , 限于信号源体积和重
量, 器件 体 积 和 器 件 功 率 较 小 , 这 样 可 以通 过 匹 配 电路 的设 计 使 天 线 能 在 功 率 较 小 的 情 况 下 传 输 比
cc1100使用技巧

cc1100使用技巧CC1100是一款常用的无线通信模块,下面将介绍一些使用技巧。
首先,正确配置寄存器是使用CC1100的第一步。
寄存器的配置决定了通信的参数和工作模式。
使用CC1100时,需要通过SPI总线与其通信,向寄存器写入配置值。
可以使用厂商提供的配置文件,也可以根据具体的需求自行配置。
其次,频率设置是使用CC1100的重要一步。
通过设置频率可以实现无线通信的频率选择。
CC1100可以支持多个频段,但是频率选择要注意与其他设备的兼容性。
一般情况下,可以根据不同的频段选择合适的频率,通过设置寄存器来配置。
另外,功率控制也是使用CC1100时需要注意的一点。
功率设置影响通信的距离和稳定性。
CC1100可以根据不同的需求选择不同的功率级别,通过设置寄存器来配置。
需要注意的是,功率设置要符合国家或地区的法规,遵守对无线通信功率的限制。
此外,使用CC1100进行无线通信时,要注意选择合适的调制方式和编码方式。
CC1100支持多种调制和编码方式,根据不同的应用需求选择合适的方式。
可以根据数据传输速率、带宽和抗干扰能力等因素来选择。
还有,接收灵敏度和发送功率的平衡也是使用CC1100时需要考虑的问题。
接收灵敏度决定了CC1100对远程信号的接收能力,而发送功率决定了CC1100发送信号的强度。
合理的平衡可以提高无线通信的可靠性和稳定性。
最后,使用外部天线可以提升CC1100的无线通信性能。
CC1100自带的PCB天线在一定范围内有一定的发送和接收能力,但是使用外部天线可以扩大发送和接收范围。
如果无线通信距离较远,或者环境中有较强的干扰源,可以考虑使用外部天线来提升性能。
总结起来,使用CC1100时,需要正确配置寄存器、选择合适的频率、控制功率、选择合适的调制和编码方式、平衡接收灵敏度和发送功率、使用外部天线等。
这些技巧可以帮助我们更好地使用CC1100,提高无线通信的可靠性和性能。
CC1100无线模块使用说明

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 间距双排针接口方式。
CC1100-Wake-On-Radio

CC1100 /CC2500 Wake-on-Radio(电磁波唤醒)功能原理3.2 CC1100的WOR功能可以使芯片在无需MCU的干预下周期性的从深度睡眠模式醒来侦听潜在的数据包。
这个可编程的唤醒周期由一个WOR定时器控制,这个定时器的时钟源是一个内部RC振荡器。
因此,在发布WOR滤波使芯片处于WOR模式之前,必须开启这个内部的RC振荡器。
CC1100的GDO引脚可以配置为在MCU希望的条件下产生一个中断信号。
例如,在RX模式下监测到同步字时可产生一个中断信号唤醒MCU。
MCU然后可以决定下一步的动作,比如,切换到TX模式发送一个应答信号,或者是,如果CRC校验失败,继续返回WOR 模式。
在收到数据包后,芯片不会自动返回WOR状态,这意味着,MCU需要手动的发布WOR滤波使芯片返回WOR状态。
如果没有监测到同步字,一个可编程的RX时间结束后,芯片将不需要MCU的干预而自动返回WOR模式。
WOR功能可以和RX_TIME_RSSI(信号强度检测)功能联合使用。
在进入RX模式时,检测信号强度,若信号强度低于设定的比较值,RX模式将立即结束转入到WOR的睡眠周期。
这个功能可以减少RX的时间,进一步降低功耗。
CC1100提供两种使用WOR的方法,使用或不使用自动同步特性。
本文仅介绍不带自动同步的WOR应用。
3.2.1 不带自动同步的WOR应用最简单的利用WOR功能的方式是发送机以一个固定的时间间隔发送数据包,接收机有规律的醒来侦听数据包,这种情形不需要使用自动同步。
控制WOR定时器的低功率RC振荡器的频率会随着温度和电压的改变而改变。
为了保证RC振荡器的频率尽可能的精确,当XOSC振荡器运行时以及芯片不再睡眠模式时应当进行频率校准。
当芯片进入睡眠模式时,RC振荡器使用最后的校准值。
CC1100从深度睡眠模式唤醒的时间和开始RX模式的时间通过事件0和事件1来描述。
这个过程参见图1。
CC1100唤醒的时间间隔,如图1所示,等于t Event0,也就是说等于两个连续的事件0之间的时间间隔,或等于两个连续的事件1之间的时间间隔。
基于CC1100的无线传输系统设计

第2 4期
2 1 8月 0 2年
科
学
技
术与工源自程 Vo . 2 N . 4 Au .2 1 11 o 2 g 02
17 — 1 1 (0 2 2 -0 00 6 1 85 2 1 ) 464 .6
S in e T c n l g n n i e r g ce c e h o o y a d E gn e i n
⑥
2 1 SiT c. nr. 02 c. ehE gg
基于 C l0 C 0的无 线传 输 系统 设 计 l
徐 兴 徐 胜 王 卫 星 岳 学军
( 华南农业大学工程学院 广州 50 4 ; , 16 2 广东工业大学物理与光 电工程学院 广州 50 4 ) , 16 2
摘
路并编写 了 C 10 C 1 1芯片的通信软件。实现 了点对 点的无线数据通信 , 并增加 了慢启动一 拥塞避 免功能和路 由转发功能。使该
无线数据传输 系统 的应用面增广 , 更加适合在不 同突发状 况下 的无 线数据传输。 关键词 射频 C 10 C 10 无线通信 路 由转发 慢启 动一 拥塞避免
。
无射 线部 发分
圆
圈∞
无线接收部分
( Y 0 3 ) 高等学校博士学科点专项科研基金联合资助项 目 L M10 5 、
(0 8 54 0 0 、 益 性 行业 ( 业 ) 20 0 60 1 ) 公 农 科研 专 项 经 费 项 目
无线转发部分
(0 9 330 ) 广东省省部产学研结合项 目(0 1 0 00 3 9 、 2 0 0 2 -6 、 2 1 B 94 0 5 ) 广东省科技计划项 目( 00 0 0 10 7 资助 2 1 B 2 34 0 ) 第一作者简介 : 徐 兴 ( 9 8 ) 江西 宁都人 , 师, 17 一 , 讲 博士 , 研究 方
射频收发芯片CC1100及其应用

38 4 MHz 0 M Hz 4 4 、4 0 ~ 6 MHz和 8 0 Hz 9 8 Hz 0M ~ 2M
繁琐 的工作 承担 下来 ,当需要 发射 数据 时 ,只需 将发
射 的 数 据 按 照 一 定 的格 式 通 过 S I口写 入 到 发 射 P FF I O,然后 把 C 1 0配 置成发 射状态 ,数 据就会 按 Cl 0 照 要求 发射 出去 ; 当需 要接 收数据 时 , 首先将 C 1 0 C1 0 配 置成接 收状 态 ,一旦 收到符 合要求 的数 据 , C1 0 C 10 就 会把 收到 的数 据 存入 接 收 F F I O,同时 引脚 GD OO 或 GD 会 有一个 脉 冲出现 , 个脉 冲可 以用 来通 知 02 这
0 引 言
去 , 种方式 在发送 与接 收数 据时 处理起 来 比较麻 烦 , 这 接收 时还 要判 断前 导字与 同步字 。而 C 1 0把 这些 C1 0
C l0 C 10是 原 C ic n公 司推 出的 一种低 成本 、 hp o 真 正单 片的超 高频无 线 收发 器 ,为低功 耗无 线应 用而设 计 。整个 应 用 电路 的无 线 频 率主 要设 定 在 3 5 1MHz 、 43 3 MHz 6 MHz 9 5 、8 8 和 1 MHz四个 I M ( S 工业 、 学 科
1 6 GN D
1 9
GN D
数 字 地 8 1 0X0 C Q1 S—
X0 C Q2 S —
晶 振 脚 1或 外 部 时 钟 输 入 ,
晶振脚 2
移 装置直 接发送 给信 号放 大器 ( A) P 。 C 1 0具有包 处理机 制 、 C1 0 发送/ 接收 F F WO I O、 R
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CC1100的应用电路简单,仅需很少的外部元件即可工作。
如图2所示为315/433MHz频段的参考电路。
图中R1为偏置电阻,用以调整精确的偏置电流。
C8、C9、L1、L2构成一个非平衡变压器(Balun),将CC1100的差分输出变为单端射频信号,与LC网络一起进行阻抗变换以匹配50欧姆天线(或同轴电缆)。
在不同工作频率下各元件的值也有所不同,具体请参见CC1100的数据手册。
2、通用输出管脚CC1100具有3个通用数字输出管脚:GDO0、GDO1和GDO2,它们可以通过SPI接口被MCU配置成不同的功能,配置寄存器IOCFG【0,1,2】分别对应三个管脚的功能配置。
GDO1同时也是SPI接口的SO口,因此,只有在CSn=1时,所配置的输出功能才有效。
GDO1默认的配置为三态输出,在CSn为高时此管脚保持为高阻态,这样在总线连接多个器件时不会影响总线工作;GDO0默认配置为晶振频率的192分频输出(126KHz~146KHz)。
由于一上电复位Xosc就开始工作,因此此时钟输出可以用于给系统中其它器件提供振荡信号。
另外,CC1100片上集成有1个模拟温度传感器,当向IOCFG0.GDO0_CFG写入0x80时使能传感器,此时,GDO0脚的电压与温度成比例关系。
而GDO2的默认设置为CHIP_RDYn信号输出。
通过对IOCFG【0,1,2】寄存器的编程不仅可以改变GDO口线的功能,还可以改变其输出高低电平状态,寄存器构成如表3所示:表3 IOCFGx寄存器结构标志、三态输出、晶振频率分频输出等等,详见数据手册。
GDOx的配置在与MCU接口中非常重要,MCU可通过检测它们的输出来判断CC1100所处的状态。
四、CC1100的寄存器CC1100的内部寄存器包括五种:配置寄存器、命令滤波寄存器、状态寄存器、收/发FIFO以及功率配置表PATABLE。
1、配置寄存器:CC1100共有47个配置寄存器,如表4所示,包括GDO【0~2】配置、收发缓冲区门限、工作频率、调制模式等。
虽然寄存器较多,但是所有配置值可以很简便的由TI公司提供的SmartRF软件得到。
当然也可以手动计算,数据手册中给出了各寄存器详细的定义。
写入时,每一个头字节或数据字节发送时状态字节都会从SO发出。
读出时,每个头字节发送时,状态字节都会从SO发出。
连续地址的寄存器可以通过将头字节中的burst位B置1而实现连续写入,地址为A5~A0设置写入的内部地址寄存器初始地址,此寄存器每写入一字节数据时自动加1。
Burst访问可以是读也可以是写,但都必须由CSn置1来结束。
2、命令滤波寄存器命令滤波可以看做是CC1100的单字节指令。
通过对命令滤波寄存器的选址,内部时序被启动。
这些命令用来关闭晶体振荡器、使能接收/发送、清空FIFO等。
14个命令滤波如表5所示。
表5 CC1100指令集命令滤波寄存器的访问和配置寄存器的写操作一样,只是不传输数据。
访问命令滤波寄存器只发送一个头字节,其中 R/W位为0,突发访问位为0,六个地址位(0x30和0x3D之间)即为指令码。
当写命令滤波寄存器时,状态字节也从SO管教输出。
一个命令滤波操作可以在任何其他SPI访问之后发送,而不需要将CSn拉至高电平。
除了SPWD和SXOFF指令要在CSn变高时执行外,其余指令在写入后都会立即被执行。
3、状态寄存器CC1100的状态寄存器共有14个,如表6所示,均为只读。
由于命令滤波和状态寄存器地址相同,为了加以区分,CC1100规定,对于地址在0x30~0x3D范围内的寄存器操作,burst位用来选择是状态寄存器(=1)还是命令滤波(=0)。
因此,状态寄存器不能像配置寄存器一样使用burst访问方式,而只能一次访问1个寄存器,而且是只读的。
4、PATABLEPATABLE用于配置CC1100的功率放大器,可以通过地址0x3E访问。
PATABLE为一个8字节的表格,通过配置寄存器FREND0中的PA_POWER【2:0】的值来确定使用表中那一个值。
读/写PATABLE表时,总是最低字节在前,一次操作一字节,表中索引计数器自动加一,当到达最高字节后,自动变为0。
而且,每次CSn变高时,索引计数器复位,重新指向最低字节。
对PA TABLE的操作可以是单字节也可以是burst操作,这取决于Burst位的值。
值得注意的是,当芯片进入SLEEP状态时,除了最低字节(索引0)以外,表中其他内容都会丢失。
在不同频段、调制方式下,对应功率的设置值也有所不同,具体参见数据手册,也可以由SmartRF计算得出。
5、FIFO寄存器CC1100包含1个64字节的发送FIFO(只写)和一个64字节的接收FIFO(只读),可以通过0x3F地址访问。
在SPI接口发送的头字节中,当RW=0时访问发送FIFO,=1时访问接收FIFO。
Burst位决定是单字节操作(=0)还是burst操作(=1)。
因此,FIFO访问一共可有以下四种头字节:0x3F:单字节写发送FIFO;0x7F:burst写发送FIFO;0xBF:单字节读接收FIFO;0xFF:burst读接收FIFO。
在写发送FIFO时,状态字节在每个字节数据写入时从SO发送,此字节可以用于检测是否FIFO已满。
此外,可以使用SFRX、SFTX指令来清空接收、发送FIFO。
五、CC1100的包格式CC1100接收和发送的数据包格式如表7所示,其一包数据共包含6部分:前导码、同步字、长度、可选地址、数据、可选的CRC16校验码。
前导码:前导码是一个交替的1010序列,用于接收端进行信道检测。
其最小长度是可以编程的。
当使能TX时,调制器开始发送前导码序列。
发完前导码之后后,若发送FIFO中数据可用,调制器开始发送同步字和数据;如果发送FIFO为空,调制器会持续发送前导码,直到发送FIFO中写入第一个字节,之后开始发送同步码和数据。
前导码的长度由配置寄存器MDMCFG1中的NUM_PREAMBLE值决定。
同步字:是SYNC1和SYNC0寄存器中设置的2字节值,用于提供接收包的字节同步信息。
可以通过将SYNC1的值设置为前导码方式来实现单字节同步字。
也可以通过将MDMCFG2中SYNC_MODE的值设为3或7来实现32位的同步字,这时,SYNC0、1的值发送2次。
长度码:CC1100支持三种包长度:固定长度,可变长度和无限长度,由配置寄存器PKTCTRL0中LENGTH_CONFIG 项的值决定。
设置LENGTH_CONFIG=0时,采用固定长度数据包,包长度由PKTLEN寄存器设置,此时数据包内没有表7中的长度一项。
设置LENGTH_CONFIG=1时,采用可变长度数据包,包长度由同步字后面的第一个字节配置。
包长度是指纯数据的长度(表7中的地址+数据两项的字节数),不包含长度字节本身以及可选的CRC校验字节。
PKTLEN设置值为最大的包长度,任何接收到的长度字节值大于PKTLEN的包都将被丢弃。
设置LENGTH_CONFIG=2时,设置为无限包长度。
对于固定包长度和可变包长度,其长度值最大为255,要发送更长的数据包,就必须使用无限包长度。
地址码:地址码一项也是可选的,由配置寄存器PKTCTRL1中ADR_CHK的值决定。
当ADR_CHK=0时,接收端不检测地址,数据包中不含地址项;当ADR_CHK=1时,接收端检测地址,且没有广播地址;当ADR_CHK=2时,接收端检测地址,0x00为广播地址;当ADR_CHK=3时,接收端检测地址,0x00和0xFF为广播地址。
对于不为0的设置值,接收端每检测到一包数据,首先将包中的地址字节与本地地址(配置寄存器ADDR值)或者广播地址进行比较,如果地址匹配,则接收此包并将其写入接收FIFO,否则丢弃。
CRC码:CRC校验码也为可选项,在PKTCTRL0寄存器中,CRC_EN位若置1则使能CRC校验,否则无此项。
六、CC1100软件设计CC1100的软件设计主要包括三部分:初始化、发送数据包和接收数据包。
1、初始化在收发数据之前,必须对芯片进行初始化,即对各配置寄存器和PA TABLE进行设置。
这一步最简便的方法是从TI官方网站下载SmartRF软件,安装后,在其各项配置(如频率、调制方式、数据速率、功率、包长度等)中输入所需参数,如图3所示,然后将软件自动生成的各寄存器值在自己编写的程序中写入CC1100即可。
图3 SmartRF参数配置2、数据发送在发送数据前,待发数据必须先写入发送FIFO。
为可变包长度时,写入的第一个字节必须是长度值,此长度包含了目的地址和数据;若为固定包长度,则第一个字节应该是目的地址。
写完FIFO之后使用STX命令使能发送即可,前导码、同步字、CRC校验码均为芯片自动计算加入。
void CC1100_Tx_Packet(){CC1100_Strobe(CC1100_SIDLE); //进入空闲模式if( CC1100_WriteBurstReg(CC1100_TXFIFO, CC1100_BUF.TX, Len)==1 ){CC1100_Strobe(CC1100_STX); //进入发送模式发送数据while (!(CC1100_SYNC_END)); //等待同步字发送完while (CC1100_SYNC_END); //等待包发送结束CC1100_Strobe(CC1100_SFTX); //清空发送缓冲区CC1100_Strobe(CC1100_SRX); //使CC1100处于接收状态}}上面是一段发送子程序代码,这里用到了一个GDO管脚(程序中的CC1100_SYNC_END)来检测CC1100状态,在初始化时将其配置为0x06,在接收(或发送)完同步字时,GDO触发,当包接收(或发送)完毕后,GDO恢复。
3、数据接收MCU感知CC1100接收完一包数据,可以通过GDO管脚或SPI总线获取状态。
对于SPI总线方式,可以查询PKTSTATUS寄存器获取当前状态,查询RXBYTES和TXBYTES寄存器可以检测当前FIFO中的字节数等。
由于查询操作都需要进行SPI通信,相对来说要麻烦一点,因而如果口线资源够的话,最好还是采用端口查询或中断方式。
利用GDO管脚方式,在初始化时配置好后,只需定时查询口线电平,或者利用电平变化产生中断,相对要简单一些。
除了0x06配置外,还有两个设置(0x00,0x01)与接收FIFO相关联,以及两个设置(0x02,0x03)与发送FIFO 相关联,其他配置如0x07(正确接收一包数据且CRC校验正确触发,当接收FIFO中第一个字节被读出时恢复)等也可以用于接收检测,具体参见数据手册。
笔者在应用中仍然使用了0x06配置,由于在接收到同步字和接收完数据包之间端口会有一个变化过程,利用此变化产生中断,在终端中再读取数据,具体接收子程序如下:unsigned char CC1100_Rx_Packet(unsigned char *rxBuffer){unsigned char status[2];unsigned char pktLen;if ((CC1100_ReadStatus(CC1100_RXBYTES) & CC1100_NUM_RXBYTES)){pktLen = CC1100_ReadReg(CC1100_RXFIFO); // 读取长度字节if (pktLen <= PKT_MAX_LEN) // 长度是否在允许范围内{CC1100_ReadBurstReg(CC1100_RXFIFO, rxBuffer, pktLen); // 读取数据CC1100_ReadBurstReg(CC1100_RXFIFO, status, 2); // 读取两字节状态字if(status[1]&CC1100_CRC_OK ) //如果CRC校验正确,返回接收包长度{ return(pktLen); }}}CC1100_Strobe(CC1100_SFRX); // 清空接收FIFOCC1100_Strobe(CC1100_SRX); // 使CC1100处于接收状态return 0;}七、结束语CC1100支持频段多,接收灵敏度高,支持多种调制方式、数据速率,接口简单,占用MCU资源较少,而且功耗小、成本低,适用于多种应用场合。