APP下载

CC2530芯片无线收发深入解析

2021-07-28刘连钢

科技资讯 2021年8期

刘连钢

DOI:10.16661/j.cnki.1672-3791.2010-5042-0258

摘  要:在智能家居和智能农业系统的感知层开发中主要运用Zigbee技术,实现Zigbee技术的硬件主要为具有射频收发功能的CC2530芯片。该文通过配置CC2530芯片的寄存器,使芯片实现无线收发的功能;通过使用寄存器的方式,编写无线发送函数和无线接收函数,实现基于Basic RF的数据传输。深入研究CC2530芯片的无线收发机制,从而掌握无线收发原理,便于更好地利用芯片,增强物联网感知层开发的能力。

关键词:CC2530  芯片寄存器  中断函数  无线收发

中图分类号:TN92                            文献标识码:A文章编号:1672-3791(2021)03(b)-0023-05

Depth Analysis of CC2530 Chip Wireless Transceiver

LIU Liangang

(Dalian Vocational & Technical College, Dalian, Liaoning Province, 116035  China)

Abstract: In the development of the sensing layer of smart home and intelligent agriculture system, ZigBee technology is mainly used. The hardware of ZigBee technology is CC2530 chip with RF transceiver function. In this paper, through the configuration of CC2530 chip register, the chip realizes the wireless transceiver function; through the use of registers, the wireless sending function and wireless receiving function are written to realize the data transmission based on basic RF. In depth study of CC2530 chip wireless transceiver mechanism, so as to master the wireless transceiver principle, facilitate better use of the chip, enhance the ability to develop the perception layer of the Internet of things.

Key Words: CC2530; Chip register; Interrupt function; Wireless transceiver

伴隨着智能家居、智能农业等发展,Zigbee技术的应用已非常广泛,在使用Zigbee技术组建无线传感网时,经常会用到芯片CC2530芯片。在使用CC2530芯片进行无线网络组建时,肯定会用到无线收发这一功能。开发者一般都会到官网下载工程模板,在开发时调用给定的接收、发送函数完成收发功能。该文抽丝剥茧,通过寄存器配置的方式实现无线收发功能,帮助读者深入了解CC2530无线收发的原理。

通过配置寄存器的方式实现无线收发功能,要完成这样几项工作:射频相关资源初始化、编写射频发送函数、编写射频接收函数、编写射频接收中断服务子函数。完成了上述几项基本工作,就可以根据实际的业务逻辑进行程序的开发。上述几项工作都涉及到多个寄存器的配置,下面该文就针对上述几项工作进行详细的阐述,使读者深入地了解CC2530芯片射频工作的原理。

1  射频相关资源初始化

该项工作涉及到的寄存器比较多,该文通过表1归纳出需要配置的寄存器,并对各寄存器进行了功能的描述,具体见表1。

通过表1归纳出的寄存器,相关人员可以看到,在射频相关资源初始化时,相关人员需要完成的工作有以下几个方面。

(1)是否由无线电自动处理FCS字节数据。即是否由硬件完成帧校验序列。涉及寄存器FRMCTRL0。

(2)设置获得最佳性能的值。即必须把寄存器TXFILTCFG、AGCCTRL1、FSCAL1从默认值更新到获得最佳性能的值。

(3)中断设置。无线电与CPU的两个中断向量有关,它们是RFERR中断(中断0)和RF中断(中断12),该文主要是完成数据的发送和接收,所以使用RF普通操作的中断,用到的寄存器为IEN2。RF内核产生的中断是RF内核中若干源的组合,每个单独的源在RF内核中有自己的使能和中断标志,该文用到的中断屏蔽寄存器为RFIRQM0,标志位可在寄存器RFIRQF0中找到(后面用到)。

(4)设置射频发送参数。寄存器FREQCTRL设置无线通讯的物理信道,IEEE802.15.4-2006指定16个通道,它们位于2.4 GHz频段之内。步长为5 MHz,编号为11~26。通道k的RF频率遵循公式fc=2405+5(k-11)[MHz]k∈[11,26],对于操作在通道k,FREQCTRL.FREQ寄存器设置为FREQCTRL.FREQ=11+5(k–11)。

通过配置PANID和SHORT_ADDR,完成网络标识和模块短地址的设置。

(5)RF命令选通。写入该寄存器的数据被写到CSP指令存储器,命令选通/CSMA-CA处理器(CSP)提供控制CPU和无线电之间的通信。

射频相关资源初始化使用到的寄存器的具体配置值和作用,具体见表2。

2  编写射频发送函数

射频发送涉及到的寄存器以及寄存器的功能,具体见表3。

