您的位置 首页 分销

怎么使用CC2530完成无线串口

如何利用CC2530实现无线串口-CC2530是符合802.15.4标准的无线收发芯片,但是本文并没有遵守802.15.4协议规则,在发送过程中忽略了网络ID、源地址和目标地址等参数,在接收的过程中禁止了帧过滤。通过发送和接收过程的处理使得CC2530无线部分的使用尽可能的简单清晰,通过最少的代码说明问题。

CC2530是契合802.15.4规范的无线收发芯片,可是本文并没有恪守802.15.4协议规矩,在发送进程中疏忽了网络ID、源地址和方针地址等参数,在接纳的进程中制止了帧过滤。经过发送和接纳进程的处理使得CC2530无线部分的运用尽可能的简略明晰,经过最少的代码阐明问题。

无线芯片的调试具有必定的难度,一般存在发送设备和接纳设备。为了经过最简略的代码阐明无线芯片的运用,本文中仅编写一种设备代码一起完结发送和接纳功用。设备的功用也相对简略,CC2530从串口接纳数据并把数据经过RF部分“无损”发送,于此一起CC2530把从RF部分接纳的数据经过串口“无损”发送,经过这样的办法完结无线串口。

串口数据归于“流”型数据包,RF部分归于“帧”型数据包。在串口数据处理与剖析中,一般选用特定的串口头和长度的办法解析数据,可是本文选用经过串口时刻距离的办法接纳数据,这种办法等同于modbus-RTU串口数据处理办法。经过这种检测字节数据时刻距离的办法使得CC2530的串口部分能够接纳无特别格局要求的数据,真实完结无线串口功用。

代码库房坐落bitbucket,请运用Hg克隆或下载zip包,请勿运用任何版别的IE浏览器,除非您了解HTML4和HTML5关于浏览器的影响,引荐运用谷歌或火狐浏览器,若运用国产双核浏览器请切换到极速形式。

1.1试验预备

为了完结无线串口功用,需求预备两套CC2530模块和一个仿真器。假如条件答应能够添加一个仿真器,仿真器能够是CC Debugger也能够是SmartRF04EB,一起也能够预备一套CC2531 USBDongle做为嗅探器,抓取RF发送数据做调试剖析。

1.2 试验成果

本文首要完结了无线串口功用,经过串口调试帮手发送字节数据。例如经过串口向设备A发送Hello CC2530,设备B可收到Hello CC2530,并把该字符串经过串口调试帮手打印至屏幕。设备B发送Hello RF,设备A相同能够收到数据并打印至屏幕。

图1.2.1(a-b) 设备A和设备B串口调试界面

图中中括号包含的数字为RSSI成果,RSSI表明接纳信号强度,例如图中的-28。RSSI成果的单位为dBm,dBm为肯定单位且参阅的规范为1mW。

2.初始化

RF部分的寄存器较多,需求耐性阅览数据手册和相关东西才能够完结设置。尽管RF部分的寄存器较多,可是仍是凭借smartRF东西、数据手册和示例代码,仍然能够总结出运用CC2530无线部分的一般办法。

初始化部分包含接纳数据包帧过滤操控,发射功率操控和信道挑选;凭借smartRF东西生成若干引荐值;翻开接纳终端并进入接纳状况。

2.1 代码

voidrf_init()

{

FRMFILT0=0x0C;//停止接纳过滤,即接纳一切数据包

TXPOWER=0xD5;//发射功率为1dBm

FREQCTRL=0x0B;//挑选通道11

CCACTRL0=0xF8;//引荐值smartRF软件生成

FSCAL1=0x00;

TXFILTCFG=0x09;

AGCCTRL1=0x15;

AGCCTRL2=0xFE;

TXFILTCFG=0x09;

RFIRQM0|=(1《《6);//使能RF数据包接纳中止

IEN2|=(1《《0);//使能RF中止

RFST=0xED;//铲除RF接纳缓冲区ISFLUSHRX

RFST=0xE3;//RF接纳使能ISRXON

}

2.2 剖析

FRMFILT0的默认值为0x0D,该寄存器的最终一位为FRAME_FLITER_EN,该位的具体意义为使能帧过滤,该位在接纳进程中发挥重要的效果。CC2530是契合802.15.4协议的RF芯片,在802.15.4协议中,MAC层有固定的协议格局和不同品种的指令,协议中包含指令类型、源地址和方针地址等重要信息,使能该位CC2530能够主动过滤不需求接纳的无线数据帧,例如无线数据帧的方针地址和CC2530寄存器中的自身地址不契合,那么CC2530能够忽视该无线数据帧且不会触发中止。具体的过滤进程能够检查数据手册,在这里不具体解说。为了完结最简略的使用,制止该位使得CC2530能够接纳恣意无线数据帧。

关于FRMCTRL0,本程序中保留了默认值所以并没有在代码中表现。从网上查找的代码中,绝大多数代码使能了AUTO_ACK标志位,即使得CC2530芯片能够主动应对无线数据帧。从表面上看,CC2530的应对机制能够确保无线通信的可靠性,可是这种应对机制需求遵从802.15.4规范,若使能主动应对,那么CC2530发送的数据包也有必要契合802.15.4规范。为了尽可能的简略,本程序制止了该位。

关于FRMCTRL0,AUTOCRC默以为使能状况,CC2530会主动进行CRC校验的核算宽和析。

smartRF能够协助用于生成若干比较冷门的寄存器的主张值,这些寄存器关系到CC2530无线调试宽和调相关部分,在实践运用的进程中能够采用主张值不做深究。

初始化最终,使能RF接纳终端。并经过RFST寄存器写入清空接纳缓冲区和进入接纳状况指令。

3.发送进程3.1 代码

voidrf_send(char*pbuf,intlen)

{

RFST=0xE3;//RF接纳使能ISRXON

//等候发送状况不活泼而且没有接纳到SFD

while(FSMSTAT1&((1《《1)|(1《《5)));

RFIRQM0&=~(1《《6);//制止接纳数据包中止

IEN2&=~(1《《0);//铲除RF大局中止

RFST=0xEE;//铲除发送缓冲区ISFLUSHTX

RFIRQF1=~(1《《1);//铲除发送完结标志

//填充缓冲区填充进程需求添加2字节,CRC校验主动填充

RFD=len+2;

for(inTI=0;i

{

RFD=*pbuf++;

}

RFST=0xE9;//发送数据包ISTXON

while(!(RFIRQF1&(1《《1)));//等候发送完结

RFIRQF1=~(1《《1);//铲除发送完结标志位

RFIRQM0|=(1《《6);//RX接纳中止

IEN2|=(1《《0);

}

3.2 剖析

发送进程自身不困难,大致可分为侦听SFD铲除信道,封闭接纳中止,填充缓冲区,发动发送并等候发送完结,最终康复接纳中止。在这几个进程中仅有需求阐明的就是填充缓冲区进程,在初始化进程中说到FRMCTRL0寄存器,该寄存器中AUTO_CRC标志位默以为使能状况,阅览数据手册不难发现,CC2530的物理层负载部分第一个字节为长度域,填充实践负载之前需求先填充长度域,而物理层负载在原长度的基础上添加2。长度域数值添加2的原因是因为主动CRC的存在,CRC部分占两个字节CC2530会把这两个字节填充至发送缓冲区。

4.接纳进程

和发送部分略有不同,接纳部分能够分为接纳中止部分和接纳数据帧处理部分。

4.1 代码

#pragmavector=RF_VECTOR

__interrupt

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/346819.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部