基于CC2541蓝牙模块与单片机的串口通信讲述.docx
《基于CC2541蓝牙模块与单片机的串口通信讲述.docx》由会员分享,可在线阅读,更多相关《基于CC2541蓝牙模块与单片机的串口通信讲述.docx(17页珍藏版)》请在冰豆网上搜索。
基于CC2541蓝牙模块与单片机的串口通信讲述
基于CC2541蓝牙模块与单片机的串口通信
摘要
蓝牙技术作为一种无线数据与语音通信的开放性全球规范,可提供低功耗、短距离的无线空中接口,在各种固定与移动设备之间实现无线通信。
在移动通信、无线数据采集、无线遥控与遥测、计算机网络及自动控制等多种领域,蓝牙技术都有着广泛的应用。
蓝牙协议规范具有多个层次,完整的蓝牙协议栈的开发是一项很复杂的工程,而在大多数嵌入式应用中,只是需要实现基本的无线数据传输功能,并不需要实现全部的蓝牙协议栈。
针对此类应用,若是能提供一套实用的蓝牙无线接口、实现一个通用的无线数据传输模块,就可以比较有效地缩短开发周期,降低开发成本。
蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接,现在已经成为IEEE802.15标准,得到全球上万家厂商支持。
本文通过对美国德州仪器半导体公司(TI)开发的CC2541蓝牙模块与51单片机搭建电路实现无线通信技术。
BLE(BluetoothLowEnergy),蓝牙4.0标准里的一个子集,蓝牙4.0分为两部分,一个是能够兼容传统蓝牙的高速部分,另外就是这里的BLE,的两大显著特点:
BLE功耗低,速率低。
所以你就别打算用BLE来做音频传输或者文件传输了,目前BLE最大的传输速率只能达到4~5K字节/每秒。
BLE协议栈,蓝牙4.0里的BLE,只是一个协议规范,而BLE协议栈则是该协议的代码实现。
蓝牙组织SIG,只负责制定协议,而协议如何实现,则需要各个芯片公司完成。
可以这样理解,BLE协议栈是芯片公司预先编好的源码或者库。
关键词:
蓝牙单片机通信BLE4.0
1.绪论
1.背景介绍
蓝牙技术的最初倡导者是五家世界著名的计算机和通信公司:
爱立信Ericsson、国际商用机器IBM、英特尔Intel、诺基亚NoMa和东芝Toshiba。
1998年5月,以爱立信为首,此五家IT巨人共同提出了一种近距离无线数字通信的技术标准,目标是实现最高传输速率可达1Mb/s(有效传输速率为720Kb/s),最大传输距离为10m的无线通信技术,即蓝牙技术,并成立了国际化组织蓝牙SIG(SpecialInterestGroup),致力于蓝牙规范的制定和蓝牙技术在全球范围内的推广。
蓝牙通信有很多优点,首先是低功耗,以BLE4.0为例,一节钮扣电池在静态工作状态可以支持一年;其次是低成本,TI公司的CC2540蓝牙SOC方案芯片出售价仅1美元,可以让人们低廉使用蓝牙技术;再次是开放性,2.4GHz的频段全球开放,没有政府监管;最后是适合时代潮流,现在是手机的时代,蓝牙技术本来就为它而生。
蓝牙4.0协议是2010年6月由SIG(SpecialInterestGroup)发布的最新标准,它有2种模式:
BLE(Bluetoothlowenergy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);BR/EDR(BasicRate/EnhancedDataRate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机)。
目前,苹果公司的iPhone4S、iPhone5、miniPad和iPad3;小米手机2;三星公司的GalaxySIII和NoteII;HTCONE系列等移动设备都支持蓝牙4.0
CC2540/CC2541,美国德州仪器半导体公司(简称TI)的BLE芯片,TI实现的BLE
协议栈同样是ble协议的代码实现,这些BLE代码正是运行在CC2540/CC2541芯片上,简单的说CC254x就是一颗带有蓝牙功能的51单片机,其他单片机有的资源,例如定时器,UART,SPI,ADC,GPIO,USB(CC2540专有),I2C(CC2541专有)等等,CC254x也都有,而BLE协议栈也就是一些复杂一点的C语言源码
2.硬件设备
CC254x的应用非常广,三种金典应用:
1串口透传,2穿戴式设备,3PC上的BLE适配器,这样就对应了三种设备,带有带串口的SmartRF开发板(用来开发大部分的应用),带有三轴加速度计的Keyfob防丢器开发板(用来开发穿戴式设备),最后是CC2540USBdongle,可以直接插在USB口上(开发BLE适配器或者虚拟串口等应用)。
而且TI的BLE协议栈例程,也是建立在这三种设备上。
2.1SmartRF开发板
SmartRF开发板兼容TI官方的SmartRF05EB开发板,TI的BLE协议栈里提供的大部分例程,均基于该开发板创建,我们除了升级了LCD为12864外,其余完全兼容,TI协议栈例程可以直接在我们的SmartRF上运行,这一点非常重要,因为TI经常有版本更新或者新的例程出来。
2.2Keyfob开发板
Keyfob开发板带有一个三轴加速度计和一个蜂鸣器,除了可以开发防丢器外,还有更多的想象空间:
计步器、运动检测等等。
和SmartRF开发板一样,采用的也是底板分离的设计,核心板和SmartRF相同(Keyfob默认发CC2541核心板,CC2541版本的keyfob资源更多)。
Keyfob的反面有一个型号为CR2032的纽扣电池座。
我们采用的电池座和TI的Sensortag开发板的质量一样,厚实、耐用。
2.3CC-Debugger仿真器
CC254x不支持串口下载,所以只能通过CC-Debugger烧写,除了烧写功能,也可以在IAR开发软件里,通过CC-Debugger连接芯片在线调试你开发的程序,单步运行、打断点等,所以又叫仿真器。
TI官方开发板配套使用的全部是CC-Debugger仿真器
3.软件环境
IARfor8051开发环境,FlashProgrammer固件烧写软件
2.CC2541芯片的特性参数
CC2541是一款针对蓝牙低能耗以及私有2.4GHz应用的功率优化的真正片载系统(SoC)解决方案。
它使得使用低总体物料清单成本建立强健网络节点成为可能。
CC2541将领先RF收发器的出色性能和一个业界标准的增强型8051MCU、系统内可编程闪存存储器、8kBRAM和很多其它功能强大的特性和外设组合在一起。
CC2541上CC2541非常适合应用于需要超低能耗的系统。
这由多种不同的运行模式指定。
运行模式间较短的转换时间进一步使低能耗变为可能。
如果CC2540上的USB未启用并且CC2541上的I2C/额外I/O未启用,那么CC2541与CC2540在6mmx6mm方形扁平无引脚(QFN)40封装内引脚兼容。
与CC2540相比,CC2541提供更低RF流耗。
CC2541没有CC2540所具有的USB接口,并在TX模式中提供较低的最大输出功率CC2541还增加了1个HWI2C接口。
CC2541与CC2533优化RF4CEIEEE802.15.4SoC引脚兼容。
CC2541有2个不同的版本:
分别具有128kB和256kB闪存的的CC2541F128/F256。
1特性
(1)射频
–2.4GHz蓝牙符合低能耗规范和私有的RF片载系统
–支持250kbps,500kbps,1Mbps,2Mbps的制器内核数据速率
–出色的链路预算,不使用外部前段而支持长距离应用
–高达0dBm的可编程输出功率
–出色的接收器灵敏度(1Mbps时为-94dBm),可选择性,和阻挡性能
–适合于针对符合世界范围内的无线电频率调节系统:
ETSIEN300328和EN3004402类
(欧洲),FCCCFR4715部分(美国),和ARIBSTD-T66(日本)
(2)布局
–极少的外部组件
–提供参考设计支持
–6mm×6mm方形扁平无引脚(QFN)-40封装
–与CC2540引脚兼容(当不使用USB或者I2C时)(ADC)
(3)低功率
–工作模式RX低至:
17.9mA
–工作模式TX(0dBm):
18.2mA
–功率模式1(4μs唤醒):
270μs
–功率模式2(睡眠定时器打开):
1μs
–功率模式3(外部中断):
0.5μs
(4)工作模式下TPS62730兼容低功率
–RX低至:
14.7mA(3V电源)
–TX(0dBm):
14.3mA(3V电源)
(5)微控制器
–具有代码预取功能的高性能和低功率8051微控制器内核
–系统内可编程闪存,128或者256KB
–在所有功率模式下具有保持功能的8KBRAM
–支持硬件调试
–扩展基带自动化,包括自动确认和地址解码
–所有功率模式中对所有相关寄存器的保持
(6)外设
–功能强大的5通道直接内存访问(DMA)
–通用定时器(1个16位,2个8位)
–红外(IR)生成电路
–具有捕捉功能的32kHz睡眠定时器
–精确数字接收到的数字信号强度指示器(RSSI)支持
–电池监视器和温度感应器
–含8通道和可配置分辨率的12位模数转换器(ADC)
–高级加密标准(AES)安全协处理器
–2个功能强大的支持几个串行协议的通用异步接收发器(UART)
–23个通用I/O引脚(21×4mA,2×20mA)
–I2C接口
–2个具有LED驱动功能的I/O引脚
–安全装置定时器
–集成的高性能比较器
(7)开发工具
–CC2541评估模块工具包(CC2541EMK)
–CC2541小型开发工具包(CC2541DK-MINI)
–SmartRF™软件
–提供IAR嵌入式Workbench™
2.软件特性
(1)符合针对单模式蓝牙低能耗(BLE)解决方案的符合蓝牙4.0协议的堆栈器
–完全功率优化堆栈,包括控制器和主机
–GAP-中心设备,外设,或者广播器(包括组合角色)
–属性协议(ATT)/通用属性配置文件(GATT)–客户端和服务器
–L2CAP说明
(2)示例应用和配置文件
–针对GAP中心和外围作用的一般应用
–距离临近,加速计,简单关键字,和电池GATT服务
–BLE软件栈内支持更多应用
(3)多重配置选项
–单芯片配置,允许应用运行在CC2541上
–用于运行在一个外部微处理器接口
–BTool-用于评估、开发和测试的视窗(Windows)PC应用
3.应用范围
•2.4GHz蓝牙低能耗系统
•私有的2.4GHz系统
•人机接口器件(键盘,鼠标,遥控)
•体育和休闲设备1个HWI2C接口。
•移动电话附件
•消费类电子产品
4.含有TPS62730的CC2541
•TPS62730是一款具有旁通模式的2MHz降压转换器
•延长电池寿命高达20%
•在所有工作模式下减少的电流
•30nA旁通模式电流以支持低功率模式
•RF性能并未改变
•小型封装允许小型解决方案尺寸
•CC2541可控
3.基于单片机的蓝牙硬件接口设计
1.单片机C8051简介
微控制器(MCu)是蓝牙应用系统的核心,它的选择将直接影响到系统的性能。
C8051F120是Cygnal公司的一种与8051兼容的高速SOC单片机,它具有高速CIP.51内核、灵活的I/O交叉开关、先进的时钟系统、JTAG系统调试接口以及多源复位系统它性能卓越,内核采用流水线结构,速度可达100MIPS,比普通的51快40倍,而且在资源丰富、体积小、功耗低、集成度高且调试方便。
下面列出了它的一些主要特性:
(1)高速、流水线结构的8051兼容的CIP.51内核;
(2)真正8位500ksps的ADC,带PGA和8通道模拟多路开关;
(3)2周期的16×16的乘法和累加引擎;
(4)8448(8K+256)字节的片内RAM;
(5)可寻址64K字节地址空间的外部数据存储器接口;
(6)硬件实现的SPI、SMBus/12C和两个UART串行接El[10l;
(7)5个通用的16位定时器;
(8)具有6个捕捉/比较模块的可编程计数器/定时器阵列;
(9)FLASH存储器具有在系统中重新编程能力,可用于非易失性数据存储,并允许现场更新固件;
(10)片内JTAG调试电路允许非侵入式(不占用片内资源)、全速、在系统测试;
(11)可在工业温度范NI(.45"C一+85。
c)N用2.7V~3.6V的电压工作。
(12)C8051F120为100脚TQFP封装。
2.单片机与蓝牙模块的连接
目前,最流行的HCI是通过通用异步收发器(UART)和通信串行总线(USB)连接的。
其中UART通常更受青睐,因为其性能和数据吞吐率水平与USB接口相当,且传输协议较为简单,减少了软件开销,是一种更为经济高效的硬件解决方案。
①蓝牙模块电源线
蓝牙模块的电压管理器共有4个输入,分别是Vcc(12)、MASTER(28)、SW(27)和SW1(23)。
Vcc提供电源电压,典型值是3.3V;MASTER(28)为UART提供一个独立的电源回路,可以与单片机逻辑接口相同,可以连接到Vcc;SW(27)信号控制内部电压稳压器导通或关断。
将Vcc(12)、MASTER(28)、SW(27)和SW1(23)连接在一起使用时,不需要考虑蓝牙模块的加电顺序。
图1:
蓝牙模块的外围电路
②数据线和信号线
单片机C8051F120具有两个UART,在此选用UART0。
在编程时候可通过交叉开关设置,将UART0分配到两个管脚上,例如P3.1(TXD)和P3.0(RXD),分别与蓝牙模块的RXD和TXD相连。
另外,单片机端需另外分配两个管脚,例如P1.2和P1.3,分别作为流量控制信号CTS和RTS,分别与蓝牙模块的RTS和CTS相连。
若CTS为1则允许对方发送,若CTS为0则禁止对方发送。
图2:
单片机的外围电路
③蓝牙模块天线
蓝牙模块ANT管脚连接到50欧的天线,天线的电压驻波比小于2:
1。
在本课题的实验板的设计中,单片机和蓝牙模块是焊接在一个PCB板上的。
由于蓝牙模块采用平面封装,而且引脚很密集,要想直接焊接到PCB板上很困难,而且天线也很难焊接上去。
因而自行设计了一个辅助电路板,先将蓝牙模块焊接到此辅助电路板上,然后将要用到的蓝牙模块的部分引脚引出来,通过插座将蓝牙模块连接到PCB板上,这样就使得蓝牙模块的装卸变得很方便。
辅助电路板引出的管脚有GND.地线、VCC.3.3V、数据收发线RXD和TXD、流控线RTS和CTS、使能信号线.EN、复位信号线.RESET,其中BTEN即图3中的ON信号,实际应用中将它与VCC接在一起,其他的与单片机相连。
图3:
CC2541与单片机的连接电路
4.软件设计
单片机通过UART控制蓝牙模块时,最底层的数据传输是通过UART实现的。
因而需要实现单片机UART接口函数来完成最基本的字节级的数据发送和接收。
UART即通用异步通信接收发送器,它是一种同步/异步传输的串行接口,工作在同步传输的为半双工方式,而工作在异步传输的为全双工方式。
单片机的UART用一个SFR(且I]SBUF)的地址可以访问发送寄存器和接收寄存器,并允许在
软件尚未读取前一个接收字节的情况下,开始接收第2个输入数据字节。
C8051F120的UART工作模式有模式O、模式1、模式2、模式3共4种,其中模式0是同步半双工方式,其余全为异步全双工方式。
相关程序如下:
#include
#include
#include
unsignedchartmp;
unsignedintc=0;
sbitled1=P2^0;//指示灯0
sbitled2=P2^1;//指示灯1
sbitled3=P2^3;//指示灯3
voidinit();//串口初始化
voidsend(unsignedchara);//单字节发送函数
voidctrl();//接收处理函数
voidmain()
{
init();
while
(1)
{
if(RI==1)//是否有数据到来
{
RI=0;
tmp=SBUF;//暂存接收到的数据
ctrl();
}
}
}
voidinit()//串口初始化
{
ES=0;//关中断
SCON=0x50;//REN=1允许串行接受状态,串口工作模式1,10
//位UART(1位起始位,8位数据位,1位停止位,
//无奇偶校验),波特可变
TMOD=0x20;//定时器1工作于方式2,8位自动重载模式,用
//于产生波特率
TH1=TL1=0xFD;//波特率9600(本次测试采用晶振为11.0592)
PCON&=0x7f;//波特率不倍增
TR1=1;//定时器1开始工作,产生波特率
//发送标志位置1
TI=0;//接收标志位置0
RI=0;
EA=0;
ES=1;
led1=0;//初始化设置3个指示灯全亮
led2=0;
led3=0;
}
voidsend(unsignedchara)//单字节数据发送
{
//注意:
若单片机TXD(P3.1)无上拉能力,必须在P3.1端接上拉电阻。
本次测试需要接上拉电阻
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2)//发送指示灯标志,每接收一次,此灯亮灭交替
led3=1;
else
led3=0;
c++;
}
voidctrl()//接收处理函数
{
switch(tmp)
{
case'1':
led1=1;//收到字符1,指示灯0灭
send(tmp);
break;
case'2':
//收到字符2,指示灯1灭
led2=1;
send(tmp);
break;
case'3':
//收到字符3,指示灯0、1亮
led1=0;
led2=0;
send(tmp);
break;
case'4':
//收到字符4,指示灯0、1灭
led1=1;
led2=1;
send(tmp);
break;
case'5':
//收到字符5,指示灯3亮
led3=0;
send(tmp);
break;
default:
//其他,灯全灭
led1=1;
led2=1;
led3=1;
send(tmp);
}
}
5.总结
通过此次课程设计,使我更加扎实的掌握了有关单片机和微处理器方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
虽然这次课程是那么短暂的2周时间,我感觉到这些天我的所学胜过我这一学期所学,这次任务原则上是设计,其实就是一次大的作业,是让我对课本知识的巩固和对基本理论知识的熟悉和应用,期间遇到了不少问题和困难,使我做事的耐心和仔细程度得以提高。
课程设计是培训学生运用本专业所学的理论知识和专业知识来分析解决实际问题的重要教学环节,是对三年所学知识的复习和巩固。
同样,也促使了同学们的相互探讨,相互学习。
因此,我们必须认真、谨慎、踏实、一步一步的完成设计。
课程设计是一个重要的教学环节,通过课程设计使我们了解到一些实际与理论之间的差异。
通过课程设计不仅可以巩固专业知识,为以后的工作打下了坚实的基础,而其还可以培养和熟练使用资料,运用工具书的能力,把我们所学的课本知识与实践结合起来,起到温故而知新的作用。
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门设计课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
总之,这次课程设计使我收获很多、学会很多、比以往更有耐心很多。
感谢学校及老师给我们这次课程设计的机会,最真挚的感谢我们的辅导老师,在设计过程中,老师精心的辅导和不厌其烦地的态度才使得我们以顺利的完成这次设计,他那无私的奉献的精神照耀着我们对学习的热爱,同时也增加我们对知识的追求和欲望度。