无线电RAM為发送数据有一个FIFO(TXFIFO),为接收数据有一个FIFO(RXFIFO)。这两个FIFO都是128字节长。可以通过SFR寄存器RFD(0xD9)访问TXFIFO和RXFIFO。当写入RFD寄存器时,数据被写入到TXFIFO。当读取RFD寄存器时,数据从RXFIFO中读出。射频发送具体实现步骤可参见下面的函数,函数参数为发送字符数组名。

void RFSend(char *RFsend_str )

{

while (FSMSTAT1 & 0x22);//等待射频发送就绪

RFST = 0xEE;//清除 TXFIFO 缓冲区

RFIRQF1 &= ~0x02;// 清除发送完成标志位

for(chari=0;i< RFsend_str [0]-1;i++)/*第一个字节为帧长度域,校验字节由硬件产生并附加到发送帧*/

{

RFD= RFsend_str [i];

}  //利用循环把需要发送的数据全部压到发送缓冲区里面

RFST = 0xE9; /*校准之后使能 TX,即该寄存器赋值为0xE9后,发送缓冲区的数据

就被发送出去*/

while(!(RFIRQF1 & 0x02) );//等待发送完成

RFIRQF1 = ~0x02;// 清除发送完成标志位

}

注意:帧长度域定义了MPDU中的字节数,长度域的值不包括长度域本身。但是它包括帧检查序列(FCS),即使这是由硬件自动插入的。

3  编写射频接收函数

无线接收函数的功能是将接收到的数据存放到指定的数组中,涉及到的寄存器见表4。

无线接收函数功能相对简单,即通过寄存器RFIRQM0和IEN2将收到一个完整的帧的中断禁用。然后读取RFD寄存器,数据从RXFIFO中读出,并存储到指定的数组中,数据读取完成后,使能收到一个完整的帧的中断。具体代码如下。

void RFR evstr(char*RFstr_recive)

{

char len=0;

RFIRQM0 &= ~0x40;

IEN2 &= ~0x01;

len=RFD;  //读第一个字节判断这一串数据后面有几个字节

*RFstr_recive=len;

for(int i=1;i

{

*(RFstr_recive+i)=RFD;

Delay(1);    //每次读取加一定延时

}

RFIRQM0 |= 0x40;

IEN2 |= 0x01;

}

4  编写射频接收中断服务子函数

利用中断完成数据的接收,涉及到的寄存器见表5。

在中断服务子程序中关闭总中断后,判断是否产生的是接收到一个完整的帧的中断,如果是调用上述接收函数完成数据的接收,然后清除中断标志位。最后重设RFST寄存器,打开总中断即可。

#pragma vector=RF_VECTOR

_interrupt void RF_IRQ(void)

{

EA=0;

if( RFIRQF0 & 0x40 )

{

RFRevstr (pRxData);

S1CON= 0;           // Clear general RF interrupt flag

RFIRQF0&= ~0x40; ;  // Clear RXPKTDONE interrupt

}

RFST = 0xED;   //清除 RXFIFO 缓冲区并复位解调器。

RFST = 0xE3; // RX使能并校准频率合成器

EA=1;

}

通过上述的讲解,可以使读者深入地理解CC2530芯片无线传输。读者可在完成射频相关资源初始化、射频发送函数、射频接收函数、射频接收中断服务子函数后,结合实际的业务逻辑完成项目的开发,也可以该文为基础更加深入地学习CC2530芯片。在进行无线传输开发时还应牢记两点:一是在RF收发器操作时,必须设置系统时钟源为32 MHz晶振,虽然16 MHz RC振荡器功耗少于晶振,但是不像晶振那么精确;二是无线收发的数据必须符合IEEE 802.15.4帧格式,否则无法完成数据传输。

参考文献

[1] 汪振中.基于CC2530芯片的ZIGBEE无线数据传输模块设计[J].中国设备工程,2017(14):133-134.

[2] 严林波.基于ZigBee技术的无线通信模块研究[J].科学技术创新,2020(29):88-89.

[3] 戚泽峰.基于CC2530的ZigBee通信网络的应用设计分析[J].中国新通信,2020(14):41.

[4] 徐志勇.基于CC2530的ZigBeeRFID读写应用研究[J].科技资讯,2020(14):11-13.

[5] 吴攀,曹珍贯.基于CC2530的大学图书馆和机电一体化监控系统的设计[J].科技资讯,2017(31):17,19.

[6] 廖兵,周妮,石洋,等.基于物联网技术的农产品溯源关键问题研究与设计[J].科技创新导报,2020(3):56-57.

[7] 黄冰霜,胡微微.基于大数据下物联网对武术训练的应用[J].当代体育科技,2016(17):43-44.

[8] 王超.基于ZigBee技术的机房温湿度监控系统设计[D].大连理工大学,2019.

[9] 李海锋.基于ZigBee技术的鱼塘水质监测系统研究[D].西安科技大学,2019.