




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 編 號(hào): 審定成績(jī): 重慶郵電大學(xué)物聯(lián)網(wǎng)工程課程設(shè)計(jì)(報(bào)告)設(shè)計(jì)題目:行走過(guò)程中的加速度測(cè)試節(jié)點(diǎn)設(shè)計(jì)學(xué) 院 名 稱 :自動(dòng)化學(xué)院學(xué) 生 姓 名 :專 業(yè) :物聯(lián)網(wǎng)工程班 級(jí) :學(xué) 號(hào) :指 導(dǎo) 教 師 :填表時(shí)間: 2015 年 11 月重慶郵電大學(xué)教務(wù)處制一、題目:行走過(guò)程中的加速度測(cè)試節(jié)點(diǎn)設(shè)計(jì)二、設(shè)計(jì)任務(wù):運(yùn)用所學(xué)傳感器技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)和物聯(lián)網(wǎng)工程等方面的知識(shí),設(shè)計(jì)基于三軸加速度傳感器的測(cè)試節(jié)點(diǎn),獲取行走過(guò)程中的手臂或小腿加速度,完成數(shù)字量輸入或模擬量輸入的硬件設(shè)計(jì)和低功耗無(wú)線通信協(xié)議軟件設(shè)計(jì)等工作。具體任務(wù)如下:三、設(shè)計(jì)要求:1畫(huà)出加速度測(cè)試節(jié)點(diǎn)的結(jié)構(gòu)圖。2選擇低功耗無(wú)線通信芯片和三軸
2、加速度傳感器,設(shè)計(jì)硬件電路。3開(kāi)發(fā)完成ZigBee協(xié)議,完成與上位機(jī)的通信。4畫(huà)出程序流程圖并編寫(xiě)調(diào)試代碼。四、參考資料:1. 李朝青單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版)北京航空航天大學(xué)出版社,1998年.2. 胡向東.傳感技術(shù).重慶大學(xué)出版社,2006年第1版.3. 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社,2002年.4. 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò).北京:電子工業(yè)出版社,2003年.摘要根據(jù)要求,基于ZigBee協(xié)議使用單片機(jī)和三軸加速度傳感器的測(cè)試節(jié)點(diǎn),并且能夠通過(guò)低功耗通信協(xié)議將采集到的數(shù)據(jù)發(fā)送出去并接收。器材上,我們選擇使用了AT89C51作為主控芯片,兩塊CC2530用來(lái)傳輸數(shù)據(jù)組網(wǎng),
3、加速度傳感器則選擇了ADXL345三軸加速度傳感器模塊,通信協(xié)議使用ZigBee協(xié)議,傳感器數(shù)據(jù)通信協(xié)議采用IIC協(xié)議。將ADXL345三軸加速度傳感器模塊連接到一塊CC2530上,作為加速度測(cè)試節(jié)點(diǎn)與ZigBee終端節(jié)點(diǎn),另一塊CC2530與AT89C51連接,則作為接收加速度數(shù)據(jù)的協(xié)調(diào)器節(jié)點(diǎn),并通過(guò)串口通信與上位機(jī)通信。關(guān)鍵詞:ZigBee,加速度,IIC目錄摘要1一、設(shè)計(jì)分析31. 1 ZigBee整體概述31.2 IEEE 802.15.4標(biāo)準(zhǔn)概述41.3 ZigBee協(xié)議體系結(jié)構(gòu)41.4 AT89C51簡(jiǎn)述51.5 CC2530概述51.6 ADXL345概述6二、解決方案82.1具
4、體過(guò)程8三、串口總線對(duì)比123.1 CAN總線123.2 UART總線133.3 SPI總線143.4 IIC總線163.5綜合對(duì)比17四、設(shè)計(jì)總結(jié)20附錄代碼21一、設(shè)計(jì)分析此系統(tǒng),采集模塊采集了數(shù)據(jù),通過(guò)IIC通信協(xié)議傳輸?shù)狡渲幸粔Kcc2530開(kāi)發(fā)板,然后通過(guò)ZigBee協(xié)議發(fā)送到另一塊cc2530開(kāi)發(fā)板子來(lái)完成。最后通過(guò)串口傳輸?shù)缴衔粰C(jī)顯示數(shù)據(jù)。系統(tǒng)分析圖如圖1.1所示。圖1.1系統(tǒng)分析圖1. 1 ZigBee整體概述物聯(lián)網(wǎng)的定義是:物聯(lián)網(wǎng)(Internet of Things)是一個(gè)基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等信息承載體,讓所有能夠被獨(dú)立尋址的普通物理對(duì)象實(shí)現(xiàn)互聯(lián)互通的網(wǎng)絡(luò)。它具有普通對(duì)象
5、設(shè)備化、自治終端互聯(lián)化和普適服務(wù)智能化3個(gè)重要特征。無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Network, WSN)是由大量的靜止或移動(dòng)的傳感器以自組織和多跳的方式構(gòu)成的無(wú)線網(wǎng)絡(luò),以協(xié)作地感知、采集、處理和傳輸網(wǎng)絡(luò)覆蓋地理區(qū)域內(nèi)被感知對(duì)象的信息,并最終把這些信息發(fā)送給網(wǎng)絡(luò)的所有者。ZigBee是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議。根據(jù)國(guó)際標(biāo)準(zhǔn)規(guī)定,ZigBee技術(shù)是一種短距離、低功耗的無(wú)線通信術(shù)。協(xié)議棧是指網(wǎng)絡(luò)中各層協(xié)議的總和,其形象的反映了一個(gè)網(wǎng)絡(luò)中文件傳輸?shù)倪^(guò)程:由上層協(xié)議到底層協(xié)議,再由底層協(xié)議到上層協(xié)議。使用最廣泛的是英特網(wǎng)協(xié)議棧,由上到下的協(xié)議分別是:應(yīng)用層
6、(HTTP,TELNET,DNS,EMAIL等),運(yùn)輸層(TCP,UDP),網(wǎng)絡(luò)層(IP),鏈路層(WI-FI,以太網(wǎng),令牌環(huán),F(xiàn)DDI等),物理層。1.2 IEEE 802.15.4標(biāo)準(zhǔn)概述IEEE 802.15.4網(wǎng)絡(luò)是指在一個(gè)POS內(nèi)使用相同無(wú)線信道并通過(guò)IEEE 802.15.4標(biāo)準(zhǔn)相互通信的一組設(shè)備的集合,又名LR-WPAN網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)中,根據(jù)設(shè)備所具有的通信能力,可以分為全功能設(shè)備(Full Function Device , FFD)和精簡(jiǎn)功能設(shè)備(Reduced Function Device , RFD)。該標(biāo)準(zhǔn)定義了物理層(PHY)和介質(zhì)訪問(wèn)控制層(MAC)。這種低速率
7、無(wú)線個(gè)人局域網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單、成本低廉、具有有限的功率和靈活的吞吐量。低速率無(wú)線個(gè)人局域網(wǎng)的主要目標(biāo)是實(shí)現(xiàn)安裝容易、數(shù)據(jù)傳輸可靠、短距離通信、極低的成本、合理的電池壽命,并且擁有一個(gè)簡(jiǎn)單而且靈活的通信網(wǎng)絡(luò)協(xié)議。1.3 ZigBee協(xié)議體系結(jié)構(gòu)ZigBee協(xié)議棧建立在IEEE 80215 4的PHY層和MAC子層規(guī)范之上。它實(shí)現(xiàn)了網(wǎng)絡(luò)層(networklayer,NWK)和應(yīng)用層(applicationlayer,APL)。在應(yīng)用層內(nèi)提供了應(yīng)用支持子層(application support sublayer,APS)和ZigBee設(shè)備對(duì)象(ZigBee Device Object,ZDO)。應(yīng)
8、用框架中則加入了用戶自定義的應(yīng)用對(duì)。ZigBee的體系結(jié)構(gòu)由稱為層的各模塊組成。每一層為其上層提供特定的服務(wù):即由數(shù)據(jù)服務(wù)實(shí)體提供數(shù)據(jù)傳輸服務(wù);管理實(shí)體提供所有的其他管理服務(wù)。每個(gè)服務(wù)實(shí)體通過(guò)相應(yīng)的服務(wù)接入點(diǎn)(SAP)為其上層提供一個(gè)接口,每個(gè)服務(wù)接入點(diǎn)通過(guò)服務(wù)原語(yǔ)來(lái)完成所對(duì)應(yīng)的功能。1.4 AT89C51簡(jiǎn)述AT89C51是市面上一款最常見(jiàn)的單片機(jī),也是國(guó)內(nèi)科教實(shí)驗(yàn)最常用的。是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,AT89C2051是一種帶2K字節(jié)閃
9、存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。圖1.4所示雙列直插式封裝(DIP. Dualln-line Package), DIP封裝與MCS一51系列單片機(jī)的引腳完全兼容,可互換使用。圖1.4 雙列直插式封裝1.5 CC2530概述CC2530 是用于2.4-GHz IEEE 802.15.4、ZigBee 和RF4CE 應(yīng)用的一個(gè)真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總
10、的材料成本建立強(qiáng)大的網(wǎng)絡(luò)節(jié)點(diǎn)。CC2530 結(jié)合了領(lǐng)先的RF 收發(fā)器的優(yōu)良性能,業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051 CPU,系統(tǒng)內(nèi)可編程閃存,8-KB RAM 和許多其它強(qiáng)大的功能。CC2530 有四種不同的閃存版本:CC2530F32/64/128/256,分別具有32/64/128/256KB 的閃存。CC2530 具有不同的運(yùn)行模式,使得它尤其適應(yīng)超低功耗要求的系統(tǒng)。運(yùn)行模式之間的轉(zhuǎn)換時(shí)間短進(jìn)一步確保了低能源消耗。CC2530外圍電路圖如圖1.4所示。圖1.5 CC2530外圍電路圖1.6 ADXL345概述ADXL345是一款小而薄的超低功耗3軸加速度計(jì),分辨率高(13位),測(cè)量范圍達(dá)16g。數(shù)
11、字輸出數(shù)據(jù)為16位二進(jìn)制補(bǔ)碼格式,可通過(guò)SPI(3線或4線)或I2C數(shù)字接口訪問(wèn)。ADXL345非常適合移動(dòng)設(shè)備應(yīng)用。它可以在傾斜檢測(cè)應(yīng)用中測(cè)量靜態(tài)重力加速度,還可以測(cè)量運(yùn)動(dòng)或沖擊導(dǎo)致的動(dòng)態(tài)加速度。其高分辨率(3.9mg/LSB),能夠測(cè)量不到1.0的傾斜角度變化。該器件提供多種特殊檢測(cè)功能?;顒?dòng)和非活動(dòng)檢測(cè)功能通過(guò)比較任意軸上的加速度與用戶設(shè)置的閾值來(lái)檢測(cè)有無(wú)運(yùn)動(dòng)發(fā)生。敲擊檢測(cè)功能可以檢測(cè)任意方向的單振和雙振動(dòng)作。自由落體檢測(cè)功能可以檢測(cè)器件是否正在掉落。這些功能可以獨(dú)立映射到兩個(gè)中斷輸出引腳中的一個(gè)。圖1.6.1、圖1.6.2分別是外圍電路圖、接線樣例。圖1.6.1 ADXL345外圍電路
12、圖圖1.6.2 接線樣例二、解決方案解決方案采取的是,AT89C51對(duì)加速度傳感器進(jìn)行數(shù)據(jù)通信采集,然后將數(shù)據(jù)通過(guò)串口發(fā)送給相連的CC2530協(xié)調(diào)器,在與處理和與上位機(jī)通信,使用ZigBee協(xié)議棧在其應(yīng)用層進(jìn)行采集、組網(wǎng)、傳輸?shù)纫幌盗袆?dòng)作。開(kāi)發(fā)過(guò)程中代碼選擇使用c語(yǔ)言,完成課題,因?yàn)閰R編相對(duì)于C語(yǔ)言不便于理解思考,快速開(kāi)發(fā)。首先選擇硬件,我們選擇市面上最常見(jiàn)的單片機(jī)AT89C51,這是一款國(guó)內(nèi)科教實(shí)驗(yàn)最常見(jiàn)的單片機(jī),簡(jiǎn)單易上手開(kāi)發(fā),價(jià)格也低廉。由于需要基于ZigBee協(xié)議進(jìn)行開(kāi)發(fā),所以我們選擇了對(duì)ZigBee很好兼容性的cc2530開(kāi)發(fā)板進(jìn)行組網(wǎng)傳輸,這是一款比較適合新手開(kāi)發(fā)學(xué)習(xí)的板子。它有著
13、很好的低功耗收發(fā)器能力,總體材料價(jià)格很低,作為ZigBee節(jié)點(diǎn)低功耗,低成本的方向有著相同的一致性。對(duì)于傳感器的選擇,我們選擇了ADX1345三軸加速度傳感器,他是采用數(shù)字量輸出,有著低功耗、低成本、低誤差的特點(diǎn),采用IIC通信,滿足ZigBee要求的低功耗、低成本的主要特點(diǎn),故選擇了它。傳感器支持IIC和spi兩種通信方式,選擇的時(shí)候,選擇了,相對(duì)較簡(jiǎn)單,而且連線少的IIC通信方式,速度快,連線少更加適合ZigBee節(jié)點(diǎn)。而不是采用SPI,因?yàn)樗倪B線方式比較復(fù)雜,雖然它是全雙工,但是考慮設(shè)計(jì)要求,故選擇IIC。整個(gè)代碼大概可以分成3部分,第一部分是數(shù)據(jù)采集程序,它包括IIC通信代碼和讀出傳
14、感器寄存器內(nèi)部的測(cè)量數(shù)據(jù)兩部分。第二部分是節(jié)點(diǎn)數(shù)據(jù)傳輸,節(jié)點(diǎn)采集的加速度數(shù)據(jù)發(fā)送給協(xié)調(diào)器,與協(xié)調(diào)器相連的51單片機(jī)收到數(shù)據(jù)后進(jìn)行相關(guān)處理。第三部分是上位機(jī)的數(shù)據(jù)傳輸和顯示,52單片機(jī)與上位機(jī)通過(guò)串口連接進(jìn)行數(shù)據(jù)通信顯示。2.1具體過(guò)程 工作具體過(guò)程如圖2.1所示。圖2.1 工作流程圖接下來(lái)進(jìn)行部分源代碼分析:1)先進(jìn)行一系列的串口定義: 第1.2行代碼進(jìn)行IIC總線需要用到的兩個(gè)串口進(jìn)行宏定義,然后3.4行分別對(duì)需要用到的改變P1_1串口的方向。最后一行宏定義需要用到的硬件地址。2)串口初始化:表示串口位真,定義波特率,關(guān)閉流量控制,最后打開(kāi)串口。3)初始化傳感器:經(jīng)過(guò)查詢ADXL355的使用
15、手冊(cè)后,選擇傳感器的模式,電源類型,打開(kāi)中斷,偏移量等等基礎(chǔ)能力。4)讀取數(shù)據(jù):ADXl345的儲(chǔ)存單元是0x30x5,先打開(kāi)IIC總線然后送設(shè)備地址+寫(xiě)信號(hào),接下來(lái)送存儲(chǔ)單元地址,從0x3開(kāi)始,再給一個(gè)起始信息,發(fā)送設(shè)備地址+讀信號(hào),連續(xù)讀取6個(gè)地址數(shù)據(jù),存儲(chǔ)中BUF,收到最后一個(gè)=數(shù)據(jù)需要回NOACK,寫(xiě)停止信號(hào)。整理數(shù)據(jù)并放入數(shù)組以便發(fā)送出去,由于ADXl345采集到的數(shù)據(jù)是二進(jìn)制補(bǔ)碼的形式所以需要進(jìn)行轉(zhuǎn)換,例如:變換完成后并放入數(shù)組后就可以利用協(xié)議棧自帶的發(fā)送程序發(fā)送給協(xié)調(diào)器了。最后通過(guò)串口通信傳送給上位機(jī)就完成了整個(gè)實(shí)驗(yàn)。三、串口總線對(duì)比本次課程設(shè)計(jì),本人負(fù)責(zé)對(duì)加速度傳感器與51單片
16、機(jī)通信的數(shù)據(jù)傳輸協(xié)議進(jìn)行對(duì)比研究,從中采取最適合本課程設(shè)計(jì)的通信協(xié)議方式。進(jìn)行對(duì)比的多種工業(yè)應(yīng)用串行總線有:IIC,SPI,UART,CAN四種。3.1 CAN總線CAN,全稱為“Controller Area Network”,即控制器局域網(wǎng),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。最初,CAN被設(shè)計(jì)作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之 間交換信息,形成汽車電子控制網(wǎng)絡(luò)。比如:發(fā)動(dòng)機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。CAN是一種多主方式的串行通訊總線,基本設(shè)計(jì)規(guī)范要求有高的位速率,高抗電磁干擾性,而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤,因?yàn)樗挠布?/p>
17、錯(cuò)誤檢定特性增強(qiáng)了CAN的抗電磁干擾能力。一個(gè)由CAN 總線構(gòu)成的單一網(wǎng)絡(luò)中,理論上可以掛接無(wú)數(shù)個(gè)節(jié)點(diǎn)。實(shí)際應(yīng)用中,節(jié)點(diǎn)數(shù)目受網(wǎng)絡(luò)硬件的電氣特性所限制。CAN 可提供高達(dá)1Mbit/s的數(shù)據(jù)傳輸速率,這使實(shí)時(shí)控制變得非常容易。另外,。當(dāng)信號(hào)傳輸距離達(dá)到10Km時(shí),CAN 仍可提供高達(dá)50Kbit/s的數(shù)據(jù)傳輸速率。它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。較之許多RS-485基于R線構(gòu)建的分布式控制系統(tǒng)而言,基于CAN總線的分布式控制系統(tǒng)具有明顯的優(yōu)越性。主要特點(diǎn):1) 低成本,結(jié)構(gòu)簡(jiǎn)單,只有2根線與外部相連。2) 極高的總線利用率3) 很遠(yuǎn)的數(shù)據(jù)傳輸距離(長(zhǎng)達(dá)10Km,速率低于5K
18、bps)4) 高速的數(shù)據(jù)傳輸速率(高達(dá)1Mbit/s,通信距離小于40M)5) 可根據(jù)報(bào)文的ID決定接收或屏蔽該報(bào)文6) 內(nèi)部集成了錯(cuò)誤探測(cè)和管理模塊,可靠性高7) 發(fā)送的信息遭到破壞后,可自動(dòng)重發(fā)8) 節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下具有自動(dòng)退出總線的功能9) 報(bào)文不含源地址或目標(biāo)地址,僅用標(biāo)志符來(lái)指示功能信息、優(yōu)先級(jí)信息,沒(méi)有主從之分。由于CAN總線具有很高的實(shí)時(shí)性能,因此,CAN已經(jīng)在汽車工業(yè)、航空工業(yè)、工業(yè)控制、安全防護(hù)等領(lǐng)域中得到了廣泛應(yīng)用。圖3.1是CAN總線的簡(jiǎn)單應(yīng)用示例圖3.1 CAN總線應(yīng)用示例圖3.2 UART總線UART是一種通用串行數(shù)據(jù)總線,用于異步通信,也就是我們經(jīng)常所說(shuō)的串口
19、。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在嵌入式設(shè)計(jì)中,UART用來(lái)主機(jī)與輔助設(shè)備通信,如汽車音響與外接AP之間的通信,與PC機(jī)通信包括與監(jiān)控調(diào)試器和其它器件,如EEPROM通信。它比IIC、SPI這兩種同步串口的結(jié)構(gòu)要復(fù)雜很多,一般由波特率產(chǎn)生器(產(chǎn)生的波特率等于傳輸波特率的16倍)、UART接收器、UART發(fā)送器組成,硬件上由兩根線,一根用于發(fā)送,一根用于接收。主機(jī)和從機(jī)通信至少要接三根線,RX、TX和GND。TX用于發(fā)送數(shù)據(jù),RX用于接受數(shù)據(jù)。如果A是PC機(jī),B是單片機(jī),A和B之間還要接一塊電平轉(zhuǎn)換芯片,用于將TTL/CMOS(單片機(jī)電平)轉(zhuǎn)換為RS232(PC機(jī)電平)。UART總線
20、,基本都用于調(diào)試,是計(jì)算機(jī)中串行通信端口的關(guān)鍵部分。如我們經(jīng)常用的單片機(jī)和PC機(jī)調(diào)試,用串口助手。它比較少用于工業(yè)應(yīng)用。圖3.2是UART總線簡(jiǎn)圖,圖3.3是UART總線結(jié)構(gòu)圖。圖3.2 UART總線簡(jiǎn)圖圖3.2 UART總線簡(jiǎn)圖3.3 SPI總線SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫(xiě)。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳。SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要至少4根線,事實(shí)上3根也可以(單向傳輸時(shí))。也是所有基于SPI的設(shè)備共有的,它們
21、是SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)、SCLK(時(shí)鐘)、CS(片選)。如果用通用IO口模擬SPI總線,必須要有一個(gè)輸出口(SDO),一個(gè)輸入口(SDI),另一個(gè)口則視實(shí)現(xiàn)的設(shè)備類型而定,如果要實(shí)現(xiàn)主從設(shè)備,則需輸入輸出口,若只實(shí)現(xiàn)主設(shè)備,則需輸出口即可,若只實(shí)現(xiàn)從設(shè)備,則只需輸入口即可。主器件為時(shí)鐘提供者,可發(fā)起讀從器件或?qū)憦钠骷僮?。這時(shí)主器件將與一個(gè)從器件進(jìn)行對(duì)話。當(dāng)總線上存在多個(gè)從器件時(shí),要發(fā)起一次傳輸,主器件將把該從器件選擇線拉低,然后分別通過(guò) MOSI 和 MISO 線啟動(dòng)數(shù)據(jù)發(fā)送或接收。圖3.3點(diǎn)對(duì)點(diǎn)SPI通信原理圖SPI 時(shí)鐘速度很快,范圍可從幾兆赫茲到幾十兆赫茲,且沒(méi)有系統(tǒng)
22、開(kāi)銷,這一點(diǎn)比IIC優(yōu)秀。但是相應(yīng)地,SPI 在系統(tǒng)管理方面的缺點(diǎn)是缺乏流控機(jī)制,無(wú)論主器件還是從器件均不對(duì)消息進(jìn)行確認(rèn),主器件無(wú)法知道從器件是否繁忙。因此,必須設(shè)計(jì)聰明的軟件機(jī)制來(lái)處理確認(rèn)問(wèn)題。同時(shí),SPI 也沒(méi)有多主器件協(xié)議,必須采用很復(fù)雜的軟件和外部邏輯來(lái)實(shí)現(xiàn)多主器件架構(gòu)。每個(gè)從器件需要一個(gè)單獨(dú)的從選擇信號(hào)??傂盘?hào)數(shù)最終為 n+3 個(gè),其中 n 是總線上從器件的數(shù)量。因此,導(dǎo)線的數(shù)量將隨增加的從器件的數(shù)量按比例增長(zhǎng)。同樣,在 SPI 總線上添加新的從器件也不方便。對(duì)于額外添加的每個(gè)從器件,都需要一條新的從器件選擇線或解碼邏輯。SCLK信號(hào)線只由主設(shè)備控制,從設(shè)備不能控制信號(hào)線。同樣,在一
23、個(gè)基于SPI的設(shè)備中,至少有一個(gè)主控設(shè)備。這樣傳輸?shù)奶攸c(diǎn):這樣的傳輸方式有一個(gè)優(yōu) 點(diǎn),與普通的串行通訊不同,普通的串行通訊一次連續(xù)傳送至少8位數(shù)據(jù),而SPI允許數(shù)據(jù)一位一位的傳送,甚至允許暫停,因?yàn)镾CLK時(shí)鐘線由主控設(shè)備控 制,當(dāng)沒(méi)有時(shí)鐘跳變時(shí),從設(shè)備不采集或傳送數(shù)據(jù)。也就是說(shuō),主設(shè)備通過(guò)對(duì)SCLK時(shí)鐘線的控制可以完成對(duì)通訊的控制。SPI還是一個(gè)數(shù)據(jù)交換協(xié)議:因?yàn)?SPI的數(shù)據(jù)輸入和輸出線獨(dú)立,所以允許同時(shí)完成數(shù)據(jù)的輸入和輸出。3.4 IIC總線IIC是一種二線制串行總線接口,工作在主/從模式。二線通信信號(hào)分別為開(kāi)漏 SCL 和 SDA 串行時(shí)鐘和串行數(shù)據(jù)。主器件為時(shí)鐘源。數(shù)據(jù)傳輸是雙向的,
24、其方向取決于讀/寫(xiě)位的狀態(tài)。每個(gè)從器件擁有一個(gè)唯一的 7 或 10 位地址。主器件通過(guò)一個(gè)起始位發(fā)起一次傳輸,通過(guò)一個(gè)停止位終止一次傳輸。起始位之后為唯一的從器件地址,再后為讀/寫(xiě)位。I2C總線速度為從0Hz到3.4MHz。它沒(méi)有SPI 那樣快,但對(duì)于系統(tǒng)管理器件如溫度傳感器來(lái)說(shuō)則非常理想。I2C 存在系統(tǒng)開(kāi)銷,這些開(kāi)銷包括起始位/停止位、確認(rèn)位和從地址位,但它因此擁有流控機(jī)制,主器件還是從器件均對(duì)消息進(jìn)行確認(rèn),主器件知道從器件是否繁忙。主器件在完成接收來(lái)自從器件的數(shù)據(jù)時(shí)總是發(fā)送一個(gè)確認(rèn)位,除非其準(zhǔn)備終止傳輸。從器件在其接收到來(lái)自主器件的命令或數(shù)據(jù)時(shí)總是發(fā)送一個(gè)確認(rèn)位。當(dāng)從器件未準(zhǔn)備好時(shí),它可
25、以保持或延展時(shí)鐘,直到其再次準(zhǔn)備好響應(yīng)。圖3.4為IIC線路結(jié)構(gòu)圖。圖3.4 IIC線路結(jié)構(gòu)圖I2C總線上允許連接多個(gè)微處理器以及各種外圍設(shè)備,如存儲(chǔ)器、LED及LCD驅(qū)動(dòng)器、A/D及D/A轉(zhuǎn)換器等。為了保證數(shù)據(jù)可靠地傳送,任一時(shí)刻總線只能由某一臺(tái)主機(jī)控制,各微處理器應(yīng)該在總線空閑時(shí)發(fā)送啟動(dòng)數(shù)據(jù),為了妥善解決多臺(tái)微處理器同時(shí)發(fā)送啟動(dòng)數(shù)據(jù)的傳送(總線控制權(quán))沖突,以及決定由哪一臺(tái)微處理器控制總線的問(wèn)題,I2C總線允許連接不同傳送速率的設(shè)備。多臺(tái)設(shè)備之間時(shí)鐘信號(hào)的同步過(guò)程稱為同步化。I2C允許多個(gè)主器件工作在同一總線上。多個(gè)主器件可以輕松同步其時(shí)鐘,因此所有主器件均采用同一時(shí)鐘進(jìn)行傳輸。多個(gè)主器件
26、可以通過(guò)數(shù)據(jù)仲裁檢測(cè)哪一個(gè)主器件正在使用總線,從而避免數(shù)據(jù)破壞。由于 I2C總線只有兩條導(dǎo)線,因此新從器件只需接入總線即可,而無(wú)需附加邏輯。I2C總線是各種總線中使用信號(hào)線最少,并具有自動(dòng)尋址、多主機(jī)時(shí)鐘同步和仲裁等功能的總線。使用I2C總線設(shè)計(jì)計(jì)算機(jī)系統(tǒng)十分方便靈活,體積也小。3.5綜合對(duì)比下圖圖3.5是四種總線特性的簡(jiǎn)單比較,圖3.6是特性列舉導(dǎo)圖。圖3.5 四種總線特性比較圖3.6 特性列舉導(dǎo)圖3.5.1 CAN和UART CAN是一種多主方式的串行通訊總線,高數(shù)據(jù)率,高抗電磁干擾性,具備錯(cuò)誤檢定,抗電磁干擾能力,有效支持分布式控制系統(tǒng)和實(shí)時(shí)控制,主要應(yīng)用于汽車制造業(yè)、航天業(yè)等高要求的工
27、業(yè)領(lǐng)域。UART,既常見(jiàn)的串口通信,主要應(yīng)用于調(diào)試和用來(lái)主機(jī)與輔助設(shè)備通信,是計(jì)算機(jī)中串行通信端口的關(guān)鍵部分。我負(fù)責(zé)的是傳感器將數(shù)據(jù)傳送給51單片機(jī).,短距離傳輸,并沒(méi)有涉及復(fù)雜器件,對(duì)實(shí)時(shí)性控制要求不高,同時(shí)也考慮到成本問(wèn)題。因此沒(méi)必要采用工業(yè)級(jí)的現(xiàn)場(chǎng)總線CAN總線。而UART是計(jì)算機(jī)串行通信端口的關(guān)鍵部分,常用于調(diào)試。所以不采用此種總線方式。并且,ADXL345手冊(cè)中指定的通信協(xié)議只有IIC和SPI。所以只從IIC和SPI考慮。3.5.2 SPI和IIC SPI,比IIC速率快而且沒(méi)有系統(tǒng)開(kāi)銷,但是沒(méi)有流控機(jī)制,要想解決從機(jī)中的發(fā)送數(shù)據(jù)沖突問(wèn)題,只能設(shè)計(jì)特定復(fù)雜的軟件來(lái)解決。而IIC有系統(tǒng)
28、開(kāi)銷,但是本設(shè)計(jì)并沒(méi)涉及過(guò)多器件,也并未對(duì)實(shí)時(shí)性要求高。由于 I2C總線只有兩條導(dǎo)線,因此新從器件只需接入總線即可,而無(wú)需附加邏輯。 SPI協(xié)議硬件接線相比較更多,軟件簡(jiǎn)單,速度快;IIC硬件接線簡(jiǎn)單,只需兩根線,軟件比SPI復(fù)雜點(diǎn),速度慢。本設(shè)計(jì)較為簡(jiǎn)單、小規(guī)模,采用SPI和IIC并沒(méi)有較大區(qū)別和對(duì)性能有較大影響,也不會(huì)因?yàn)椴捎昧薎IC會(huì)產(chǎn)生較大冗余??紤]自身的實(shí)際編程能力和以往對(duì)51單片機(jī)的接觸,我們選擇了更熟悉了IIC,通用I/O端口作為I2C總線接口模擬IIC,放棄了使用SPI。四、設(shè)計(jì)總結(jié)本設(shè)計(jì)是,以2塊CC2530單片機(jī)組網(wǎng)通信, ADXL345三軸加速度傳感器采集加速度,再串口傳
29、給51單片機(jī)在傳給CC2530,然后數(shù)據(jù)傳送給協(xié)調(diào)器,最終傳輸?shù)缴衔粰C(jī)記錄。本設(shè)計(jì)的實(shí)驗(yàn)過(guò)程,我們更能體會(huì)到物聯(lián)網(wǎng)的實(shí)際應(yīng)用,尤其在工業(yè)應(yīng)用和智能家居應(yīng)用。通過(guò)組網(wǎng)技術(shù),把更多的傳感器互聯(lián)互通,數(shù)據(jù)傳送給主控芯片處理分析,最后發(fā)送到上位機(jī)進(jìn)行查看操控。其中,我是負(fù)責(zé)51單片機(jī)和加速度傳感器的采用的串行總線通訊方式的選擇??偣膊殚嗁Y料研究對(duì)比了四種常見(jiàn)的串口總線:CAN,UART,SPI,IIC。開(kāi)始自在大一時(shí)候用過(guò)51單片機(jī)模擬IIC,而且也是簡(jiǎn)單的套用網(wǎng)絡(luò)的標(biāo)準(zhǔn)程序,沒(méi)有深入學(xué)習(xí)時(shí)序電路圖和理解它的作用。也不知道還有SPI、CAN、UART的存在。通過(guò)學(xué)習(xí)這四種串口總線,還是收獲不少,學(xué)會(huì)了
30、時(shí)序電路圖的看法和用途,了解了常用串口總線的區(qū)別和特性。中途遇到了難題,在此感謝黃慶卿老師和其他小組同學(xué)給予關(guān)鍵幫助指導(dǎo),經(jīng)過(guò)不懈努力,團(tuán)隊(duì)最終解決了問(wèn)題。這次實(shí)驗(yàn),增加了我們實(shí)際動(dòng)手能力和解決和分析問(wèn)題的能力。在這次的課程設(shè)計(jì)當(dāng)中遇到了很多的困難和問(wèn)題,我們通過(guò)查詢資料一起討論最后完成這次的課程設(shè)計(jì),收獲良多。20附錄代碼#include #include /Keil library #include /Keil library#include #define uchar unsigned char#define uint unsigned int#define DataPort P2 /L
31、CD1602數(shù)據(jù)端口sbit SCL=P04; /IIC時(shí)鐘引腳定義sbit SDA=P03; /IIC數(shù)據(jù)引腳定義#defineSlaveAddress 0xA6 /定義器件在IIC總線中的從地址,根據(jù)ALT ADDRESS地址引腳不同修改/ALT ADDRESS引腳接地時(shí)地址為0xA6,接電源時(shí)地址為0x3Atypedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收數(shù)據(jù)緩存區(qū) uchar ge,shi,bai,qian,wan; /顯示變量int dis_data; /變量void delay(unsigned
32、 int k); void Init_ADXL345(void); /初始化ADXL345void WriteDataLCM(uchar dataW);void WriteCommandLCM(uchar CMD,uchar Attribc);void DisplayOneChar(uchar X,uchar Y,uchar DData);void conversion(uint temp_data);void Single_Write_ADXL345(uchar REG_Address,uchar REG_data); /單個(gè)寫(xiě)入數(shù)據(jù)uchar Single_Read_ADXL345(uch
33、ar REG_Address); /單個(gè)讀取內(nèi)部寄存器數(shù)據(jù)void Multiple_Read_ADXL345(); /連續(xù)的讀取內(nèi)部寄存器數(shù)據(jù)/-void Delay5us();void Delay5ms();void ADXL345_Start();void ADXL345_Stop();void ADXL345_SendACK(bit ack);bit ADXL345_RecvACK();void ADXL345_SendByte(BYTE dat);BYTE ADXL345_RecvByte();void ADXL345_ReadPage();void ADXL345_WritePag
34、e();/*unsigned char ch;bit read_flag= 0 ; void Uart_Init(void) SCON = 0x50 ; /UART為模式1,8位數(shù)據(jù),允許接收 TMOD |= 0x20 ; /定時(shí)器1為模式2,8位自動(dòng)重裝 PCON |= 0x80 ; /SMOD=1; TH1 = 0xFD ; /Baud:19200 fosc=11.0592MHz IE |= 0x90 ; /Enable Serial Interrupt TR1 = 1 ; / timer 1 run TI=1; /向串口發(fā)送一個(gè)字符 void send_char_com( uchar B
35、yte) SBUF =Byte; while (TI= 0);TI= 0 ; /串口接收中斷函數(shù) void Uart_Int(void) interrupt 4 if (RI) RI = 0 ; ch=SBUF; read_flag= 1 ; /就置位取數(shù)標(biāo)志 void conversion(uint temp_data) wan=temp_data/10000+0x30 ; temp_data=temp_data%10000; /取余運(yùn)算 qian=temp_data/1000+0x30 ; temp_data=temp_data%1000; /取余運(yùn)算 bai=temp_data/100+
36、0x30 ; temp_data=temp_data%100; /取余運(yùn)算 shi=temp_data/10+0x30 ; temp_data=temp_data%10; /取余運(yùn)算 ge=temp_data+0x30; /*/void delay(unsigned int k)unsigned int i,j;for(i=0;ik;i+)for(j=0;j121;j+);/*延時(shí)5微秒(STC90C52RC12M)不同的工作環(huán)境,需要調(diào)整此函數(shù),注意時(shí)鐘過(guò)快時(shí)需要修改當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)*/void Delay5us() _nop_();_nop_();_nop_();_n
37、op_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();/*延時(shí)5毫秒(STC90C52RC12M)不同的工作環(huán)境,需要調(diào)整此函數(shù)當(dāng)改用1T的MCU時(shí),請(qǐng)調(diào)整此延時(shí)函數(shù)*/void Delay5ms() WORD n = 560; while (n-);/*起始信號(hào)*/void ADXL345_Start() SDA = 1; /拉高數(shù)據(jù)線 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SDA = 0; /產(chǎn)生下降沿 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線/*停止信號(hào)
38、*/void ADXL345_Stop() SDA = 0; /拉低數(shù)據(jù)線 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SDA = 1; /產(chǎn)生上升沿 Delay5us(); /延時(shí)/*發(fā)送應(yīng)答信號(hào)入口,參數(shù):ack (0:ACK 1:NAK)* */void ADXL345_SendACK(bit ack) SDA = ack; /寫(xiě)應(yīng)答信號(hào) SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí)/*接收應(yīng)答信號(hào)*/bit ADXL345_RecvACK() SCL = 1; /拉高時(shí)鐘線 Delay
39、5us(); /延時(shí) CY = SDA; /讀應(yīng)答信號(hào) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) return CY;/*向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)*/void ADXL345_SendByte(BYTE dat) BYTE i; for (i=0; i8; i+) /8位計(jì)數(shù)器 dat = 1; /移出數(shù)據(jù)的最高位 SDA = CY; /送數(shù)據(jù)口 SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) ADXL345_RecvACK();/*從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)*/BYTE ADXL345
40、_RecvByte() BYTE i; BYTE dat = 0; SDA = 1; /使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù), for (i=0; i8; i+) /8位計(jì)數(shù)器 dat = 1; SCL = 1; /拉高時(shí)鐘線 Delay5us(); /延時(shí) dat |= SDA; /讀數(shù)據(jù) SCL = 0; /拉低時(shí)鐘線 Delay5us(); /延時(shí) return dat;/*單字節(jié)寫(xiě)入*void Single_Write_ADXL345(uchar REG_Address,uchar REG_data) ADXL345_Start(); /起始信號(hào) ADXL345_SendByte(SlaveAd
41、dress); /發(fā)送設(shè)備地址+寫(xiě)信號(hào) ADXL345_SendByte(REG_Address); /內(nèi)部寄存器地址,請(qǐng)參考中文pdf22頁(yè) ADXL345_SendByte(REG_data); /內(nèi)部寄存器數(shù)據(jù),請(qǐng)參考中文pdf22頁(yè) ADXL345_Stop(); /發(fā)送停止信號(hào)/*單字節(jié)讀取*uchar Single_Read_ADXL345(uchar REG_Address) uchar REG_data; ADXL345_Start(); /起始信號(hào) ADXL345_SendByte(SlaveAddress); /發(fā)送設(shè)備地址+寫(xiě)信號(hào) ADXL345_SendByte(REG
42、_Address); /發(fā)送存儲(chǔ)單元地址,從0開(kāi)始 ADXL345_Start(); /起始信號(hào) ADXL345_SendByte(SlaveAddress+1); /發(fā)送設(shè)備地址+讀信號(hào) REG_data=ADXL345_RecvByte(); /讀出寄存器數(shù)據(jù)ADXL345_SendACK(1); ADXL345_Stop(); /停止信號(hào) return REG_data; /連續(xù)讀出ADXL345內(nèi)部加速度數(shù)據(jù),地址范圍0x320x37/*void Multiple_read_ADXL345(void) uchar i;ADXL345_Start(); /起始信號(hào)ADXL345_Send
43、Byte(SlaveAddress); /發(fā)送設(shè)備地址+寫(xiě)信號(hào) ADXL345_SendByte(0x32); /發(fā)送存儲(chǔ)單元地址,從0x32開(kāi)始ADXL345_Start(); /起始信號(hào)ADXL345_SendByte(SlaveAddress+1); /發(fā)送設(shè)備地址+讀信號(hào)for (i=0; i6; i+) /連續(xù)讀取6個(gè)地址數(shù)據(jù),存儲(chǔ)中BUFBUFi = ADXL345_RecvByte(); /BUF0存儲(chǔ)0x32地址中的數(shù)據(jù)if (i = 5)ADXL345_SendACK(1); /最后一個(gè)數(shù)據(jù)需要回NOACKelseADXL345_SendACK(0); /回應(yīng)ACK ADXL
44、345_Stop(); /停止信號(hào)Delay5ms();/*/初始化ADXL345void Init_ADXL345() Single_Write_ADXL345(0x31,0x0B); /測(cè)量范圍,正負(fù)16g,13位模式 Single_Write_ADXL345(0x2C,0x08); /速率設(shè)定為12.5 Single_Write_ADXL345(0x2D,0x08); /選擇電源模式 Single_Write_ADXL345(0x2E,0x80); /使能 DATA_READY 中斷 Single_Write_ADXL345(0x1E,0x00); /X 偏移量 根據(jù)測(cè)試傳感器的狀態(tài)寫(xiě)入 Single_Write_ADXL345(0x
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 提供材料合同范本
- 租賃合同范本押金
- 5風(fēng)兒輕輕吹(教學(xué)設(shè)計(jì))-2023-2024學(xué)年道德與法治一年級(jí)下冊(cè)統(tǒng)編版
- 6 綜合與實(shí)踐(教學(xué)設(shè)計(jì))-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 煤炭訂貨合同范本
- 2024-2025學(xué)年高中英語(yǔ)選修課趣味英語(yǔ)教學(xué)設(shè)計(jì)
- 3《我們班 他們班》第二課時(shí)(教學(xué)設(shè)計(jì))-部編版道德與法治四年級(jí)上冊(cè)
- 9 這些是大家的(教學(xué)設(shè)計(jì))-2024-2025學(xué)年統(tǒng)編版道德與法治二年級(jí)上冊(cè)
- 噴泉采購(gòu)合同范本
- 擔(dān)保公司融資合同范本
- BBC-商務(wù)英語(yǔ)會(huì)話
- 中等職業(yè)學(xué)校畢業(yè)生就業(yè)推薦表
- 2023年浙江首考讀后續(xù)寫(xiě)真題講評(píng)課件 高三英語(yǔ)二輪復(fù)習(xí)寫(xiě)作專項(xiàng)+
- 各期前列腺癌治療的指南推薦
- 廣東省五年一貫制考試英語(yǔ)真題
- ISO9001-2015質(zhì)量手冊(cè)及程序文件模板
- 山東省2022年高等教育專升本統(tǒng)一考試高等數(shù)學(xué)III試題及解析
- 現(xiàn)代廚房管理第一章第一節(jié)
- GB/T 694-2015化學(xué)試劑無(wú)水乙酸鈉
- GB/T 6728-2017結(jié)構(gòu)用冷彎空心型鋼
- GB/T 6539-1997航空燃料與餾分燃料電導(dǎo)率測(cè)定法
評(píng)論
0/150
提交評(píng)論