内嵌51MCU的射频收发芯片CC1010及其应用
扫描二维码
随时随地手机看文章
摘要:简要介绍内嵌8051MCU的射频收发芯片CC1010的特性和各引脚功能;分析芯片的功能结构,芯片内嵌51MCU的性能和片内收发器的工作原理;给出参考应用电路;说明在PCB布线时应当注意的一些问题。
关键词:CC1010 射频收发芯片 单片机 应用
引言
CC1010是挪威Chipcon公司推出的单片、多频段、低功耗、超高频射频芯片。芯片采用Chipcon公司的0.35μmCMOS技术制成,内嵌高性能的8051微控制器、32KB的Flash程序存储器2176字节的SRAM,能够工作于315/433/868和915MHz四个ISM(工业、科学和医学)频段,可通过编程控制其工作于300~1000MHz频率范围之内。芯片低电压(2.7~3.6V)供电并且功耗非常低(接收数据时工作电流只有9mA),高灵敏度(-107dBm),最大发射频输出为+10dBm,通信速率为76.8kb/s,符合EN 300 220和FCCCFR47规范。CC1010适用于家庭自动化、安防系统、遥控开锁、遥感勘测、遥控玩具等诸多无线应用领域。
1 芯片引脚
CC1010采用TQFP-64封装,芯片尺寸为12mm×12mm。
2 芯片结构
CC1010片内集成了微处理器内核、Flash程序存储器、SRAM数据存储器、定时器/计数器、看门狗、SPI接口、A/D转换器、射频收发器等功能模块。芯片的功能结构如图1所示。
2.1 8051内核
CC1010的微处理器内 核基于标准的8位8051内核,支持直接寻址、间接寻址和寄存器寻址等寻址方式,内核寄存器有累加器A、堆栈指针SP、数据指针DPTR和程序状态字PSW等。
CC1010的数据存储器分为内部128字节SRAM和外部1024字节SRAM两个。这里所说的内部和外部是相对于寻址方式而言的。实际上,这两个寄存器都在CC1010片内,但外部1024字节的SRAM只能通过标准8051的几条指令进行访问。访问比较频繁的数据一般都放在内部128字节的SRAM中,如堆栈数据。内部SRAM的高64位为特殊功能寄存器SFR,用于控制微控制器的各种特殊功能,部分特殊功能寄存器可以位寻址。
图1
芯片指令周期为4个时钟周期,其在上电时必须复位。复位方式有:RESET引脚复位、上电复位、低电压复位、看门狗复位和ADC复位。上电复位和ADC复位信号需要1024个时钟周期,以保证内部时钟能够稳定启动。
CC1010共有15个中断源,包括Flash/Debug中断、外部中断0、外部中断1、定时器0中断、定时器1中断、定时器2中断、定时器3中断、串口0发送中断、串口0接收中断、串口1发送中断、串口1接收中断、射频发射频中断、ADC中断、实时时钟中断。其中的部分断菜用相同的中断优先级和中断向量,如串口0发送中断和串口0接中断。CC1010的中断控制方法和8051相似。
XOSC_Q1和XOSC_Q2为芯片时钟信号接口引脚,可接3~24MHz的外部晶振。为了得到更好的芯片使用性能,推荐使用的晶振频率范围为3~4MHz、6~8MHz和9~24MHz。以下列晶振频率便于得到标准的数据速率,如3.6864MHz、7.3728MHz、11.0592MHz、14.7456MHz、18.4320MHz和22.1184MHz。
CC1010片内集成了32KB的Flash程序存储器,每128个字节1页,共256页,可通过SPI接口进行编程/擦除或通过8051分页进行读写。通过SPI接口对Flash程序存储器编程是用SPI-Flash编程协议实现的。当PROG引脚为低时,SPI-Flash编程使能,SPI器件可通过SCK引脚、SI引脚和SO引脚对片内Flash程序存储器进行读写。用户可到Chipcon网站下载CC1010的编程软件。为了便于节能,CC1010还提供了几种不同的Flash程序存储器工作方式,并提供了相应的接口。为了支持在系统调试功能,CC1010扩展了一些标准8051内核没有的功能,如在指令集中加入了断点调试,单步执行指令等。
2.2 射频收发器
CC1010的超高频调频收发器为低电压供电和低功耗设计,收发器的电路如图1所示。芯片设计时的目标收发频率为315、433、868和915MHz,但可通过编程使其工作于300~1000MHz频率范围之内。收发器的主要操作参数均可通过特殊功能寄存器(SFR)来进行。
可通过程序把CC1010配置为射频接收方式或射频发射方式。当把其配置为接收方式时,射频输入信号先通过低噪声放大器进行放大,然后通过混频器把输入信号转换为中频信号,在送给解调器之前,中频信号被进一步放大和滤波。在混频后,接收信号强度指示器的信号或中频滤波器信号通过AD2引脚输出。解调之后,接收到的信号送给射频寄存器(RFBUF)。可通过程序设置,使CC1010在接收方式下,每接收到1位或1个字节发生一次接收中断。
当CC1010工作在发射方式下,压控振荡器(VCO)的输出信号直接反馈给信号放大器(PA)。射频输出信号通过频移键控的调制方式,以位数据流的形式送给射频寄存器(RFBUF)。与在接收方式下的工作原理相似,在发射方式下,也可以通过程序设置,每发射1位或1个字节发生1次发射中断。接收/发射(T/R)电路的作用是控制天线接口,用于接收或发射。
频率合成器由晶体振荡器(XOSC)、相位检测器(PD)、充电泵(charge pump)、片内环形滤波器(LPF)、压控振荡器(VCO)和分频器组成。其主要作用是产生本振信号,并在接收方式下送给混频器,在发射方式下送给频率放大器。CC1010工作时,晶体振荡器(XOSC)必须连到外部晶振,压控振荡器(VCO)也需要接1个外部电感。在868和915MHz收发频率下,CC1010的外围元器件基本相同。
通过特殊功能寄存器(SFR)可配置的与收发相关的主要参数有:接收/发射方式、射频输出的功率、射频输出频率、频移键控的频率、关/开机工作方式、数据速率和数据格式、外部中频输出等。Chipcon给用户提供Windows界面的芯片参数配置软件SmartRF Studio。
3 应用电路
CC1010的应用参考电路如图2所示。由图2可见,需要的外围元器件非常少。
C31/L32为输入匹配电容/电感,L32同时也用于防止直流偏置信号的输入。C41、L41和C42用于发射时的信号匹配。通过发射/接收开关电路,收发器得以通过同一个50W的天线进行接收/发射操作。压控振荡器完全整合在芯片内,因此在使用时只需要1个电感L101,通过SmartRF Studio软件,可容易地计算出各个频率的L101的值。在某些有特殊要求的场合下,可通过外加外部电感电容滤波器或声表滤波器来提高芯片的收发性能。为了使芯片能够稳定工作,在芯片电源输入端必须加上滤波电容。滤波电容一般需要两个:一个为高频滤波电容,另一个为低频滤波电容。
4 PCB布板
射频收发产品的PCB布局对整个系统的性能影响很大。为了能使用户得到最好的收发性能,Chipcon给用户提供了参考PCB布局,用户可到其网站下载。CC1010的PCB一般至少为4层板。Chipcon也极力推荐用户使用4层板,这4层分别为顶层、中间地层、中间正电源层和底层。各层通过过孔连接。芯片和大部分的外围元器件布置在顶层,少数外围元器件布置在底层,如压控振荡器的电感和电源滤波电容。芯片的接地引脚应该尽量靠近与中间地层连接的过孔,所以,在PCB上空余的地方应尽量多布置一些过孔。滤波电容也应该尽量靠相应的引脚布置,这样可以得到更好的滤波性能。外围元器件应尽量小,尽量使用何种小的贴片器件。在PCB上,压控振荡器的电感应尽量靠近L1和L2引脚,并相对这两个引脚呈对称布置。
图2
CC1010可使用单鞭天线、螺旋天线或在PCB上的环形天线。单鞭天线的长度为波长的1/4,可通过式(1)计算。其中,L表示单鞭天线的长度,f为接收/发射频率。环形天线布在PCB上,使用非常方便;但由于其福射能力较差,所以接收/发射性能也稍差些。螺旋天线是单鞭天线和环形天线的一种折衷方案,其尺寸大小和接收/发射能力介于单鞭天线和环形天线之间。
L=7125/f (1)
5 应用程序
以下程序代码均在Keil C51 V7.07(要打上CC1010 Development Tools补丁)编译环境下调试通过。下面是部分代码。
(1)收发频段配置
#ifdefFREQ868 //868 MHz频段
RF_RXTXPAIR_SETTINGS code RF_SETTINGS={//配置字
0x4B,0x2F,0x15,//曼彻斯特编码,波特率为2.4kbps
0x75,0xA0,0x00,//Freq A,868.277200MHz,发送
0x58,0x32,0x8D,//Freq B,868.277200MHz,接收
0x01,0xAB, //64kHz分离频率
0x40, //PLL_RX
0x30, //CURRENT_RX
0xF3, //CURRENT_TX
0x32, //FREND
0xFF, //PA_POW,功率放大器的电源
0x00, //MATCH,频率匹配
0x00, //PRESCALER
};
#endif
#ifdefFREQ915 //915MHz频段
………… //与868MHz频段相似
#endif
#ifdefFREQ433 //433MHz频段
………… //与868MHz频段相似
#endif
(2)接收配置函数
void RFSetupReceive(void){
INT_GLOBAL_ENABLE(INT_OFF); //关全局中断
INT_SETFLAG(INUM_RF,INT_CLR); //设置RF中断
INT_PRIORITY(INUM_RF,INT_HIGH); //RF中断优先级
INT_ENABLE(INUM_RF,INT_ON); //使能RF中断
RF_SET_BYTEMODE(); //使能字节方式的RF中断
RF_SET_PREAMBLE_COUNT(16); //设置字头配置
RF_SET_SYNC_BYTE(RF_SUITABLE_SYNC_BYTE);
MODEM1=(MODEM1&0x03)|0x24; //确保avg滤波器空闲
PDET &=~0x80; //重置字头检测
PDET|=0x80; //重置字头检测
RF_START_RX(); //开始发送
INT_GLOBAL_ENABLE(INT_ON); //开全局中断
}
(3)发送配置函数
void RFSetupTransmit(void){
………… //接收频率配置,代码与6.1相似
RF_RXTXPAIR_CALDATA xdata RF_CALDATA; //校准数据
WDT_ENABLE(FALSE); //禁能看门狗定时器
MEM_NO_WAIT_STATES(); //设置适当的发送速度
FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_READS);
HalRFCalib(&RF_SETTINGS,&RF_CALDATA);//校准配置是否正确
HalRFSetRxTxOff(RF_TX,&RF_SETTINGS,&RF_CALDATA); //准备发送
RF_START_TX(); //开始发送
}
(4)其它代码
限于篇幅,只列出CC1010设计当中的部分代码。其它代码还有开始发送函数RF_START_TX()、开始接收函数RF_START_RX()等。
结语
在目前国内外出现的射频芯片当中,嵌入MCU内核的芯片为作不多。在这些嵌入式芯片当中,CC1010是性能比较出众的一个。其低电压供电和低功耗的特性适合于多种嵌入式系统应用,另一个比较优秀的特点是能够工作在300~1000MHz的宽频率范围。在某些需要大容量程序存储和数据存储器的地方,CC1010的优点就更加明显了,其片内的32KB的Flash存储器和2176字节的SRAM,足够用于大部分的射频收发应用系统中。可想而知,CC1010将会得到越来越广泛的应用。