隨著人民生活水平的提高和生活方式的轉(zhuǎn)變,餐飲業(yè)具有巨大的投資市場(chǎng),被稱為中國(guó)的黃金產(chǎn)業(yè)。無線電子點(diǎn)菜系統(tǒng)是無線通信技術(shù)的典型應(yīng)用,把無線技術(shù)用于餐飲業(yè)將會(huì)極大提高餐館的工作效率和服務(wù)質(zhì)量。
論文給出了無線電子點(diǎn)菜系統(tǒng)的完整的硬件平臺(tái)的設(shè)計(jì)和實(shí)現(xiàn)方案。整個(gè)系統(tǒng)有主機(jī)端和移動(dòng)端兩部分組成,無線通信的雙方依托一定的硬件平臺(tái),按照約定好的協(xié)議來實(shí)現(xiàn)數(shù)據(jù)交換。設(shè)計(jì)的硬件平臺(tái)時(shí),首先詳細(xì)介紹了平臺(tái)將要用到的一些芯片,然后使用Protel 99 SE設(shè)計(jì)出了系統(tǒng)的原理圖和PCB(Print Circuit Broad,印刷電路板)圖;在設(shè)計(jì)的硬件平臺(tái)的基礎(chǔ)上,依據(jù)所用芯片的編程原則,在Windows環(huán)境下,以C51語言為編程語言,開發(fā)出了無線通信系統(tǒng)的驅(qū)動(dòng)程序來實(shí)現(xiàn)雙方約定的通信協(xié)議。文中還附帶簡(jiǎn)要介紹了用到的軟件開發(fā)工具,以及系統(tǒng)的局限性,并提出了進(jìn)一步改進(jìn)的方案。
為了使整個(gè)系統(tǒng)更加完善,用Visual C++ 6.0開發(fā)了串口調(diào)試工具,實(shí)現(xiàn)了將遠(yuǎn)端數(shù)據(jù)發(fā)送到計(jì)算機(jī)并以窗口形式顯示和通過窗口形式將計(jì)算機(jī)上的數(shù)據(jù)發(fā)送到遠(yuǎn)端,基本達(dá)到了論文的設(shè)計(jì)目的。
關(guān)鍵詞 無線通信,ZigBee,單片機(jī),nRF2401
目 錄
摘 要 IV
ABSTRACT V
第一章 緒論 1
1.1 研究背景和意義 1
1.3 論文的研究?jī)?nèi)容 4
1.4 內(nèi)容安排 4
第二章 ZIGBEE協(xié)議分析 6
2.1 ZIGBEE協(xié)議框架 6
2.2 ZIGBEE協(xié)議優(yōu)缺點(diǎn)和應(yīng)用前景 8
2.2.1 ZigBee協(xié)議的優(yōu)點(diǎn) 9
2.2.2 ZigBee協(xié)議存在的問題及解決方案 9
2.2.3 ZigBee協(xié)議應(yīng)用前景 10
2.3基于ZIGBEE協(xié)議的芯片 10
第三章 基于ZIGBEE協(xié)議的硬件系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn) 14
3.1 STC89C58RD+單片機(jī)概述 14
3.2 開發(fā)板的各個(gè)組成部分原理圖以及功能 15
3.2.1 單片機(jī)最小系統(tǒng)組成電路 15
3.2.2 串行口電平轉(zhuǎn)換部分 16
3.2.3 LED部分 17
3.2.4 開發(fā)板和無線數(shù)據(jù)傳輸模塊接口部分 17
3.2.5 鍵盤部分 18
3.3 無線數(shù)據(jù)傳輸模塊 19
3.4 無線數(shù)據(jù)傳輸模塊和開發(fā)板的PCB圖設(shè)計(jì) 20
3.4.1 開發(fā)板的PCB圖 20
3.4.2 無線數(shù)據(jù)傳輸模塊的PCB圖 22
第四章 硬件驅(qū)動(dòng)程序和串行口調(diào)試工具 24
4.1 硬件驅(qū)動(dòng)程序 24
4.1.1 主機(jī)端硬件驅(qū)動(dòng)程序 24
4.1.2 移動(dòng)端驅(qū)動(dòng)程序 28
4.2 串行口調(diào)試工具 28
4.2.1串行通信的基本原理 28
4.2.2程序設(shè)計(jì)原理 30
第五章 總結(jié)與展望 37
5.1 全文總結(jié) 37
5.2 研究展望 38
致 謝 39
參考文獻(xiàn) 40
附錄 41
摘 要
Abstract
Along with the enhancement of the level of the people’s lives and the transformation of the lifestyle, the dining industry which is called gold industry in China has the huge investment market. The wireless electronic ordering food system is the typical use of the technology of wireless communication. Using the technology of wireless communication in the dining industry will largely improve the working efficiency and the grade of service.
The present paper brings up the plan of the hardware design of the the wireless electronic ordering food system and how to realize. The overall system is made up of two parts, one is the main end and the other is the mobile end. Both sides of wireless correspondence depend on certain hardware platforms. They exchange data according to the protocol which both sides have agreed on before, and the data is transformed in specific frame form. When designing the hardware platform, first analyzes the CMOS chips that will be used in the system. Then, the paper uses Protel 99 SE to design the principle picture and the PCB picture of the system. In this foundation, according to the programming rules of the CMOS chips used in the system, the paper exploits the driving program of the system using C51 programming language in the Windows operating system. By the way, this paper also briefly introduces the software development kits which will be used next, analyzes the limitations of system, and also proposes how to improve it.
In order to make the entire system more comprehensive,the paper also exploits the serial debugging tool in Visual C++ 6.0 to display the data from remote end in the window on computer and send data to remote end in the window form. This basically achieves the goal.
KEY WORLD wireless communication, ZigBee,Single-Chip Microcomputer, nRF2401
第一章 緒論
1.1 研究背景和意義
人類利用無線通信技術(shù)的歷史已經(jīng)有幾千年了,古時(shí)候用的烽火臺(tái)就是最原始的無線通信。但這時(shí)候的無線通信技術(shù)還只是處于萌芽階段,只有到19世紀(jì)末意大利人馬可尼發(fā)明無線電報(bào)開始,人類才真正開始大規(guī)模地利用無線通信技術(shù)[1]。近數(shù)十年來隨著計(jì)算機(jī)技術(shù)和電子技術(shù)的發(fā)展,無線通信技術(shù)更是以日新月異的速度向前發(fā)展,它也成為了通信領(lǐng)域的一個(gè)重點(diǎn)研究方向。
現(xiàn)代的無線通信技術(shù)是建立在硬件電路的基礎(chǔ)上的,因此微電子技術(shù)[2]的發(fā)展直接制約著無線通信技術(shù)的發(fā)展?;仡?a target="_blank">集成電路的發(fā)展歷程,我們可以看到,自發(fā)明集成電路至今40多年以來,”從電路集成到系統(tǒng)集成”這句話是對(duì)IC產(chǎn)品從SSI(Small Scale Integrated,小規(guī)模集成電路)到VLSI(Very Large Scale Integrated超大規(guī)模集成電路)今天特大規(guī)模集成電路發(fā)展過程的最好總結(jié),即整個(gè)集成電路產(chǎn)品的發(fā)展經(jīng)歷了從傳統(tǒng)的板上系統(tǒng)(System-on-board)到片上系統(tǒng)(System-on-a-chip)的過程。隨著集程度的提高,芯片的體積能耗和成本在逐步降低。這也使電子產(chǎn)品向便攜式和低端市場(chǎng)發(fā)展。
雖然微電子的發(fā)展歷史已經(jīng)有半個(gè)多世紀(jì),但是射頻芯片[1][2]的發(fā)展卻是近幾年的事。從分類上來看,射頻芯片屬于專用集成電路。目前國(guó)際上有很多專門生產(chǎn)射頻芯片的公司,例如Nordic公司和Chipcon公司。這些芯片一般工作在免費(fèi)頻段,采用專門的調(diào)制解調(diào)技術(shù),內(nèi)部集成了很多電路。像Nordic公司的NRF2401芯片,它是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM(Industry Science medicine,工業(yè)、科學(xué)、醫(yī)學(xué))頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過程序進(jìn)行配置。芯片能耗非常低,以-5dBm的功率發(fā)射時(shí),工作電流只有10.5mA,接收時(shí)工作電流只有18mA,多種低功率工作模式,節(jié)能設(shè)計(jì)更方便。其DuoCeiverTM技術(shù)使nRF2401可以使用同一天線,同時(shí)接收兩個(gè)不同頻道的數(shù)據(jù)。
無線電子點(diǎn)菜系統(tǒng)是無線通信技術(shù)的一個(gè)典型應(yīng)用。近些年來,隨著人民生活水平的提高和生活方式的轉(zhuǎn)變,餐飲業(yè)具有巨大的投資市場(chǎng),被稱為中國(guó)的黃金產(chǎn)業(yè)。人們?cè)谙M(fèi)過程中對(duì)服務(wù)質(zhì)量也有了更高的要求,同時(shí)餐館之間的激烈競(jìng)爭(zhēng)也促進(jìn)了無線通信技術(shù)在餐飲業(yè)中的應(yīng)用。無線電子點(diǎn)菜系統(tǒng)的目的就是利用最先進(jìn)的2.4GRF無線通信技術(shù)、嵌入式移動(dòng)數(shù)據(jù)庫(kù)技術(shù)[3][4]、以及觸摸屏的掌上電腦技術(shù), 為餐飲業(yè)走向全面數(shù)字化提供了完整的解決方案。該系統(tǒng)能夠提高餐館檔次、提高效率、自動(dòng)結(jié)賬、避免人為錯(cuò)誤、避免跑單、實(shí)時(shí)監(jiān)控餐館狀況、提供各種各樣統(tǒng)計(jì)信息、精簡(jiǎn)人手、管理庫(kù)存、提高服務(wù)品質(zhì)等,為餐飲行業(yè)帶來嶄新的管理理念與服務(wù)手段,優(yōu)化業(yè)務(wù)流程,為客戶提供更好的服務(wù),實(shí)現(xiàn)企業(yè)價(jià)值最大化同時(shí)又使成本最低化,是餐飲行業(yè)向信息化發(fā)展的一個(gè)重要標(biāo)志。由于使用無線技術(shù)通信,可以不用進(jìn)行復(fù)雜的布線,這也大大降低了餐館的建設(shè)成本,減少了對(duì)線路維護(hù)的開支。同時(shí),無線通信的可以移動(dòng)性也使服務(wù)員隨時(shí)可以和吧臺(tái)聯(lián)系。
無線電子點(diǎn)菜系統(tǒng)基于目前很熱門的技術(shù)–嵌入式技術(shù)[3],依托一定的硬件平臺(tái)。因此微電子技術(shù)的發(fā)展對(duì)系統(tǒng)的性能有很大的限制,目前微電子技術(shù)已經(jīng)發(fā)展到了SOC(System On Chip,片上系統(tǒng)),集成度獲得了極大的提高。同時(shí),芯片的價(jià)格,體積和能耗進(jìn)一步降低,這些都使無線電子點(diǎn)菜系統(tǒng)向移動(dòng)化和大眾化方向發(fā)展??梢哉f,隨著微電子技術(shù)的進(jìn)一步發(fā)展,無線電子點(diǎn)菜系統(tǒng)仍然有很大的發(fā)展空間。
1.2 無線通信技術(shù)的發(fā)展現(xiàn)狀
按照發(fā)射功率的不同,無線通信技術(shù)可分為短距離無線通信技術(shù)和長(zhǎng)距離無線通信技術(shù),它們各自依托的硬件平臺(tái)和通信協(xié)議也有很大不同。幾種常見的長(zhǎng)距離無線通信系統(tǒng)如GPRS系統(tǒng)和我國(guó)即將投入使用的3G系統(tǒng),它們都有一些共同的特點(diǎn):使用專門的頻段,需要專門的公司進(jìn)行運(yùn)營(yíng)。由于本系統(tǒng)要求傳輸距離有限,而且對(duì)成本有限制,因此長(zhǎng)距離無線通信協(xié)議不在考慮的范圍之內(nèi),下面就重點(diǎn)闡述幾種常見的短距離無線通信協(xié)議:
1 藍(lán)牙[5]
愛立信在1994年開始研究一種能使手機(jī)與其附件(如耳機(jī))之間互相通信的無線模塊,4年后,愛立信、諾基亞、IBM等公司共同推出了藍(lán)牙技術(shù),主要用于通信和信息設(shè)備的無線連接。藍(lán)牙工作頻率為2.4GHz,有效范圍大約在10m半徑內(nèi)。在此范圍內(nèi),采用藍(lán)牙技術(shù)的多臺(tái)設(shè)備,如手機(jī)、微機(jī)、激光打印機(jī)等能夠無線互聯(lián),以約1Mb/s的速率相互傳遞數(shù)據(jù),并能方便地接入互聯(lián)網(wǎng)。目前藍(lán)牙技術(shù)開發(fā)重點(diǎn)是多點(diǎn)連接,即一臺(tái)設(shè)備同時(shí)與多臺(tái)(最多7臺(tái))其他設(shè)備互聯(lián)。今后,市場(chǎng)上不同廠商的藍(lán)牙產(chǎn)品將能夠相互聯(lián)通。
藍(lán)牙技術(shù)的應(yīng)用主要有以下3類:
1 語音/數(shù)據(jù)接入 是指將一臺(tái)計(jì)算機(jī)通過安全的無線鏈路連接到通信設(shè)備上,完成與廣域網(wǎng)的連接。
2外圍設(shè)備互連 是指將各種設(shè)備通過藍(lán)牙鏈路連接到主機(jī)上。
3 PAN(Personal Area Net,個(gè)人局域網(wǎng))如圖1所示,主要用于個(gè)人網(wǎng)絡(luò)與信息的共享與交換。
藍(lán)牙協(xié)議有以下技術(shù)特點(diǎn):
(1)藍(lán)牙工作在全球開放的2.4GHz ISM頻段;
(2)使用跳頻頻譜擴(kuò)展技術(shù),把頻帶分成若干個(gè)跳頻信道(hop channel),在一次連接中,無線電收發(fā)器按一定的碼序列不斷地從一個(gè)信道跳到另一個(gè)信道;
(3)一臺(tái)藍(lán)牙設(shè)備可同時(shí)與其它七臺(tái)藍(lán)牙設(shè)備建立連接;
(4)數(shù)據(jù)傳輸速率可達(dá)1Mbit/s;
(5)低功耗、通訊安全性好;
(6)在有效范圍內(nèi)可越過障礙物進(jìn)行連接,沒有特別的通訊視角和方向要求;
(7)支持語音傳輸;
(8)組網(wǎng)簡(jiǎn)單方便
正是由于藍(lán)牙協(xié)議有以上特點(diǎn),藍(lán)牙產(chǎn)品涉及PC、筆記本電腦、移動(dòng)電話等信息設(shè)備和A/V設(shè)備、汽車電子、家用電器和工業(yè)設(shè)備領(lǐng)域。藍(lán)牙的支持者們預(yù)言說,一旦支持藍(lán)牙的芯片變得非常便宜,藍(lán)牙將置身于幾乎所有產(chǎn)品之中,從微波爐一直到衣服上的紐扣。
但是藍(lán)牙的傳輸距離比較短,而且藍(lán)牙是一種還沒有完全成熟的技術(shù),盡管被描述得前景誘人,但還有待于實(shí)際使用的嚴(yán)格檢驗(yàn)。藍(lán)牙的數(shù)據(jù)傳輸速率也不是很高,在當(dāng)今這個(gè)數(shù)據(jù)爆炸的時(shí)代,可能也會(huì)對(duì)它的發(fā)展有所影響。目前主流的軟件和硬件平臺(tái)均不提供對(duì)藍(lán)牙的支持,這使得藍(lán)牙的應(yīng)用成本升高,普及難度增大。從以上各點(diǎn)綜合考慮,藍(lán)牙協(xié)議不適合本系統(tǒng)。
2 超寬帶技術(shù)UWB(Ultra Wide band)[6]
超寬帶技術(shù)UWB(Ultra Wide band)是另一個(gè)新發(fā)展起來的無線通信技術(shù)。UWB通過基帶脈沖作用于天線的方式發(fā)送數(shù)據(jù)。窄脈沖(小于1ns)產(chǎn)生極大帶寬的信號(hào)。脈沖采用脈位調(diào)制(Pulse Position Modulation,PPM)或二進(jìn)制移相鍵控(BPSK)調(diào)制。UWB被允許在3.1~10.6GHz的波段內(nèi)工作。它主要應(yīng)用在小范圍、高分辨率、能夠穿透墻壁、地面和身體的雷達(dá)和圖像系統(tǒng)中。除此之外,這種新技術(shù)適用于對(duì)速率要求非常高(大于100Mb/s)的LAN(Local Area Net,本地局域網(wǎng))s或PANs。
軍事部門已對(duì)UWB進(jìn)行了多年研究,開發(fā)出了分辨率極高的雷達(dá)。直到2002年2月14日,美國(guó)聯(lián)邦通信委員會(huì)才準(zhǔn)許該技術(shù)進(jìn)入民用領(lǐng)域。所以對(duì)于商業(yè)和消費(fèi)領(lǐng)域,UWB還是新鮮事物。UWB有可能在10m范圍內(nèi),支持高達(dá)110Mb/s的數(shù)據(jù)傳輸率,不需要壓縮數(shù)據(jù),可以快速、簡(jiǎn)單、經(jīng)濟(jì)地完成視頻數(shù)據(jù)處理。雖然說UWB技術(shù)的數(shù)據(jù)傳輸距離相比藍(lán)牙技術(shù)已經(jīng)獲得很大提高,但是仍然不能滿足本系統(tǒng)的技術(shù)要求。
3 ZigBee [1][7]
Zigbee是一種短距離、低功耗的無線通信技術(shù)名稱。這一名稱來源與蜜蜂的八字舞。其特點(diǎn)是近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本。主要適合用于自動(dòng)控制和遠(yuǎn)程控制領(lǐng)域,可以嵌入各種設(shè)備。
ZigBee協(xié)議的技術(shù)特點(diǎn)和應(yīng)用前景將在下一章詳細(xì)敘述。
4 IrDA (infrared data association,紅外數(shù)據(jù)標(biāo)準(zhǔn)協(xié)會(huì))技術(shù)[5][6]
紅外線是波長(zhǎng)在750nm至1mm之間的電磁波,它的頻率高于微波而低于可見光,是一種人的眼睛看不到的光線。由于紅外線的波長(zhǎng)較短,對(duì)障礙物的衍射能力差,所以更適合應(yīng)用在需要短距離無線通訊的場(chǎng)合,進(jìn)行點(diǎn)對(duì)點(diǎn)的直線數(shù)據(jù)傳輸,傳輸速率最快可達(dá)16Mbps。IRDA將紅外數(shù)據(jù)通訊所采用的光波波長(zhǎng)的范圍限定在850nm至900nm之內(nèi)。IRDA技術(shù)有以下特點(diǎn):
(1)它是目前在世界范圍內(nèi)被廣泛使用的一種無線連接技術(shù),被眾多的硬件和軟件平臺(tái)所支持;
(2)通過數(shù)據(jù)電脈沖和紅外光脈沖之間的相互轉(zhuǎn)換實(shí)現(xiàn)無線的數(shù)據(jù)收發(fā)。
(3)主要是用來取代點(diǎn)對(duì)點(diǎn)的線纜連接;
(4)新的通訊標(biāo)準(zhǔn)兼容早期的通訊標(biāo)準(zhǔn);
(5)小角度(30度錐角以內(nèi)),短距離,點(diǎn)對(duì)點(diǎn)直線數(shù)據(jù)傳輸,保密性強(qiáng)
(6) 傳輸速率較高,目前4M速率的FIR技術(shù)已被廣泛使用,16M速率的VFIR技術(shù)已經(jīng)發(fā)布。
雖然目前IRDA技術(shù)發(fā)展已經(jīng)很成熟,而且有很多公司的產(chǎn)品都支持這種協(xié)議。但是由于紅外線的波長(zhǎng)較短,對(duì)障礙物的衍射能力差,所以它只能用于視距傳輸,傳輸距離比較短,因此也不適合本系統(tǒng)的技術(shù)要求。
綜合比較以上各個(gè)短距離無線通信協(xié)議的技術(shù)特點(diǎn)和本系統(tǒng)的要求,只有ZigBee協(xié)議能基本滿足要求。而且目前支持ZigBee協(xié)議的廠商比較多,技術(shù)發(fā)展也很成熟,可以作成低成本的嵌入式產(chǎn)品。
1.3 論文的研究?jī)?nèi)容
無線電子點(diǎn)菜系統(tǒng)的實(shí)現(xiàn)是建立在硬件電路的基礎(chǔ)上的,為了降低誤碼率,提高頻率資源的利用律,數(shù)據(jù)必須按照一定協(xié)議傳輸。在發(fā)送端,數(shù)據(jù)按照一定的格式編碼,然后調(diào)制到一約定的頻率后發(fā)送;接受端將接收到的信號(hào)經(jīng)過解調(diào)和解碼后,將數(shù)據(jù)還原。
本論文的研究?jī)?nèi)容主要有兩部分組成:
1.經(jīng)過討論各種無線通信協(xié)議的特點(diǎn)和電子技術(shù)的發(fā)展現(xiàn)狀,在此基礎(chǔ)上,提出了基于ZigBee協(xié)議的硬件平臺(tái)。并詳細(xì)分析了平臺(tái)組成部分各自的原理以及功能。
2.分析了平臺(tái)的編程規(guī)則,開發(fā)出了相應(yīng)的驅(qū)動(dòng)程序。
1.4內(nèi)容安排
本文對(duì)無線電子電菜系統(tǒng)的硬件設(shè)計(jì)進(jìn)行了深入的研究,全文共分為五章,各章節(jié)的內(nèi)容安排如下:
第一章介紹了本文的研究背景和各章節(jié)的內(nèi)容安排情況。
第二章介紹ZigBee協(xié)議的詳細(xì)內(nèi)容和一種基于ZigBee協(xié)議的芯片。
第三章在上一章的基礎(chǔ)上提出了自己的硬件平臺(tái),詳細(xì)介紹了平臺(tái)的組成部分和各自的功能。
第四章和第三章相對(duì)應(yīng)的,主要講了硬件平臺(tái)的驅(qū)動(dòng)程序以及PC機(jī)端串行口調(diào)試工具的開發(fā),并簡(jiǎn)單介紹了相應(yīng)的軟件開發(fā)工具。
第五章是總結(jié)與展望。對(duì)本文工作進(jìn)行了總結(jié),并探討可以進(jìn)一步深入研
究的方向。
第二章 ZigBee[7]協(xié)議分析
ZigBee協(xié)議是一種近距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的無線網(wǎng)絡(luò)技術(shù)。
在標(biāo)準(zhǔn)規(guī)范制訂方面,主要是IEEE 802.15.4小組與ZigBee Alliance兩個(gè)組織,兩者分別制訂硬體與軟體標(biāo)準(zhǔn)。在IEEE 802.15.4方面,2000年12月IEEE成立了802.15.4小組,負(fù)責(zé)制訂MAC(Media Access Control,媒體存取控制層)與物理層規(guī)范, 2003年5月通過802.15.4標(biāo)準(zhǔn);在ZigBee 聯(lián)盟方面,ZigBee[7]聯(lián)盟是在2002年10月由Honeywell、Mitsubishi、Motorola、Philips與Invensys共同成立,ZigBee聯(lián)盟負(fù)責(zé)制訂網(wǎng)路層、安全管理、應(yīng)用界面規(guī)范,其次也肩負(fù)互通測(cè)試,目前ZigBee聯(lián)盟已推出第1.0版規(guī)范(Version 1.0),成員已達(dá)150多個(gè)。
ZigBee協(xié)議依據(jù)802.15.4標(biāo)準(zhǔn)[8][9],在數(shù)千個(gè)微小的傳感器之間相互協(xié)調(diào)實(shí)現(xiàn)通信。這些傳感器只需要很少的能量,以接力的方式通過無線電波將數(shù)據(jù)從一個(gè)傳感器傳到另一個(gè)傳感器,所以它們的通信效率非常高。IEEE802.15.4規(guī)范是一種經(jīng)濟(jì)、高效、低數(shù)據(jù)速率(<250 kbps)、工作在2.4 GHz和868/915 MHz的無線技術(shù),它是ZigBee應(yīng)用層和網(wǎng)絡(luò)層協(xié)議的基礎(chǔ)。
相對(duì)于現(xiàn)有的各種無線通信技術(shù),ZigBee技術(shù)將是最低功耗和成本的技術(shù),同時(shí)由于ZigBee技術(shù)的低數(shù)據(jù)速率和通信范圍較小的特點(diǎn),也決定了ZigBee技術(shù)適合于承載數(shù)據(jù)流量較小的業(yè)務(wù)。所以ZigBee聯(lián)盟預(yù)測(cè)的主要應(yīng)用領(lǐng)域包括工業(yè)控制、消費(fèi)性電子設(shè)備、汽車自動(dòng)化、農(nóng)業(yè)自動(dòng)化和醫(yī)用設(shè)備控制等。
2.1 ZigBee協(xié)議框架
ZigBee協(xié)議同其它網(wǎng)絡(luò)通信協(xié)議一樣采用分層模型,對(duì)各層所實(shí)現(xiàn)的功能和在整個(gè)協(xié)議中起的作用做了明確的劃分,每層為其上層提供一組特定的服務(wù)。ZigBee的協(xié)議架構(gòu)大致如表2.1所列。
表2.1 ZigBee的協(xié)議架構(gòu)
第四層 應(yīng)用層
第三層 網(wǎng)絡(luò)層
第二層 媒體訪問層(MAC)
第一層 物理層
ZigBee協(xié)議雖然是基于標(biāo)準(zhǔn)的七層OSI(Open System Interconnect,開放式系統(tǒng)互聯(lián))模型[10],但僅對(duì)那些涉及ZigBee的層予以定義。IEEE802.15.4-2003標(biāo)準(zhǔn)定義了最下面的兩層:物理層和MAC。ZigBee聯(lián)盟提供了網(wǎng)絡(luò)層和應(yīng)用層框架的協(xié)議。
相比于常見的無線通信標(biāo)準(zhǔn),ZigBee協(xié)議套件緊湊而簡(jiǎn)單,具體實(shí)現(xiàn)的要求很低。以下是ZigBee協(xié)議套件的需求估計(jì):硬件需要8位處理器,如廣泛使用的80C51系列單片機(jī)[12];軟件需要32KB的ROM(Read Only Memory,只讀存儲(chǔ)器),最小軟件需要4KB的ROM;網(wǎng)絡(luò)主節(jié)點(diǎn)需要更多的ROM以容納網(wǎng)絡(luò)內(nèi)所有節(jié)點(diǎn)的設(shè)備信息,數(shù)據(jù)包轉(zhuǎn)發(fā)表,設(shè)備關(guān)聯(lián)表,與安全有關(guān)的密鑰存儲(chǔ)等。
1 物理層
IEEE802.15.4標(biāo)準(zhǔn)在物理層設(shè)計(jì)中面向低成本和更高層次的集成需求,才用的工作頻段分別為2.4 GHz和868/915 MHz。各個(gè)頻段可以使用的信道數(shù)目分別為16、10、1,各自提供250kbps,40kbps和20kbps的傳輸速率,其傳輸范圍介于10-100米之間。
為了避免干擾,在各個(gè)頻段均使用DSSS(Direct Sequence Spread Spectrum,直接序列擴(kuò)頻技術(shù))[13],以化整為零方式將一個(gè)信號(hào)分為多個(gè)信號(hào),再經(jīng)由編碼方式傳送信號(hào)以避免干擾,這對(duì)大部分較低端的實(shí)現(xiàn)來說,直接序列的應(yīng)用可以使模擬電路更加簡(jiǎn)單,具有更高的容錯(cuò)性能。
2 媒體訪問層
IEEE802.15.4標(biāo)準(zhǔn)在媒體訪問層(MAC)方面,主要沿用無線局域網(wǎng)WLAN中IEEE802.11系列標(biāo)準(zhǔn)的CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance,載波監(jiān)聽多路訪問與沖突避免)方式以提高系統(tǒng)的兼容性。這種MAC層的設(shè)計(jì)不但是多種拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò)的應(yīng)用變得簡(jiǎn)單,還可以實(shí)現(xiàn)非常有效的功耗控制。
3 網(wǎng)絡(luò)層
網(wǎng)絡(luò)功能是ZigBee協(xié)議的重要特點(diǎn),也是與其他無線局域網(wǎng)標(biāo)準(zhǔn)不同的地方。在網(wǎng)絡(luò)層方面其主要工作在于負(fù)責(zé)網(wǎng)絡(luò)機(jī)制的建立與管理,并且具有自我組態(tài)與自我修復(fù)功能。在網(wǎng)絡(luò)層中ZigBee協(xié)議定義了三種角色:第一個(gè)是網(wǎng)絡(luò)協(xié)調(diào)器,負(fù)責(zé)網(wǎng)絡(luò)的建立以及網(wǎng)絡(luò)位置的分配;第二個(gè)是路由器,主要負(fù)責(zé)找尋建立以及修復(fù)信息包的路由路徑,并負(fù)責(zé)轉(zhuǎn)發(fā)信息包;第三個(gè)是末端裝置,只能選擇加入他人已經(jīng)形成的網(wǎng)絡(luò),可以收發(fā)信息包,但是不能轉(zhuǎn)發(fā),不具備路由的功能。通常,路由器和網(wǎng)絡(luò)協(xié)調(diào)器由全功能裝置(FFD)實(shí)現(xiàn),而末端裝置由簡(jiǎn)化功能裝置(RFD)實(shí)現(xiàn)。在組網(wǎng)方式上,ZigBee主要采用圖2.1所示三種方式:其一為主從方式的星形網(wǎng),它需要一個(gè)能負(fù)責(zé)管理和維護(hù)網(wǎng)絡(luò)的網(wǎng)絡(luò)協(xié)調(diào)器和不超過65535個(gè)從屬裝置;其二為簇形網(wǎng)絡(luò),它可以是擴(kuò)展的單個(gè)星形網(wǎng)或者互連多個(gè)星形網(wǎng)絡(luò);其三為網(wǎng)狀網(wǎng)(Mesh),網(wǎng)絡(luò)中的每個(gè)FFD可以做為路由器,根據(jù)AD hoc網(wǎng)絡(luò)路由協(xié)議來優(yōu)化最短和最可靠的路徑。
圖2.1 三種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
4 應(yīng)用層
對(duì)于應(yīng)用層,主要有三個(gè)部分:與網(wǎng)絡(luò)層相連的應(yīng)用支持(APS),ZigBee設(shè)備對(duì)象(ZDO)以及裝置應(yīng)用行規(guī)。ZigBee的應(yīng)用層架構(gòu)最重要的是已經(jīng)覆蓋了服務(wù)的觀念。
對(duì)于ZigBee裝置而言,當(dāng)加入到一個(gè)WPAN(Wireless Personal Area Net,個(gè)人無線局域網(wǎng))后,應(yīng)用層的ZMO會(huì)發(fā)起一系列的初始化動(dòng)作,先通過APS進(jìn)行裝置收尋以及服務(wù)收尋后,然后根據(jù)事先定義好的描述信息,將與其相關(guān)的裝置或是服務(wù)記錄在APS里的綁定表中;之后所有服務(wù)的使用,都要通過這個(gè)綁定表來查詢資料的服務(wù)或者行規(guī)。而裝置應(yīng)用行規(guī)則是根據(jù)不同的產(chǎn)品設(shè)計(jì)出的不同的描述信息,以及ZigBee各層協(xié)議的參數(shù)設(shè)定。
5 安全層
安全層并非單獨(dú)獨(dú)立的協(xié)議,ZigBee為其提供了一套基于128位AES算法的安全類和軟件,并且集成了IEEE802.15.4標(biāo)準(zhǔn)的安全元素,用來保證MAC層禎的機(jī)密性,一致性和真實(shí)性。
另外ZigBee聯(lián)盟也負(fù)責(zé)ZigBee產(chǎn)品互通性測(cè)試與認(rèn)證規(guī)則的制定,讓開發(fā)ZigBee產(chǎn)品的廠商有一個(gè)公開的場(chǎng)合,能夠互相測(cè)試互通性。而在認(rèn)證部分,ZigBee聯(lián)盟一共定義了三種層次的認(rèn)證,第一級(jí)認(rèn)證物理層和MAC,與芯片廠有著最直接的關(guān)系;第二級(jí)認(rèn)證ZigBee協(xié)議棧;第三級(jí)認(rèn)證ZigBee產(chǎn)品。只有通過第三級(jí)認(rèn)證的產(chǎn)品才能貼上ZigBee的標(biāo)志,所以也稱作ZigBee注冊(cè)認(rèn)證。
2.2 ZigBee協(xié)議優(yōu)缺點(diǎn)和應(yīng)用前景
ZigBee協(xié)議是從WLAN發(fā)展過來的,經(jīng)過近幾年來ZigBee聯(lián)盟成員[7]對(duì)標(biāo)準(zhǔn)的不斷修改和完善,已經(jīng)顯示出了強(qiáng)大的生命力,但是本身還有一些缺點(diǎn),這也限制了ZigBee協(xié)議的使用范圍。
2.2.1 ZigBee協(xié)議的優(yōu)點(diǎn)
功耗低:由于ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)備工作周期較短、收發(fā)信息功耗較低,并且采用了休眠模式(當(dāng)不傳送數(shù)據(jù)時(shí)處于休眠狀態(tài),當(dāng)需要接收數(shù)據(jù)時(shí)由ZigBee網(wǎng)絡(luò)中的協(xié)調(diào)器設(shè)備負(fù)責(zé)喚醒它們),可以確保兩節(jié)五號(hào)電池支持長(zhǎng)達(dá)六個(gè)月到兩年左右的使用時(shí)間。避免了頻繁更換電池或者充電,從而減輕了網(wǎng)絡(luò)維護(hù)的負(fù)擔(dān) 。
數(shù)據(jù)傳輸可靠性高:采用了碰撞避免機(jī)制,同時(shí)為需要固定帶寬的通信業(yè)務(wù)預(yù)留了專用時(shí)隙,避免了發(fā)送數(shù)據(jù)時(shí)的競(jìng)爭(zhēng)和沖突。而且MAC層采用了完全確認(rèn)的數(shù)據(jù)傳輸機(jī)制,發(fā)送的每個(gè)數(shù)據(jù)包都必須等待接收方的確認(rèn)信息,從而從根本上確保了數(shù)據(jù)傳輸?shù)目煽啃?,最大限度地降低信息損失的概率。
網(wǎng)絡(luò)容量大:一個(gè)Zigbee網(wǎng)絡(luò)可以容納最多65536個(gè)從設(shè)備和一個(gè)主設(shè)備[14],一個(gè)區(qū)域內(nèi)可以同時(shí)存在最多100個(gè)Zigbee網(wǎng)絡(luò)。
時(shí)延小:針對(duì)時(shí)延敏感的應(yīng)用做了優(yōu)化,通信時(shí)延和休眠狀態(tài)激活的時(shí)延都非常短。設(shè)備搜索時(shí)延典型值為30ms,休眠激活時(shí)延典型值為15ms,活動(dòng)設(shè)備信道接入時(shí)延為15ms。
表2.2 Zigbee與藍(lán)牙協(xié)議時(shí)延比較
設(shè)備收索時(shí)延典型值(ms) 休眠激活時(shí)延典型值(ms) 活動(dòng)設(shè)備信道接入時(shí)延(ms)
ZigBee技術(shù) 30 15 15
藍(lán)牙技術(shù) >=3000 3000 2
兼容性:與現(xiàn)有的控制網(wǎng)絡(luò)標(biāo)準(zhǔn)無縫集成。通過網(wǎng)絡(luò)協(xié)調(diào)器(Coordinator)自動(dòng)建立網(wǎng)絡(luò),采用CSMA-CA方式進(jìn)行信道存取。為了可靠傳遞,提供全握手協(xié)議。
安全性:Zigbee提供了數(shù)據(jù)完整性檢查和鑒權(quán)功能,加密算法采用AES-128,同時(shí)各個(gè)應(yīng)用可以靈活確定其安全屬性,是網(wǎng)絡(luò)安全得到有效的保障。
實(shí)現(xiàn)成本低:模塊的初始成本估計(jì)在6美元左右,很快就能降到1.5~2.5美元,且Zigbee協(xié)議是免專利費(fèi)的。
協(xié)議套件緊湊而簡(jiǎn)單:其具體實(shí)現(xiàn)的要求很低。Zigbee協(xié)議套件的需求估計(jì):8位微處理器,如80C51[10];全協(xié)議套件軟件需要32K字節(jié)的ROM;最小協(xié)議套件軟件大約4K字節(jié)的ROM。
2.2.2 ZigBee協(xié)議存在的問題及解決方案
802.15.4標(biāo)準(zhǔn)是ZigBee協(xié)議的基礎(chǔ),用它實(shí)現(xiàn)無線數(shù)據(jù)采集,主要有以下兩個(gè)問題:
1、網(wǎng)絡(luò)內(nèi)傳感器節(jié)點(diǎn)時(shí)鐘需要同步,監(jiān)控系統(tǒng)的多傳感器信息融合時(shí),上位機(jī)需要知道每個(gè)原始數(shù)據(jù)是何時(shí)采集的,采樣的觸發(fā)要求每個(gè)節(jié)點(diǎn)有統(tǒng)一的時(shí)鐘;
2、其通信速率較低,而且又受到接口通信速率的限制,加之受糾錯(cuò)碼的編碼效率影響,真正的數(shù)據(jù)發(fā)送量是很低的。
解決此問題可以通過如下的途徑: 傳感器節(jié)點(diǎn)采用DSP處理器,盡可能在傳感器節(jié)點(diǎn)一級(jí)多做些數(shù)據(jù)處理工作,盡量減少原始數(shù)據(jù)的發(fā)送量,只發(fā)送有用信息。例如,對(duì)于平穩(wěn)狀態(tài)的原始數(shù)據(jù)可以不發(fā)送到上位機(jī)中,只發(fā)送可疑狀態(tài)前后的原始數(shù)據(jù),這樣就大大減少了數(shù)據(jù)的通信量。
2.2.3 ZigBee協(xié)議應(yīng)用前景
ZigBee協(xié)議特別適合數(shù)據(jù)吞吐量小,網(wǎng)絡(luò)建設(shè)投資少,網(wǎng)絡(luò)安全要求較高,不便頻繁更換電池或者充電的場(chǎng)合,預(yù)計(jì)將在消費(fèi)類電子設(shè)備,家庭智能化,工業(yè)控制,醫(yī)療設(shè)備控制,農(nóng)業(yè)自動(dòng)化和無線點(diǎn)菜系統(tǒng)等領(lǐng)域獲得廣泛的應(yīng)用。
消費(fèi)類電子產(chǎn)品和家庭智能化將是ZigBee技術(shù)最有潛力的市場(chǎng),家庭可以聯(lián)網(wǎng)的設(shè)備包括電視,錄象機(jī),PC外設(shè),兒童玩具,游戲機(jī),門禁系統(tǒng),窗戶和窗簾,照明設(shè)備,空調(diào)設(shè)備和其他家用電器等。家用設(shè)備引進(jìn)ZigBee協(xié)議后將極大改善人們的居住環(huán)境和舒適度。
在工業(yè)控制領(lǐng)域,利用傳感器和ZigBee網(wǎng)絡(luò),可是數(shù)據(jù)的自動(dòng)采集,分析和處理變得更加容易;可以作為決策輔助系統(tǒng)的重要組成部分,例如危險(xiǎn)化學(xué)成分的檢測(cè),火警的早期檢測(cè)和預(yù)報(bào),高速旋轉(zhuǎn)機(jī)器的檢測(cè)和維護(hù)。這些應(yīng)用不需要很高的數(shù)據(jù)吞吐量和連續(xù)的狀態(tài)更新,重點(diǎn)在于低功耗,可最大限度地延長(zhǎng)電池的壽命,減少ZigBee網(wǎng)絡(luò)的維護(hù)成本。
在醫(yī)學(xué)領(lǐng)域,利用傳感器和ZigBee網(wǎng)絡(luò)可以準(zhǔn)確,實(shí)時(shí)地監(jiān)測(cè)每個(gè)病人的血壓,心率等情況,有助于醫(yī)生快速做出反應(yīng),減少醫(yī)生查房的工作負(fù)擔(dān),特別適合對(duì)重,危病患者的監(jiān)護(hù)和治療。
在現(xiàn)代農(nóng)業(yè)中,利用傳感器可以將土壤溫度,氮濃度,PH值,降水量,氣溫,氣壓和采集信息的地理位置經(jīng)由ZigBee網(wǎng)絡(luò)傳送到中央的控制部分,使農(nóng)民能及早而且準(zhǔn)確地發(fā)現(xiàn)問題,從而有助于保持并提高農(nóng)作物的產(chǎn)量,減少發(fā)生災(zāi)害的概率。
本系統(tǒng)是將ZigBee協(xié)議用于餐館的無線點(diǎn)菜系統(tǒng),這樣能夠提高餐館檔次、提高效率、自動(dòng)結(jié)賬、避免人為錯(cuò)誤、避免跑單、實(shí)時(shí)監(jiān)控餐館狀況、提供各種各樣統(tǒng)計(jì)信息、精簡(jiǎn)人手、管理庫(kù)存、提高服務(wù)品質(zhì)等,為餐飲行業(yè)帶來嶄新的管理理念與服務(wù)手段,優(yōu)化業(yè)務(wù)流程,為客戶提供更好的服務(wù),實(shí)現(xiàn)企業(yè)價(jià)值最大化同時(shí)又使成本最低化,是餐飲行業(yè)向信息化發(fā)展的一個(gè)重要標(biāo)志。
2. 3基于ZigBee協(xié)議的芯片[1][4][5]
2002年8月ZigBee聯(lián)盟成立時(shí)Honeywell,Invensys,三菱電器,摩托羅拉和飛利浦等國(guó)際上知名的大公司就是ZigBee協(xié)議的支持者。目前,ZigBee已經(jīng)吸引了上百家芯片研發(fā)公司和無線設(shè)備制造公司,并且不斷有新的公司加盟這一聯(lián)盟。現(xiàn)在國(guó)際上有很多公司生產(chǎn)基于ZigBee協(xié)議的芯片,芯片的集成度也越來越高。例如挪威的Nordic公司的nRF系列芯片,還有Chipcon公司的無線數(shù)據(jù)傳輸芯片等。各個(gè)公司的芯片原理基本相同,編程規(guī)則大致相同,因此選用Nordic公司的nRF2401,下面詳細(xì)敘述一下nRF2401芯片的特點(diǎn)。
nRF2401無線收發(fā)一體芯片和藍(lán)牙一樣,都工作在2.4GHZ自由頻段,能夠在全球無線市場(chǎng)暢通無阻。nRF2401支持多點(diǎn)間通信,最高傳輸速率超過1Mbit/s,而且比藍(lán)牙具有更高的傳輸速度。它采用SOC方法設(shè)計(jì),只需少量外圍元件便可組成射頻收發(fā)電路。與藍(lán)牙不同的是,nRF2401沒有復(fù)雜的通信協(xié)議,它完全對(duì)用戶透明,同種產(chǎn)品之間可以自由通信。更重要的是,nRF2401比藍(lán)牙產(chǎn)品更便宜。所以nRF2401是業(yè)界體積最小、功耗最少、外圍元件最少的低成本射頻系統(tǒng)級(jí)芯片。
nRF2401的引腳排列如圖2.2(頂視圖)所示。它采用5mm×5mm的24引腳QFN封裝。nRF2401的主要特點(diǎn)如下:
圖2.2 nRF2401的引腳排列
(1)采用全球開放的2.4GHZ頻段,有125個(gè)頻道,可滿足多頻及跳頻需要;
(2)速率(1Mbps)高于藍(lán)牙,且具有高數(shù)據(jù)吞吐量;
(3)外圍元件極少,只需一個(gè)晶振和一個(gè)電阻即可設(shè)計(jì)射頻電路;
(4)發(fā)射功率和工作頻率等所有工作參數(shù)可全部通過軟件設(shè)置;
(5)電源電壓范圍為1.9-3.6V,功耗很低;
(6)電流消耗很小,-5dBm輸出功率時(shí)的典型峰值電流為10.5mA;
(7)芯片內(nèi)部設(shè)置有專門的穩(wěn)壓電路,因此,使用任何電源(包括DC/DC開關(guān)電源)均有很好的通信效果;
(8)每個(gè)芯片均可以通過軟件設(shè)置最多40bit地址,而且只有收到本機(jī)地址時(shí)才會(huì)輸出數(shù)據(jù)(提供一個(gè)中斷指示),同時(shí)編程也很方便;
(9)內(nèi)置CRC(Cyclic Redundancy Check,循環(huán)冗余校驗(yàn))[16]糾檢錯(cuò)硬件電路和協(xié)議;
(10)采用DuoCever技術(shù)可同時(shí)接收兩個(gè)nRF2401的數(shù)據(jù);
(11)采用ShockBurst TM模式時(shí),能適用極低的功率操作和不嚴(yán)格的MCU執(zhí)行;
(12)無需外部SAW濾波器;
(13)可100%RF檢驗(yàn);
(14)帶有數(shù)據(jù)時(shí)隙和數(shù)據(jù)時(shí)鐘恢復(fù)功能。
nRF2401的內(nèi)部結(jié)構(gòu)原理及外部組成框圖如圖2.3所示,下面介紹其工作原理。
圖2.3 nRF2401的內(nèi)部結(jié)構(gòu)原理及外部組成框圖
1 ShockBurst TM[16]模式
nRF2401的ShockBurst TM模式采用片上FIFO(First-In First-Out,先進(jìn)先)出來進(jìn)行低數(shù)據(jù)率的時(shí)鐘同步和高數(shù)據(jù)率的傳輸,因此極大的降低了功耗。
ShockBurst TM發(fā)射主要通過MCU接口引腳CE、CLK1和DATA來完成。當(dāng)MCU請(qǐng)求發(fā)送數(shù)據(jù)時(shí),置CE為高電平,此時(shí)的接收機(jī)地址和有效載荷數(shù)據(jù)作為nRF2401的內(nèi)部時(shí)鐘,可用請(qǐng)求協(xié)議或MCU將速率調(diào)至1Mbps;置CE為低電平可激活ShockBurst TM發(fā)射。
ShockBurst TM接收主要使用MCU接口引腳CE、DR1、CLK1、DATA來實(shí)現(xiàn)。當(dāng)正確設(shè)置射頻包輸入載荷的地址和大小后,置CE為高電平可激活RX。此后便可在nRF2401監(jiān)測(cè)信息輸入200μs,若收到有效數(shù)據(jù)包,則給MCU一個(gè)中斷并置DR1為高電平,以使MCU 以時(shí)鐘形式輸出有效載荷數(shù)據(jù),待系統(tǒng)收到全部數(shù)據(jù)后, nRF2401再置DR1為低?此時(shí)如果CE保持高電平,則等待新的數(shù)據(jù)包。若CE置低電平,則開始接收新的序列
nRF2401的 DuoCeiver TM[17]技術(shù)為RX提供了兩個(gè)獨(dú)立的專用數(shù)字信道,因而可代替兩個(gè)單獨(dú)接收系統(tǒng)。圖4所示是DuoCeiver TM同時(shí)雙接收信道結(jié)構(gòu)圖。 nRF2401可以通過一個(gè)天線接口從相隔8MHZ的兩1Mbps接收機(jī)上接收數(shù)據(jù)。同時(shí)將兩個(gè)數(shù)字信道的輸出反饋到兩個(gè)單獨(dú)的MCU接口。具體的兩個(gè)信道如下:
圖2.4 DuoCeiver TM同時(shí)雙接收信道結(jié)構(gòu)圖
數(shù)字信道1:CLK1,DATA,DR1;
數(shù)字信道2:CLK2,DOUT2,DR2;
應(yīng)當(dāng)說明的是,數(shù)字信道2的頻率只有在比數(shù)字信道1的頻率高出8MHZ時(shí),才能保證正常接收。
第三章 基于ZigBee協(xié)議的硬件系統(tǒng)的設(shè)計(jì)及實(shí)現(xiàn)
目前,51系列單片機(jī)非常流行,而且資料眾多,因此選用51系列單片機(jī)作為開發(fā)板的MCU,通過附加一定的外圍電路后,來和無線數(shù)據(jù)傳輸模塊進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的無線傳輸。
3.1 STC89C58RD+[10]單片機(jī)概述
STC89C58RD+系列單片機(jī)是宏晶科技推出的新一代超強(qiáng)抗干擾,高速,低功耗的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘/機(jī)器周期和6時(shí)鐘/機(jī)器周期可任意選擇。
它具有以下特點(diǎn):
1. 增強(qiáng)型6時(shí)鐘/機(jī)器周期,12時(shí)鐘/機(jī)器周期 8051 CPU(Central Process Unit,中央處理器)。
2. 工作電壓:5.5V - 3.4V(5V單片機(jī))
3. 工作頻率范圍:0 - 40 MHz,相當(dāng)于普通8051的 0~80MHz.實(shí)際工作頻率可達(dá)48MHz.
4. 用戶應(yīng)用程序空間32K字節(jié)
5. 片上集成 1280 字節(jié)RAM(Random Access Memory,隨機(jī)存儲(chǔ)器)。
6. 通用I/O口32個(gè),復(fù)位后為: P1/P2/P3是準(zhǔn)雙向口/弱上拉(普通8051傳統(tǒng)I/O口),P0口是開漏輸出,作為總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。
7. ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器/ 仿真器 可通過串口(P3.0/P3.1)直接下載用戶程序,8K程序3秒即可完成一片
8. EEPROM 功能
9. 看門狗
10.共3個(gè)16位定時(shí)器/計(jì)數(shù)器,其中定時(shí)器0還可以當(dāng)成2個(gè)8位定時(shí)器使用
11.外部中斷4路,下降沿中斷或低電平觸發(fā)中斷,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒
12. 通用UART(Universal Asynchronous Receiver/Transmitter ,通用串行接口),還可用定時(shí)器軟件實(shí)現(xiàn)多個(gè)UART
14.工作溫度范圍: 0 - 75℃ / -40 - +85℃
15.封裝: PDIP-40,PLCC-44,PQFP-44
使用這種單片機(jī)做開發(fā)板,最大的優(yōu)勢(shì)就在于它支持ISP,這樣不用購(gòu)買昂貴的編程器/ 仿真器,直接通過串口線就能實(shí)現(xiàn)在線編程。而且內(nèi)部集成了看門狗和Flash,簡(jiǎn)化了PCB板的制作。指令代碼與51單片機(jī)兼容,這樣可以用常用的51單片機(jī)軟件開發(fā)工具開發(fā)驅(qū)動(dòng)程序。
3.2 開發(fā)板的各個(gè)組成部分原理圖以及功能
整個(gè)開發(fā)板是由單片機(jī)最小系統(tǒng)和它的一些外圍電路組成,單片機(jī)最小系統(tǒng)做為整個(gè)開發(fā)板的控制中心,控制各個(gè)外圍電路協(xié)調(diào)工作,完成系統(tǒng)設(shè)計(jì)的功能。整個(gè)系統(tǒng)原理圖見附錄2,下面詳細(xì)敘述各個(gè)組成部分的原理及各自實(shí)現(xiàn)的功能。原理圖由Protel 99SE[18][19]繪制。
3.2.1 單片機(jī)最小系統(tǒng)組成電路
單片機(jī)最小系統(tǒng)是整個(gè)開發(fā)板的控制中心,它由電源,復(fù)位電路和晶振組成。電源采用5V供電,晶振為12MHZ。為了便于調(diào)試,將P0.4-P0.7和發(fā)光管相連,發(fā)光管為共陽極連接,這是因?yàn)殚_發(fā)板初上電或者或者復(fù)位后,所有的I/O口均為高電平。由于不使用外部存儲(chǔ)器,因此將EA接高電平。為了方便調(diào)試和降低成本,因此選用USB(Universial Serial Bus,通用串口總線)方式供電。USB的即插即用特性,使對(duì)開發(fā)板供電非常方便。圖3.1所示為單片機(jī)最小系統(tǒng)。
圖3.1 單片機(jī)最小系統(tǒng)
3.2.2 串行口電平轉(zhuǎn)換部分
大多數(shù)PC機(jī)都有一個(gè)串行通訊端口RS-232用于兩臺(tái)計(jì)算機(jī)間進(jìn)行串行通訊。RS - 232通訊接口是一種標(biāo)準(zhǔn)化的串行接口,是為DTE(Data Terminal Equipment,遠(yuǎn)程通訊連接終端設(shè)備)與DCE (Data Communication Equipment,數(shù)據(jù)通訊設(shè)備)定義的物理接口。RS-232采用非平衡連接(又稱為單端線路),在這個(gè)線路中,信號(hào)電壓加到一條導(dǎo)線上,所有的信號(hào)電壓都使用一個(gè)公共的接地線。為了提高抗干擾能力和增加傳送距離,RS一232的每個(gè)腳線的信號(hào)和電平規(guī)定采用負(fù)邏輯電平,DC(-15一5V)規(guī)定為邏輯”1″,DC(+ 5-+15V)規(guī)定邏輯”0″, DC(-5一+5V規(guī)定為過渡區(qū))。由于單片機(jī)的輸入、輸出電平為TTL電平,與 PC機(jī)RS-232標(biāo)準(zhǔn)串行接口的電氣規(guī)范不一致,因此要實(shí)現(xiàn)單片機(jī)與PC機(jī)之間的數(shù)據(jù)通讀,必須進(jìn)行電平轉(zhuǎn)換。選用的電平轉(zhuǎn)換芯片為MAX232,它的工作電壓為+5V,和單片機(jī)的工作電源相同。
由于STC89C58RD+單片機(jī)支持ISP下載,因此通過這個(gè)串行口既可以用來和PC機(jī)通信,又能將程序下載到單片機(jī),不用購(gòu)買昂貴的編程器。圖3.2所示為串口電平轉(zhuǎn)換部分。
圖3.2 串口電平轉(zhuǎn)換部分
3.2.3 LED部分
由于單片機(jī)復(fù)位后,各個(gè)引腳輸出都為高電平,因此選用共陰極的LED數(shù)碼管。每個(gè)數(shù)碼管的使能端com1,com2,com3,com4分別接到P1.0,P1.1,P1.2,P1.3,當(dāng)向使能端輸出低電平,即可選通相對(duì)應(yīng)的數(shù)碼管。74LS244為三態(tài)輸出的八組緩沖器和總線驅(qū)動(dòng)器,選用的四位八段數(shù)碼管本身已經(jīng)集成了譯碼器,這樣既簡(jiǎn)化了線路的連接,又降低了錯(cuò)誤發(fā)生的概率。圖3.3為L(zhǎng)ED部分。
圖3.3 LED部分
3.2.4 開發(fā)板和無線數(shù)據(jù)傳輸模塊接口部分
這一部分有兩部分組成:由于nRF2401的工作電壓為1.9V-3.6V,工作電壓超過3.6V就會(huì)燒壞芯片。而開發(fā)板的電源為5V,因此為了使系統(tǒng)工作,必需要有5V電平轉(zhuǎn)換為3.3V電平的部分。為了實(shí)現(xiàn)這一過程,選用LM1117-MAX3.3作為核心芯片。LM1117是一個(gè)低壓差電壓調(diào)節(jié)器系列,其壓差在1.2V輸出,負(fù)載電流為800mA時(shí)為1.2V。LM1117提供電流限制和熱保護(hù),電路包含1個(gè)齊納調(diào)節(jié)的帶隙參考電壓以確保輸出電壓的精度在±1%以內(nèi)。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封裝;此外為了使兩個(gè)模塊直接相連,將P2口的部分引腳用排針引到一起,排針間距為 100mil,標(biāo)準(zhǔn) DIP 插針。圖3.4為開發(fā)板和無線數(shù)據(jù)傳輸模塊接口部分,圖3.5為5V電平轉(zhuǎn)3.3V電平部分。
圖3.4 開發(fā)板和無線數(shù)據(jù)傳輸模塊接口部分
圖3.5 5V電平轉(zhuǎn)3.3V電平部分
3.2.5 鍵盤部分
圖3.6 鍵盤部分
鍵盤部分用來實(shí)現(xiàn)人機(jī)通信。有四個(gè)按鍵開關(guān)構(gòu)成,分別為S5(P3.3/INT1), S6(P3.4/T0), S7(P3.5/T0), S5(P3.2/INT0),正常情況下均為高電平。當(dāng)鍵按下后,輸出為低電平。由于四個(gè)鍵盤的組成一樣,這里只畫出了S5的電路圖。圖3.6為鍵盤部分。
3.3 無線數(shù)據(jù)傳輸模塊
通過仔細(xì)的比較和反復(fù)的論證后,決定選用nRF2401芯片作為無線模塊的核心芯片,它的特點(diǎn)在上一章已經(jīng)詳細(xì)論述,這里不在重復(fù)。nRF2401芯片的典型應(yīng)用電路如圖3.7所示。
圖3.7 nRF2401芯片的典型應(yīng)用電路
從圖11可以看出,只需要很少外圍電路就可以組成無線數(shù)據(jù)傳輸模塊。
它與開發(fā)板的接口電路為圖3.8
各個(gè)接口的要求如下:
(1) VCC腳接電壓范圍為 1.9V~3.6V之間,不能在這個(gè)區(qū)間之外,超過3.6V將會(huì)燒毀模塊。推薦電壓3.3V左右。
(2) 除電源 VCC 和接地端,其余腳都可以直接和普通的 5V 單片機(jī)IO 口直接相連,無需電平轉(zhuǎn)換。當(dāng)然對(duì) 3V 左右的單片機(jī)更加適用了。
(3) 硬件上面沒有SPI的單片機(jī)也可以控制本模塊,用普通單片機(jī)IO口模擬SPI不需要單片機(jī)真正的串口介入,只需要普通的單片機(jī)IO口就可以了,當(dāng)然用串口也可以了。
(4)6腳,12腳為接地腳,需要和開發(fā)板的邏輯地連接起來。
圖3.8 無線數(shù)據(jù)傳輸模塊與開發(fā)板的接口電路
3.4 無線數(shù)據(jù)傳輸模塊和開發(fā)板的PCB圖設(shè)計(jì)
PCB板是一塊絕緣材料,在表面合理安放各種電子元件,并安排連接電子元件引腳間的銅膜導(dǎo)線,在不同的表面間有連接不同表面的銅導(dǎo)孔。
隨著電子技術(shù)的不斷發(fā)展進(jìn)步,PCB在復(fù)雜程度和應(yīng)用范圍方面都有了長(zhǎng)足的進(jìn)步,按復(fù)雜程度來分,可以將PCB板分為3類:1.單面印刷電路板;2.雙面印刷電路板;3.多層印刷電路板。為了方便布線,本系統(tǒng)所用的開發(fā)板和無線數(shù)據(jù)傳輸模塊均為雙層印刷電路板。
PCB的生成主要由四個(gè)過程組成:其一是原理圖的生成;其二是根據(jù)已經(jīng)生成的原理圖產(chǎn)生對(duì)應(yīng)的網(wǎng)絡(luò)表,網(wǎng)絡(luò)表是PCB圖和原理圖的紐帶;第三步是新建一個(gè)PCB文件,并導(dǎo)入網(wǎng)絡(luò)表;第四步是將合理布局元件,并用導(dǎo)線將元件的引腳連起來。
3.4.1 開發(fā)板的PCB圖
將開發(fā)板的原理圖按照以上的步驟生成相應(yīng)的PCB圖。如圖3.9所示:
在PCB圖設(shè)計(jì)的所有過程中,原理圖在上一節(jié)已經(jīng)生成。網(wǎng)絡(luò)表的生成也比較簡(jiǎn)單。由于PCB圖上使用元件的封裝來代表元件,因此原理圖中各個(gè)元件都要明確有自己的封裝方式,而且在繪制PCB圖前必須將用到的封裝所在的封裝庫(kù)調(diào)入。否則,在調(diào)入網(wǎng)絡(luò)表的過程中將會(huì)出現(xiàn)元件丟失的錯(cuò)誤。
圖3.9 開發(fā)板的PCB圖
開發(fā)板上主要用到兩個(gè)封裝庫(kù):Advpcb.ddb和Miscellaneous.ddb.另外由于USB電源接口,電源開關(guān),鍵盤和四位八段數(shù)碼管沒有對(duì)應(yīng)的封裝,因此需要使用元件庫(kù)編輯器建立新元件封裝。圖3.10為鍵盤封裝,圖3.11為USB封裝,圖3.12為開關(guān)封裝,圖3.13為四位八段數(shù)碼管封裝。
圖3.10 鍵盤封裝 圖3.11 USB封裝
圖3.12 開關(guān)封裝 圖3.13 四位八段數(shù)碼管封裝
各個(gè)元件的封裝的引腳的序號(hào)必須和原理圖中引腳的序號(hào)保持一致,不然將會(huì)在調(diào)如網(wǎng)絡(luò)表過程中出現(xiàn)管腳丟失的錯(cuò)誤。
下面再重點(diǎn)分析一下布線的過程。
布線是完成產(chǎn)品設(shè)計(jì)的重要步驟,可以說前面的準(zhǔn)備工作都是為它而做的,在整個(gè)PCB中,以布線的設(shè)計(jì)過程限定最高,技巧最細(xì)、工作量最大。本系統(tǒng)的PCB布線為雙面布線,布線的方式有兩種:自動(dòng)布線及交互式布線。但由于自動(dòng)布線效果不好,往往實(shí)際的效果和預(yù)計(jì)效果有很大的出入,因此全部使用交互式布線。布線過程中充分考慮到如何降低元件字之間互相的干擾。
首先根據(jù)印制線路板電流的大小,盡量加租電源線寬度,減少環(huán)路電阻,它們的關(guān)系是:地線>電源線>信號(hào)線。同時(shí)使電源線、地線的走向和數(shù)據(jù)傳遞的方向一致,這樣有助于增強(qiáng)抗噪聲能力。線條有講究:有條件做寬的線決不做細(xì);高壓及高頻線應(yīng)園滑,不得有尖銳的倒角,拐彎也不得采用直角。
由于采用雙層設(shè)計(jì),因此不可避免地將會(huì)使用到過孔。過孔太多,沉銅工藝稍有不慎就會(huì)埋下隱患。所以,設(shè)計(jì)中應(yīng)盡量減少過線孔。此外,應(yīng)該合理布置電源濾波/退耦電容:一般在原理圖中僅畫出若干電源濾波/退耦電容,但未指出它們各自應(yīng)接于何處。其實(shí)這些電容是為開關(guān)器件(門電路)或其它需要濾波/退耦的部件而設(shè)置的,布置這些電容就應(yīng)盡量靠近這些元部件,離得太遠(yuǎn)就沒有作用了。
3.4.2 無線數(shù)據(jù)傳輸模塊的PCB圖
由于無線數(shù)據(jù)傳輸模塊的核心芯片工作在2.4GHZ,因此在設(shè)計(jì)PCB圖時(shí)對(duì)干擾的控制要格外重視。在PCB設(shè)計(jì)時(shí),必須考慮到各種電磁干擾,注意調(diào)整電阻、電容和電感的位置,特別要注意電容的位置。
nRF2401的PCB為雙層板,底層一般不放置元件,頂層的空余地方敷上銅,這些敷銅通過過孔與底層的地相連。nRF2401的供電電源應(yīng)通過電容隔開,這樣有利于給nRF2401提供穩(wěn)定的電源。在PCB中,盡量多打一些通孔,使頂層和底層的地能夠充分接觸。nRF2401模塊的PCB如圖3.14所示。
圖3.14 無線數(shù)據(jù)傳輸模塊的PCB圖
第四章 硬件驅(qū)動(dòng)程序和串行口調(diào)試工具
驅(qū)動(dòng)程序是硬件電路的靈魂,沒有驅(qū)動(dòng)的硬件電路是沒有用的。STC89C58RD+是51類單片機(jī),可以像開發(fā)其他51單片機(jī)驅(qū)動(dòng)一樣開發(fā)它的驅(qū)動(dòng)程序。單片機(jī)軟件開發(fā)平臺(tái)選擇比較流行的Keil uVision2,因?yàn)楝F(xiàn)在關(guān)于Keil uVision2軟件的資料很多,這樣上手就會(huì)很快。
串行口調(diào)試工具是用來將PC機(jī)上的數(shù)據(jù)通過串行口發(fā)送到單片機(jī),和PC機(jī)接收從單片機(jī)發(fā)送過來的數(shù)據(jù)。選用Visual C++ 6.0來開發(fā)串行口調(diào)試工具,Visual C++ 6.0是微軟公司推出的一款優(yōu)秀開發(fā)工具,代碼緊湊,運(yùn)行速度快,而且比較適合低層開發(fā)。
4.1 硬件驅(qū)動(dòng)程序
整個(gè)數(shù)據(jù)傳輸系統(tǒng)有兩部分組成:與PC機(jī)相連的開發(fā)板為主機(jī)端,它不能移動(dòng),接收從機(jī)端發(fā)送過來的數(shù)據(jù),并向從機(jī)端發(fā)送指令;可以移動(dòng)的為從機(jī)端,它由開發(fā)板和無線數(shù)據(jù)傳輸模塊組成。由于兩端的地位和功能不同,因此對(duì)應(yīng)的驅(qū)動(dòng)程序也不同。
使用Keil uVision2開發(fā)硬件驅(qū)動(dòng)程序,它支持眾多不同公司的MCS51架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時(shí)還支持,PLM,匯編和C語言的程序設(shè)計(jì),它的界面和常用的微軟VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能。因此很多開發(fā)51應(yīng)用的工程師或普通的單片機(jī)愛好者,都對(duì)它十分喜歡。51 的編程語言常用的有二種,一種是匯編語言,一種是 C 語言。匯編語言的機(jī)器代碼生成效率很高但可讀性卻并不強(qiáng),復(fù)雜一點(diǎn)的程序就更是難讀懂,而 C 語言在大多數(shù)情況下其機(jī)器代碼生成效率和匯編語言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過匯編語言,而且 C 語言還可以嵌入?yún)R編來解決高時(shí)效性的代碼編寫問題。對(duì)于開發(fā)周期來說,中大型的軟件編寫用 C 語言的開發(fā)周期通常要小于匯編語言很多。綜合以上C語言的優(yōu)點(diǎn),在開發(fā)時(shí)選擇了C51語言.
4.1.1 主機(jī)端硬件驅(qū)動(dòng)程序
主機(jī)端的硬件驅(qū)動(dòng)程序主要有兩種功能:實(shí)現(xiàn)開發(fā)板通過串行口和PC機(jī)通信;實(shí)現(xiàn)開發(fā)板通過某些I/O口和無線數(shù)據(jù)傳輸模塊進(jìn)行通信。
STC89C58RD+單片機(jī)的串行口是一個(gè)全雙工通信接口,即能同時(shí)進(jìn)行發(fā)送和接收,它可以作UART用,也可以作為同步移位寄存器用,其禎格式和波特率可以通過軟件編程來設(shè)置,在使用上非常方便。
STC89C58RD+單片機(jī)串行口的工作方式和波特率由控制寄存器SCON和特殊功能寄存器PCON組成。
串行口控制寄存器SCON:
D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
特殊功能寄存器PCON:
D7 D6 D5 D4 D3 D2 D1 D0
SMOD
串行口可以通過軟件設(shè)置四種工作方式,各種工作方式的數(shù)據(jù)格式和波特率均有所不同,這四種工作方式如下:
1. 方式0
當(dāng)設(shè)定SM1、SM0為00時(shí),串行口工作于方式0,在方式0下,RXD為數(shù)據(jù)輸入/輸出端,TXD為同步脈沖輸出端,發(fā)送或接收的數(shù)據(jù)為8位,低位在前,高位在后,方式0的波特率固定震蕩頻率的1 /12,也就是每一機(jī)器周期傳送一位數(shù)據(jù)。方式0可以外接移位寄存器,將串行口擴(kuò)展為并行口,也可以外接同步輸入/輸出設(shè)備。發(fā)送完畢后,硬件自動(dòng)將TI置1。再次發(fā)送數(shù)據(jù)前,需要軟件將TI位清0。
REN為1時(shí),單片機(jī)允許接收數(shù)據(jù)。RXD為數(shù)據(jù)接收端,接受數(shù)據(jù)保存到SBUF接收緩沖器中。發(fā)送完畢后,硬件自動(dòng)將RI置1。再次接收數(shù)據(jù)前,需要通過軟件將RI清0。
2. 方式 1
當(dāng)設(shè)定SM1、SM0為01時(shí),串行口工作方式1。方式1為波特率可變的8位異步通信方式,由TXD發(fā)送RXD接收,一幀數(shù)據(jù)為10位,1位起始位(低電平),8位數(shù)據(jù)位(低位在前)和1位停止位(高電平),波特率取決于定時(shí)器 的T 溢出率(1/溢出周期)和波特率的選擇位SMOD。
3.方式2和方式3
當(dāng)設(shè)定SM0、SM1為10或11時(shí),串行口工作于方式2或方式3,這兩種方式都是9位異步通信,僅波特率不同,適用于多機(jī)通信。在方式2或方式3下,數(shù)據(jù)由TXD發(fā)送RXD接收,1幀數(shù)據(jù)為11位,1位起始位(低電平),8位數(shù)據(jù)位(低位在前),1位可編程位(第9位數(shù)據(jù),用作奇偶校驗(yàn)或地址/數(shù)據(jù)選擇),1位停止位(高電平)。與方式1相比,多了一位可編程位,發(fā)送時(shí),第9位數(shù)據(jù)為TB8,接收時(shí),第9位數(shù)據(jù)送入RB8。
通過以上單片機(jī)串行口各種工作方式的比較,由于使用一個(gè)開發(fā)板和PC機(jī)進(jìn)行單獨(dú)的通信,因此工作方式1比較適合系統(tǒng)的要求。通過設(shè)置合適的波特率和幀格式,來實(shí)現(xiàn)開發(fā)板和PC機(jī)之間準(zhǔn)確的數(shù)據(jù)傳遞。
由于PC機(jī)和單片機(jī)的處理速度的不同,PC機(jī)給開發(fā)板發(fā)送數(shù)據(jù)時(shí),單片機(jī)采用中斷的方式進(jìn)行數(shù)據(jù)接收。通過軟件設(shè)置單片機(jī)的傳輸屬性參數(shù)為”9600,N,8,1″,來實(shí)現(xiàn)和PC機(jī)端串行口傳輸速率同步。開發(fā)板向PC機(jī)發(fā)送數(shù)據(jù)時(shí),采用查詢方式,這樣可以節(jié)省單片機(jī)有限的資源。
開發(fā)板還要通過專門的接口和無線數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)交換,由于系統(tǒng)設(shè)計(jì)為點(diǎn)對(duì)點(diǎn)通信,因此只使用了nRF2401一個(gè)信道。nRF2401的數(shù)據(jù)傳輸方式為同步傳輸,因此使用普通的I/O口通過軟件方式模擬SPI方式傳輸。
nRF2401有四種工作模式:收發(fā)模式,配置模式,空閑模式和關(guān)機(jī)模式[16][17]。工作模式由PWR_UP 、CE、TX_EN和CS三個(gè)引腳決定,詳見表4.1。
表4.1 nRF2401的各種工作模式的設(shè)置方式
工作模式 PWR_UP CE CS
收發(fā)模式 1 1 0
配置模式 1 0 1
空閑模式 1 0 0
關(guān)機(jī)模式 0 * *
前文已經(jīng)講過有關(guān)nRF2401的收發(fā)方式,這里重點(diǎn)討論一下它的配置方式。nRF2401的所有配置工作都是通過CS、CLK1和DATA三個(gè)引腳完成,把其配置為ShockBurstTM收發(fā)模式需要15字節(jié)的配置字。
ShockBurst TM的配置字可以分為以下四個(gè)部分:
(1) 數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得nRF2401能夠區(qū)分接收數(shù)據(jù)包中的數(shù)據(jù)和CRC校驗(yàn)碼;
(2) 地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得nRF2401能夠區(qū)分地址和數(shù)據(jù);
(3) 地址:接收數(shù)據(jù)的地址,有通道1的地址和通道2的地址;
(4) CRC:使nRF2401能夠生成CRC校驗(yàn)碼和解碼。
nRF2401的配置字如表4.2所示:
在配置模式下要保持PWR_UP引腳為高電平,CE引腳為低電平,配置字從最高位開始,依次寫入nRF2401。在CS引腳的下降沿,新送入的配置字開始工作。
表4.2 nRF2401的配置字
位 位數(shù) 名字 功能
Shockb
Brst T
M 配置 143:120 24 TEST 保留
119:112 8 DATA2_W 接收頻道2有效數(shù)據(jù)長(zhǎng)度
111:104 8 DATA1_W 接收頻道1有效數(shù)據(jù)長(zhǎng)度
103:64 40 ADDR2 接收頻道2的地址,最高為5字節(jié)
63:24 40 ADDR1 接收頻道1的地址,最高為5字節(jié)
23:18 6 ADDR_W 接受頻道地址位數(shù)
17 1 CRC_L 8位或16位CRC校驗(yàn)
16 1 CRC_EN 使能CRC校驗(yàn)
常用器件配置 15 1 RX2_EN 使能第二頻道
14 1 CM 通信方式設(shè)置
13 1 RFDR_SB 發(fā)射數(shù)據(jù)速率
12:10 3 XO_F 晶震頻率
9:8 2 RF_PWR 發(fā)射輸出電源
7:1 7 RF_CH# 頻道設(shè)置
0 1 RX_EN 接收或發(fā)送操作
開發(fā)板通過串行口和PC機(jī)交換數(shù)據(jù)的流程圖如下:
圖4.1 開發(fā)板和PC機(jī)通過串行口交換數(shù)據(jù)的流程圖
開發(fā)板通過IO口和無線數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)交換的流程圖為圖4.2。
圖4.2開發(fā)板通過IO口和無線數(shù)據(jù)傳輸模塊進(jìn)行數(shù)據(jù)交換的流程圖
4.1.2 移動(dòng)端驅(qū)動(dòng)程序
移動(dòng)端的開發(fā)板的結(jié)構(gòu)和PC機(jī)端的開發(fā)板的結(jié)構(gòu)完全相同,但由于它不需要和PC機(jī)通信,只需要和無線數(shù)據(jù)傳輸模塊進(jìn)行通信。因此相對(duì)另一端的驅(qū)動(dòng)簡(jiǎn)單一些。具體編程規(guī)則在上一節(jié)已經(jīng)詳細(xì)敘述,這里不再多說,具體的程序是PC機(jī)端程序的一部分。
4.2 串行口調(diào)試工具
串行口調(diào)試工具是用微軟公司的visual c++6.0[20][21]開發(fā)的。幾乎所有世界級(jí)的軟件,從業(yè)界領(lǐng)先的Web瀏覽器到面向任務(wù)的企業(yè)應(yīng)用,都是使用Microsoft Visual C++開發(fā)系統(tǒng)來開發(fā)的。要用C++來開發(fā)Windows和Web上的高性能應(yīng)用程序,Visual C++是效率最高的首選工具。Visual C++ 6.0在不犧牲靈活性、性能和控制力度的同時(shí),給C++帶來了更高水平的生產(chǎn)效率。它具有可視化的界面,封裝了大量的類,使界面制作變的很簡(jiǎn)單,使用它可以方便快捷地開發(fā)Windows環(huán)境下的應(yīng)用程序。visual c++6.0專門為串行口通信提供了Mscomm[20][21]控件,使用該控件程序員不必花時(shí)間去了解比較復(fù)雜的API函數(shù),通過簡(jiǎn)單修改控件的屬性和使用控件提供的方法就可以實(shí)現(xiàn)對(duì)串口的配置,完成串口發(fā)送和接收數(shù)據(jù)。
4.2.1串行通信的基本原理
串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從CPU經(jīng)過串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。 在Windows環(huán)境下,串口是系統(tǒng)資源的一部分。 應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出資源申請(qǐng)要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。32位下串口通信程序可以用兩種方法實(shí)現(xiàn):利用ActiveX控件;使用API通信函數(shù)。在本次課程設(shè)計(jì)中,所用到的是MFC的MSComm控件,下面先將這個(gè)關(guān)鍵的控件做一下簡(jiǎn)單的介紹。
Microsoft Communications Control(以下簡(jiǎn)稱MSComm)是Microsoft公司提供的簡(jiǎn)化Windows下串行通信編程的ActiveX控件,為應(yīng)用程序提供串行通信功能,它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法。MSComm控件在串口編程時(shí)非常方便,其實(shí)際上是調(diào)用了API函數(shù),但我們不必再了解復(fù)雜的API函數(shù)就可控制串行通信。通信的過程,實(shí)際上是對(duì)屬性的操作和對(duì)控件事件的響應(yīng)。
在Windows操作系統(tǒng)中,串行通信采用”事件通知”方式,支持?jǐn)?shù)據(jù)按塊傳送。進(jìn)行通信時(shí),Windows開辟一個(gè)用戶定義的輸入輸出緩沖區(qū),每接收一個(gè)字符就產(chǎn)生一個(gè)低級(jí)硬件中斷,串行驅(qū)動(dòng)程序立即取得控制權(quán),并將字符放入輸入數(shù)據(jù)緩沖區(qū),然后將控制權(quán)返還正在運(yùn)行的應(yīng)用程序。如果輸入數(shù)據(jù)緩沖區(qū)滿了,驅(qū)動(dòng)程序用當(dāng)前定義的流控制機(jī)制通知發(fā)送方停止發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)也采用類似的處理方式,應(yīng)用程序?qū)⑿枰l(fā)送的數(shù)據(jù)放入輸出數(shù)據(jù)緩沖區(qū),串口每發(fā)送一個(gè)字符就產(chǎn)生一個(gè)低級(jí)硬件中斷。
Visual C++ 6.0通信控件Mscomm提供了功能完善的串口數(shù)據(jù)的發(fā)送和接收功能,Mscomm 控件具有兩種處理方式:一是事件驅(qū)動(dòng)(Event-driven)方法,一是查詢法。
1)事件驅(qū)動(dòng)方式。當(dāng)通信事件發(fā)生時(shí),MSCOMM控件會(huì)觸發(fā)OnComm事件,調(diào)用者可以捕獲該事件,通過檢查其CommEvent屬性便可確認(rèn)發(fā)生的是哪種事件或錯(cuò)誤,從而進(jìn)行相應(yīng)的處理。這種方法的優(yōu)點(diǎn)是響應(yīng)及時(shí)、可靠性高。
2)查詢方式。在程序的每個(gè)關(guān)鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯(cuò)誤。如果應(yīng)用程序較小,這種方法可能更可取。例如,如果寫一個(gè)簡(jiǎn)單的電話撥號(hào)程序,則沒有必要每接收1個(gè)字符都產(chǎn)生事件,因?yàn)槲┮坏却邮盏淖址钦{(diào)制解調(diào)器的”確定”響應(yīng)。
在使用MSCOMM控件時(shí),1個(gè)MSCOMM控件只能同時(shí)對(duì)應(yīng)1個(gè)串口。如果應(yīng)用程序需要訪問和控件多個(gè)串口,那么必須使用多個(gè)MSCOMM控件。
在VC++中,MSCOMM控件只對(duì)應(yīng)著1個(gè)C++類–CMSComm。由于MSCOMM控件本身沒有提供方法,所以CMSComm類除了Create()成員函數(shù)外,其他的函數(shù)都是Get/Set函數(shù)對(duì),用來獲取或設(shè)置控件的屬性。MSCOMM控件也只有1個(gè)OnComm事件,用來向調(diào)用者通知有通信事件發(fā)生。
MSCOMM控件有許多很重要的屬性,限于篇幅只給出幾個(gè)較為重要和常用的屬性。
表4.3 MSCOMM控件的重要屬性
屬 性 說 明
CommPort 通信端口號(hào)
Settings 以字符串形式表示的波特率、奇偶校驗(yàn)、數(shù)據(jù)位
PortOpen 通信端口的狀態(tài),打開或是關(guān)閉
Input 接收數(shù)據(jù)
Output 發(fā)送數(shù)據(jù)
InputMode 接收數(shù)據(jù)的類型:0為文本;1為二進(jìn)制
表4.4 程序中用到的所有控件,以及它們的ID
控件 ID 標(biāo)題
按鈕 ID_SEND 發(fā)送
按鈕 ID_CLEAR 清空
編輯框 IDC_EDIT_SEND
編輯框 IDC_EDIT_RCV
靜態(tài)文本 IDC_STATIC 接收緩沖區(qū)
靜態(tài)文本 IDC_STATIC 發(fā)送緩沖區(qū)
組框 IDC_STATIC 端口選擇
單選按鈕 IDC_1 端口1
單選按鈕 IDC_2 端口2
mscomm IDC_MSCOMM
表4.5 用到的變量和變量的類型
Control IDS Type Member
IDC_EDIT_SEND CString m_str_send
IDC_EDIT_RCV CString m_str_recv
IDC_MSCOMM CMSComm m_mscomm
Object IDS Messages Function
ID_SEND BN_CLICKED OnSend
ID_CLEAR BN_CLICKED OnClr
IDC_1 BN_CLICKED On_Com1
IDC_2 BN_CLICKED On_Com2
IDC_MSComm OnComm OnComm
4.2.2程序設(shè)計(jì)原理
第一步:初始化串行口。調(diào)用SetCommPort()函數(shù),選擇使用的端口好,然后設(shè)置波特率發(fā)送接收的處理方式,以及數(shù)據(jù)的傳輸方式,最后將串口打開。
第二步:發(fā)送數(shù)據(jù)。將要發(fā)送的字符串變成特定的類型后,調(diào)用函數(shù)SetOutput(),將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)
第三步:接受數(shù)據(jù)。將接收緩沖區(qū)中的數(shù)據(jù)通過GetInput()函數(shù)讀出,并將它轉(zhuǎn)換為Cstring類型,顯示在界面上。
程序的各個(gè)主要部分和一些流程圖:
(1)登陸界面后,程序首先將接收緩沖區(qū)和發(fā)送緩沖區(qū)清空
程序如下:
m_str_send=” “;
m_str_recv=” “;
UpdateData(FALSE);
(2)然后進(jìn)行串行口的初始化,也即是設(shè)置MSComm控件的各種屬性。首先要進(jìn)行端口的選擇,由于所用到的計(jì)算機(jī)只有兩個(gè)串行口,因此本程序只給了兩個(gè)選擇,具體的程序代碼如下:
void CMyDlg::On_Com1()
{
if(m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(FALSE);
m_mscomm.SetCommPort(1);
m_mscomm.SetSettings(”9600,n,8,1″);
m_mscomm.SetRThreshold(1);
m_mscomm.SetSThreshold(0);
m_mscomm.SetInputLen(0);
m_mscomm.SetInputMode(1);
m_mscomm.SetPortOpen(TRUE);
}
void CMyDlg::On_Com2()
{
if(m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(FALSE);
m_mscomm.SetCommPort(2);
m_mscomm.SetSettings(”9600,n,8,1″);
m_mscomm.SetRThreshold(1);
m_mscomm.SetSThreshold(0);
m_mscomm.SetInputLen(0);
m_mscomm.SetInputMode(1);
m_mscomm.SetPortOpen(TRUE);
}
1)CommPort:分別選1和2。
2) Setting設(shè)置或返回串行端口的波特率:9600、無奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)為8、1位停止位。
3) InBufferSize:設(shè)置接收緩沖區(qū)為1024字節(jié)。
4) RThreshold:設(shè)置當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)為1時(shí),觸發(fā)MSCOMM的OnComm事件,然后由計(jì)算機(jī)將接收緩沖的數(shù)據(jù)讀出,并將接收緩沖區(qū)清空。
5) InputLen:值為0,設(shè)置INPUT讀取整個(gè)緩沖區(qū)的內(nèi)容。
6) OutBufferSize:設(shè)置發(fā)送緩沖區(qū)為512字節(jié)。
(3)發(fā)送數(shù)據(jù)的源程序代碼
void CMyDlg::OnSend()
{
if(!m_mscomm.GetPortOpen())
m_mscomm.SetPortOpen(TRUE);
UpdateData(TRUE);
m_mscomm.SetOutput(COleVariant(m_str_send)); //發(fā)送數(shù)據(jù)
}
將文本框內(nèi)的字符串送到變量m_str_send中,然后將字符轉(zhuǎn)化為ColeVariant類型的數(shù)據(jù),再通過SetOutput函數(shù)將數(shù)據(jù)發(fā)送到發(fā)送緩沖區(qū)中。
(4)接收數(shù)據(jù)的源程序代碼
void CMyDlg::OnComm()
{
VARIANT variant_tmp;
COleSafeArray safearray_tmp;
LONG len,i;
BYTE buf[2048];
CString str_tmp;
if(m_mscomm.GetCommEvent()==2)
{
variant_tmp=m_mscomm.GetInput();
safearray_tmp=variant_tmp;
len=safearray_tmp.GetOneDimSize();
for(i=0;i
for(i=0;i
BYTE ch=*(char*)(buf+i);
str_tmp.Format(”%c”,ch);
m_str_recv+=str_tmp;
}
}
UpdateData(FALSE);
}
當(dāng)m_mscomm.GetCommEvent()==2時(shí)候,數(shù)據(jù)到來,觸發(fā)OnComm事件,調(diào)用該函數(shù)。首先通過m_mscomm.GetInput()將接收緩沖區(qū)內(nèi)的數(shù)據(jù)讀到變量variant_tmp中,再將variant_tmp賦予safearray_tmp來實(shí)現(xiàn)數(shù)據(jù)類型轉(zhuǎn)化為ColeSafeArray。通過safearray_tmp.GetOneDimSize()求出接收到的字符的總長(zhǎng)度,再將每個(gè)ColeSafeArray變量轉(zhuǎn)化為Byte類型的變量,最后轉(zhuǎn)化為字符類型,并將它顯示在文本框內(nèi)。
void CMyDlg::OnComm() 的流程圖:
圖4.3 void CMyDlg::OnComm() 的流程圖
(5)清空功能函數(shù)源代碼
void CMyDlg::OnClr()
{
m_str_send=” “;
m_str_recv=” “;
UpdateData(FALSE);
}
總的程序流程圖如圖4.4所示
圖4.5是PC機(jī)通過端口1向單片機(jī)發(fā)送數(shù)據(jù)時(shí)候的圖型界面。進(jìn)入界面后,首先要進(jìn)行根據(jù)連接的串行口選擇要初始化的端口,然后使用鍵盤在發(fā)送緩沖區(qū)內(nèi)輸入一系列的字符。等單片機(jī)開發(fā)板上電后,單擊發(fā)送按鍵將數(shù)據(jù)發(fā)送出去。
圖4.6是PC機(jī)通過串口接收單片機(jī)發(fā)送過來的數(shù)據(jù)時(shí)候的圖形界面。在緩沖區(qū)接收的數(shù)據(jù)為二進(jìn)制形式,程序內(nèi)已經(jīng)將這些二進(jìn)制轉(zhuǎn)化為字符串在界面上顯示。
圖4.7是串行口調(diào)試工具初始運(yùn)行時(shí)候的圖形界面。
事件驅(qū)動(dòng)方式時(shí),由計(jì)算機(jī)直接管理,字節(jié)之間不可控,而且單片機(jī)串行口和PC機(jī)串行口速率差別較大,接收程序一定要精心合理的設(shè)計(jì),才能使傳輸穩(wěn)定可靠,否則很容易出現(xiàn)意想不到的問題。在調(diào)試過程中,如果不小心將串行口調(diào)試工具的波特率和開發(fā)板串行口的波特率設(shè)置為不同,就會(huì)出現(xiàn)錯(cuò)誤。程序中已經(jīng)將串行口的波特率設(shè)置為9600bps,這樣可以避免錯(cuò)誤。
圖4.5通過端口1進(jìn)行發(fā)送時(shí)候的圖型界面
圖4.6 通過串口接收時(shí)候的圖形界面
圖4.7 串行口調(diào)試工具的運(yùn)行界面
第五章 總結(jié)與展望
5.1 全文總結(jié)
通過這次畢業(yè)設(shè)計(jì),我學(xué)到了不少課本上沒有的知識(shí),也鍛煉了自己的動(dòng)手能力,將以前學(xué)過的零散的知識(shí)串到一起。
首先在畢業(yè)設(shè)計(jì)剛開始的調(diào)研階段,我學(xué)會(huì)了怎么通過各種方式查詢相關(guān)的資料。通過對(duì)這些資料的學(xué)習(xí),我大致了解了無線通信的發(fā)展現(xiàn)狀以及未來的發(fā)展趨勢(shì),認(rèn)識(shí)到目前無線通信方面的各種各樣的協(xié)議,以及它們之間的競(jìng)爭(zhēng)。了解了無線通信方面的先進(jìn)技術(shù),這些都為我未來的學(xué)習(xí)指明了方向。
我畢業(yè)設(shè)計(jì)主要涉及硬件和軟件兩個(gè)方面的內(nèi)容,通過這些我的硬件和軟件開發(fā)能力都獲得了提高。首先在硬件方面,基本了解了電子產(chǎn)品的開發(fā)流程和所要做的工作?;菊莆樟薖rotel 99 SE設(shè)計(jì)原理圖和簡(jiǎn)單的PCB圖的方法,并設(shè)計(jì)了一個(gè)單片機(jī)最小系統(tǒng)。通過開發(fā)板的設(shè)計(jì)和硬件搭建的過程,使我對(duì)51系列單片機(jī)的接口有了更深層次的理解,熟悉了一些單片機(jī)常用的外圍電路的引腳和連接方法,如LED數(shù)碼管,鍵盤等。
在軟件方面,通過串行口調(diào)試工具的開發(fā),我基本掌握了Visual C++ 6.0的使用方法,加深了對(duì)類封裝的理解。通過開發(fā)板驅(qū)動(dòng)程序的開發(fā),使我熟練掌握了Keil uVision2,熟悉了51系列單片機(jī)內(nèi)部的寄存器和編程規(guī)則,以及如何控制外圍電路。
當(dāng)然,由于單片機(jī)功能的局限性,當(dāng)面對(duì)很復(fù)雜的系統(tǒng)時(shí)像無線點(diǎn)菜系統(tǒng),單片機(jī)就不太合適。這是因?yàn)閱纹瑱C(jī)的引腳過少,能夠使用操作系統(tǒng)過于簡(jiǎn)單,不能進(jìn)行復(fù)雜的工作調(diào)度,也不能驅(qū)動(dòng)復(fù)雜的外圍電路,因此使用單片機(jī)完全實(shí)現(xiàn)點(diǎn)菜系統(tǒng)的要求比較困難。
近幾年來,處理器已經(jīng)發(fā)展到32位機(jī),尤其是以ARM(Advanced RISC Machines)為內(nèi)核的32位處理器受到越來越多嵌入式開發(fā)人員的青睞。ARM處理器支持復(fù)雜的嵌入式操作系統(tǒng),例如Win CE,UClinux等。可以進(jìn)行復(fù)雜的功能調(diào)度,而且能夠驅(qū)動(dòng)比較復(fù)雜的外圍電路例如觸摸屏等。這樣使用ARM處理器和嵌入式操作系統(tǒng),配合嵌入式移動(dòng)數(shù)據(jù)庫(kù)技術(shù),更能完成點(diǎn)菜系統(tǒng)的要求。所以,畢業(yè)設(shè)計(jì)也給我將來的學(xué)習(xí)指明了一個(gè)方向。
單就本論文而言,主要完成了以下工作:
1.在ZigBee協(xié)議的基礎(chǔ)上,以51系列單片機(jī)為處理器,配合一定的外圍電路構(gòu)建了硬件開發(fā)平臺(tái)。
2.用C51語言為硬件部分編寫驅(qū)動(dòng)程序,并用Visual C++6.0開發(fā)了串口調(diào)試工具。
5.2 研究展望
目前,無線通信的各種技術(shù)呈現(xiàn)百花齊放的局面。但是隨著經(jīng)濟(jì)的發(fā)展,人民需求的提高,無線通信技術(shù)依然有很大的發(fā)展空間。在以下方面仍然有很長(zhǎng)的路要走。
1隨著IP(Internet Protocol,網(wǎng)際協(xié)議)技術(shù)的發(fā)展,無線通信網(wǎng)和IP網(wǎng)有融合的趨勢(shì)。尤其是多媒體信息需求的增加,多媒體信息對(duì)實(shí)時(shí)性要求不高的特點(diǎn),使得利用無線通信網(wǎng)傳輸多媒體信息成為一大熱門。
2隨著人民生活水平的提高,生活方式的轉(zhuǎn)變,無線通信技術(shù)必然向移動(dòng)化和便攜化方向發(fā)展。
3由于無線頻譜資源有限和無線通信傳輸信道的特殊性,使得如何提高頻譜資源的利用率以及提高抗干擾能力成為未來很熱門的研究方向。
4 現(xiàn)代微電子技術(shù)發(fā)展迅猛,摩爾定理仍然有效,集成電路技術(shù)已經(jīng)發(fā)展到SOC,32位的ARM處理器已經(jīng)得到了廣泛的應(yīng)用。因此在未來越來越復(fù)雜的嵌入式系統(tǒng)開發(fā)中,32位處理器和嵌入式操作系統(tǒng)將得到更廣泛的應(yīng)用。
評(píng)論
查看更多