基于CC2541藍(lán)牙模塊與單片機(jī)的串口通信
一、CC2541器件概述
CC2541是一款針對(duì)低能耗以及私有2.4GHz應(yīng)用的功率優(yōu)化的真正片載系統(tǒng)(SoC)解決方案。它使得使用低總體物料清單成本建立強(qiáng)健網(wǎng)絡(luò)節(jié)點(diǎn)成為可能。CC2541將領(lǐng)先RF收發(fā)器的出色性能和一個(gè)業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051MCU、系統(tǒng)內(nèi)可編程閃存存儲(chǔ)器、8kBRAM和很多其它功能強(qiáng)大的特性和外設(shè)組合在一起。CC2541非常適合應(yīng)用于需要超低能耗的系統(tǒng)。這由多種不同的運(yùn)行模式指定。運(yùn)行模式間較短的轉(zhuǎn)換時(shí)間進(jìn)一步使低能耗變?yōu)榭赡?/p>
二、CC2541芯片的特性參數(shù)
CC2541是一款針對(duì)藍(lán)牙低能耗以及私有2.4GHz應(yīng)用的功率優(yōu)化的真正片載系統(tǒng)(SoC)解決方案。它使得使用低總體物料清單成本建立強(qiáng)健網(wǎng)絡(luò)節(jié)點(diǎn)成為可能。CC2541將領(lǐng)先RF收發(fā)器的出色性能和一個(gè)業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051MCU、系統(tǒng)內(nèi)可編程閃存存儲(chǔ)器、8kBRAM和很多其它功能強(qiáng)大的特性和外設(shè)組合在一起。CC2541上CC2541非常適合應(yīng)用于需要超低能耗的系統(tǒng)。這由多種不同的運(yùn)行模式指定。運(yùn)行模式間較短的轉(zhuǎn)換時(shí)間進(jìn)一步使低能耗變?yōu)榭赡堋?/p>
如果CC2540上的USB未啟用并且CC2541上的I2C/額外I/O未啟用,那么CC2541與CC2540在6mmx6mm方形扁平無引腳(QFN)40封裝內(nèi)引腳兼容。與CC2540相比,CC2541提供更低RF流耗。CC2541沒有CC2540所具有的USB接口,并在TX模式中提供較低的最大輸出功率CC2541還增加了1個(gè)HWI2C接口。
CC2541與CC2533優(yōu)化RF4CEIEEE802.15.4SoC引腳兼容。CC2541有2個(gè)不同的版本:分別具有128kB和256kB閃存的的CC2541F128/F256。
1、特性
(1)射頻
–2.4GHz藍(lán)牙符合低能耗規(guī)范和私有的RF片載系統(tǒng)
–支持250kbps,500kbps,1Mbps,2Mbps的制器內(nèi)核數(shù)據(jù)速率–出色的鏈路預(yù)算,不使用外部前段而支持長(zhǎng)距離應(yīng)用–高達(dá)0dBm的可編程輸出功率
–出色的接收器靈敏度(1Mbps時(shí)為-94dBm),可選擇性,和阻擋性能
–適合于針對(duì)符合世界范圍內(nèi)的無線電頻率調(diào)節(jié)系統(tǒng):ETSIEN300328和EN3004402類(歐洲),F(xiàn)CCCFR4715部分(美國(guó)),和ARIBSTD-T66(日本)
(2)布局
–極少的外部組件–提供參考設(shè)計(jì)支持
–6mm&mes;6mm方形扁平無引腳(QFN)-40封裝
–與CC2540引腳兼容(當(dāng)不使用USB或者I2C時(shí))(ADC)
(3)低功率
–工作模式RX低至:17.9mA
–工作模式TX(0dBm):18.2mA–功率模式1(4μs喚醒):270μs–功率模式2(睡眠定時(shí)器打開):1μs–功率模式3(外部中斷):0.5μs
(4)工作模式下TPS62730兼容低功率
–RX低至:14.7mA(3V電源)–TX(0dBm):14.3mA(3V電源)
(5)微控制器
–具有代碼預(yù)取功能的高性能和低功率8051微控制器內(nèi)核
–系統(tǒng)內(nèi)可編程閃存,128或者256KB
–在所有功率模式下具有保持功能的8KBRAM
–支持硬件調(diào)試
–擴(kuò)展基帶自動(dòng)化,包括自動(dòng)確認(rèn)和地址解碼
–所有功率模式中對(duì)所有相關(guān)寄存器的保持
(6)外設(shè)
–功能強(qiáng)大的5通道直接內(nèi)存訪問(DMA)
–通用定時(shí)器(1個(gè)16位,2個(gè)8位)
–紅外(IR)生成電路
–具有捕捉功能的32kHz睡眠定時(shí)器
–精確數(shù)字接收到的數(shù)字信號(hào)強(qiáng)度指示器(RSSI)支持
–電池監(jiān)視器和溫度感應(yīng)器
–含8通道和可配置分辨率的12位模數(shù)轉(zhuǎn)換器(ADC)
–高級(jí)加密標(biāo)準(zhǔn)(AES)安全協(xié)處理器
–2個(gè)功能強(qiáng)大的支持幾個(gè)串行協(xié)議的通用異步接收發(fā)器(UART)
–23個(gè)通用I/O引腳(21&mes;4mA,2&mes;20mA)
–I2C接口
–2個(gè)具有LED驅(qū)動(dòng)功能的I/O引腳
–安全裝置定時(shí)器
–集成的高性能比較器(7)開發(fā)工具
–CC2541評(píng)估模塊工具包(CC2541EMK)
–CC2541小型開發(fā)工具包(CC2541DK-MINI)
–SmartRF?軟件
–提供IAR嵌入式Workbench?
2、軟件特性
(1)符合針對(duì)單模式藍(lán)牙低能耗(BLE)解決方案的符合藍(lán)牙4.0協(xié)議的堆棧器
–完全功率優(yōu)化堆棧,包括控制器和主機(jī)
–GAP-中心設(shè)備,外設(shè),或者廣播器(包括組合角色)
–屬性協(xié)議(ATT)/通用屬性配置文件(GATT)
–客戶端和服務(wù)器
–L2CAP說明
(2)示例應(yīng)用和配置文件
–針對(duì)GAP中心和外圍作用的一般應(yīng)用
–距離臨近,加速計(jì),簡(jiǎn)單關(guān)鍵字,和電池GATT服務(wù)
–BLE軟件棧內(nèi)支持更多應(yīng)用
(3)多重配置選項(xiàng)
–單芯片配置,允許應(yīng)用運(yùn)行在CC2541上
–用于運(yùn)行在一個(gè)外部微處理器接口
–BTool-用于評(píng)估、開發(fā)和測(cè)試的視窗(Windows)PC應(yīng)用
3、應(yīng)用范圍
?2.4GHz藍(lán)牙低能耗系統(tǒng)
?私有的2.4GHz系統(tǒng)
?人機(jī)接口器件(鍵盤,鼠標(biāo),遙控)
?體育和休閑設(shè)備1個(gè)HWI2C接口。
?移動(dòng)電話附件?消費(fèi)類電子產(chǎn)品
4、含有TPS62730的CC2541
?TPS62730是一款具有旁通模式的2MHz降壓轉(zhuǎn)換器
?延長(zhǎng)電池壽命高達(dá)20%
?在所有工作模式下減少的電流
?30nA旁通模式電流以支持低功率模式
?RF性能并未改變
?小型封裝允許小型解決方案尺寸
?CC2541可控
三、CC2541器件的用途
符合針對(duì)單模式藍(lán)牙低能耗(BLE)解決方案的符合4.0協(xié)議的堆棧
完全功率優(yōu)化堆棧,包括控制器和主機(jī)GAP-中心設(shè)備,外設(shè),或者廣播器(包括組合角色)屬性協(xié)議(ATT)/通用屬性配置文件(GATT)–客戶端和服務(wù)器對(duì)稱式對(duì)多重處理(SMP)-AES-128加密和解密L2CAP
示例應(yīng)用和配置文件針對(duì)GAP中心和外圍作用的一般應(yīng)用距離臨近,加速計(jì),簡(jiǎn)單關(guān)鍵字,和電池GATT服務(wù)BLE軟件棧內(nèi)支持更多應(yīng)用
多重配置選項(xiàng)單芯片配置,允許應(yīng)用運(yùn)行在CC2541上用于運(yùn)行在一個(gè)外部微處理器上的網(wǎng)絡(luò)處理器接口
BTool-用于評(píng)估、開發(fā)和測(cè)試的視窗(Windows)PC應(yīng)用
四、基于單片機(jī)的藍(lán)牙硬件接口設(shè)計(jì)
1、單片機(jī)C8051簡(jiǎn)介
微控制器(MCu)是藍(lán)牙應(yīng)用系統(tǒng)的核心,它的選擇將直接影響到系統(tǒng)的性能。C8051F120是Cygnal公司的一種與8051兼容的高速SOC單片機(jī),它具有高速CIP.51內(nèi)核、靈活的I/O交叉開關(guān)、先進(jìn)的時(shí)鐘系統(tǒng)、JTAG系統(tǒng)調(diào)試接口以及多源復(fù)位系統(tǒng)它性能卓越,內(nèi)核采用流水線結(jié)構(gòu),速度可達(dá)100MIPS,比普通的51快40倍,而且在資源豐富、體積小、功耗低、集成度高且調(diào)試方便。
下面列出了它的一些主要特性:
(1)高速、流水線結(jié)構(gòu)的8051兼容的CIP.51內(nèi)核;
(2)真正8位500ksps的ADC,帶PGA和8通道模擬多路開關(guān);
(3)2周期的16&TImes;16的乘法和累加引擎;
(4)8448(8K+256)字節(jié)的片內(nèi)RAM;
(5)可尋址64K字節(jié)地址空間的外部數(shù)據(jù)存儲(chǔ)器接口;
(6)硬件實(shí)現(xiàn)的SPI、SMBus/12C和兩個(gè)UART串行接El[10l;
(7)5個(gè)通用的16位定時(shí)器;
(8)具有6個(gè)捕捉/比較模塊的可編程計(jì)數(shù)器/定時(shí)器陣列;
(9)FLASH存儲(chǔ)器具有在系統(tǒng)中重新編程能力,可用于非易失性數(shù)據(jù)存儲(chǔ),并允許現(xiàn)場(chǎng)更新固件;
(10)片內(nèi)JTAG調(diào)試電路允許非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)測(cè)試;
(11)可在工業(yè)溫度范NI(.45“C一+85。c)N用2.7V~3.6V的電壓工作。
(12)C8051F120為100腳TQFP封裝。
2、單片機(jī)與藍(lán)牙模塊的連接
目前,最流行的HCI是通過通用異步收發(fā)器(UART)和通信串行總線(USB)連接的。其中UART通常更受青睞,因?yàn)槠湫阅芎蛿?shù)據(jù)吞吐率水平與USB接口相當(dāng),且傳輸協(xié)議較為簡(jiǎn)單,減少了軟件開銷,是一種更為經(jīng)濟(jì)高效的硬件解決方案。
①藍(lán)牙模塊電源線
藍(lán)牙模塊的電壓管理器共有4個(gè)輸入,分別是Vcc(12)、MASTER(28)、SW(27)和SW1(23)。Vcc提供電源電壓,典型值是3.3V;MASTER(28)為UART提供一個(gè)獨(dú)立的電源回路,可以與單片機(jī)邏輯接口相同,可以連接到Vcc;SW(27)信號(hào)控制內(nèi)部電壓穩(wěn)壓器導(dǎo)通或關(guān)斷。將Vcc(12)、MASTER(28)、SW(27)和SW1(23)連接在一起使用時(shí),不需要考慮藍(lán)牙模塊的加電順序。
圖1:藍(lán)牙模塊的外圍電路
②數(shù)據(jù)線和信號(hào)線
單片機(jī)C8051F120具有兩個(gè)UART,在此選用UART0。在編程時(shí)候可通過交叉開關(guān)設(shè)置,將UART0分配到兩個(gè)管腳上,例如P3.1(TXD)和P3.0(RXD),分別與藍(lán)牙模塊的RXD和TXD相連。另外,單片機(jī)端需另外分配兩個(gè)管腳,例如P1.2和P1.3,分別作為流量控制信號(hào)CTS和RTS,分別與藍(lán)牙模塊的RTS和CTS相連。若CTS為1則允許對(duì)方發(fā)送,若CTS為0則禁止對(duì)方發(fā)送。
圖2:?jiǎn)纹瑱C(jī)的外圍電路
③藍(lán)牙模塊天線
藍(lán)牙模塊ANT管腳連接到50歐的天線,天線的電壓駐波比小于2:1。在本課題的實(shí)驗(yàn)板的設(shè)計(jì)中,單片機(jī)和藍(lán)牙模塊是焊接在一個(gè)PCB板上的。由于藍(lán)牙模塊采用平面封裝,而且引腳很密集,要想直接焊接到PCB板上很困難,而且天線也很難焊接上去。因而自行設(shè)計(jì)了一個(gè)輔助電路板,先將藍(lán)牙模塊焊接到此輔助電路板上,然后將要用到的藍(lán)牙模塊的部分引腳引出來,通過插座將藍(lán)牙模塊連接到PCB板上,這樣就使得藍(lán)牙模塊的裝卸變得很方便。輔助電路板引出的管腳有GND.地線、VCC.3.3V、數(shù)據(jù)收發(fā)線RXD和TXD、流控線RTS和CTS、使能信號(hào)線.EN、復(fù)位信號(hào)線.RESET,其中BTEN即圖3中的ON信號(hào),實(shí)際應(yīng)用中將它與VCC接在一起,其他的與單片機(jī)相連。
圖3:CC2541與單片機(jī)的連接電路
五、軟件設(shè)計(jì)
單片機(jī)通過UART控制藍(lán)牙模塊時(shí),最底層的數(shù)據(jù)傳輸是通過UART實(shí)現(xiàn)的。因而需要實(shí)現(xiàn)單片機(jī)UART接口函數(shù)來完成最基本的字節(jié)級(jí)的數(shù)據(jù)發(fā)送和接收。UART即通用異步通信接收發(fā)送器,它是一種同步/異步傳輸?shù)拇薪涌?,工作在同步傳輸?shù)臑榘腚p工方式,而工作在異步傳輸?shù)臑槿p工方式。單片機(jī)的UART用一個(gè)SFR(且I]SBUF)的地址可以訪問發(fā)送寄存器和接收寄存器,并允許在軟件尚未讀取前一個(gè)接收字節(jié)的情況下,開始接收第2個(gè)輸入數(shù)據(jù)字節(jié)。C8051F120的UART工作模式有模式O、模式1、模式2、模式3共4種,其中模式0是同步半雙工方式,其余全為異步全雙工方式。
相關(guān)程序如下:
#include《ioCC2540.h》
#include《reg52.h》
#include《intrins.h》
unsignedchartmp;
unsignedintc=0;
sbitled1=P2^0;//指示燈0
sbitled2=P2^1;//指示燈1
sbitled3=P2^3;//指示燈3
voidinit();//串口初始化
voidsend(unsignedchara);//單字節(jié)發(fā)送函數(shù)
voidctrl();//接收處理函數(shù)
voidmain(){
init();while(1)
{
if(RI==1)//是否有數(shù)據(jù)到來
{
RI=0;
tmp=SBUF;//暫存接收到的數(shù)據(jù)
ctrl();
}
}
voidinit()//串口初始化
{
ES=0;//關(guān)中斷
SCON=0x50;//REN=1允許串行接受狀態(tài),串口工作模式1,10
//位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,
//無奇偶校驗(yàn)),波特可變
TMOD=0x20;//定時(shí)器1工作于方式2,8位自動(dòng)重載模式,用
//于產(chǎn)生波特率
TH1=TL1=0xFD;//波特率9600(本次測(cè)試采用晶振為11.0592)
PCON&=0x7f;//波特率不倍增
TR1=1;//定時(shí)器1開始工作,產(chǎn)生波特率
//發(fā)送標(biāo)志位置1
TI=0;//接收標(biāo)志位置0
RI=0;
EA=0;
ES=1;
led1=0;//初始化設(shè)置3個(gè)指示燈全亮
led2=0;
led3=0;
}
voidsend(unsignedchara)//單字節(jié)數(shù)據(jù)發(fā)送
{
//注意:若單片機(jī)TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測(cè)試需要接上拉電阻
TI=0;
SBUF=a;
while(TI==0);
TI=0;
if(c%2)//發(fā)送指示燈標(biāo)志,每接收一次,此燈亮滅交替
led3=1;
else
led3=0;
c++;
}
voidctrl()//接收處理函數(shù)
{
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);
}