基于CC2540的藍(lán)牙40模塊與PC機通信設(shè)_第1頁
基于CC2540的藍(lán)牙40模塊與PC機通信設(shè)_第2頁
基于CC2540的藍(lán)牙40模塊與PC機通信設(shè)_第3頁
基于CC2540的藍(lán)牙40模塊與PC機通信設(shè)_第4頁
基于CC2540的藍(lán)牙40模塊與PC機通信設(shè)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘 要CC2540模塊是TI(Texas Instruments)公司開發(fā)的一款用于藍(lán)牙4.0開發(fā)的系統(tǒng)單晶片解決方案。利用它可以作為無線數(shù)據(jù)采集和收發(fā)的無線終端,藍(lán)牙4.0技術(shù)構(gòu)建的無線數(shù)據(jù)采集傳輸模塊,具有功耗低,可靠性高和高安全性的優(yōu)點,可以用作無線數(shù)據(jù)傳輸系統(tǒng)的數(shù)據(jù)采集端。因此,研究藍(lán)牙4.0技術(shù)構(gòu)建的與PC機進行無線數(shù)據(jù)傳輸通信的系統(tǒng)具有重大的現(xiàn)實意義和應(yīng)用前景。設(shè)計的主要內(nèi)容:設(shè)計并制作基于CC2540模塊的數(shù)據(jù)采集終端。系統(tǒng)主要完成利用藍(lán)牙4.0協(xié)議棧的編寫,實現(xiàn)數(shù)據(jù)采集終端與PC之間的無線數(shù)據(jù)通信。數(shù)據(jù)采集端由TI官方的CC2040EM核心板和外圍電路,如按鍵、LCD、DS18

2、B20組成,PC端由TI官方的CC25640 USBDongle和串口調(diào)試軟件組成。本設(shè)計主要論述了藍(lán)牙4.0協(xié)議棧的編寫及應(yīng)用,CC2540模塊與PC的數(shù)據(jù)傳輸過程及原理。其中,對藍(lán)牙4.0協(xié)議棧的編寫及應(yīng)用進行重點論述。從機端(數(shù)據(jù)采集模塊)的工作主要是對硬件電路的設(shè)計和藍(lán)牙4.0協(xié)議棧SimpleBLEPeriphral工程的編寫;主機端(PC和USBDongle)的工作主要是對USBDongle中HostTestRelease工程的編寫和BTool軟件的調(diào)試。最終實現(xiàn)數(shù)據(jù)采集模塊采集到的數(shù)據(jù)能通過藍(lán)牙4.0協(xié)議無線傳輸?shù)絇C端,并且PC端能控制數(shù)據(jù)采集端或向其發(fā)送數(shù)據(jù)。Abstract

3、CC2540 module is a system used for the development of Bluetooth 4.0 single chip solutions provided by TI (Texas Instruments) company to develop. Because the Bluetooth 4.0 technology has the advantages of low power consumption, high reliability and long distance, it can be used as the wireless termin

4、als of wireless data acquisition.The main elements of design : Designing and fabricating the wireless data acquisition terminal based on CC2540 module, implementing the wireless communication between the wireless data acquisition terminal and PC. The data acquisition terminal is composed of the TI o

5、fficial CC2540EM and peripheral circuit, such as key, LCD, DS18B20. PC comprised TI official CC2540 USBDongle and the serial debugging software. This paper made a briefly introduction of the overview, prospects of application and the basic structure of the data acquisition and transmission of Blueto

6、oth technology. The main elements of the article discusses the compiling and application of the Bluetooth 4.0 protocol stack and the procedure and principle of data transmission between CC2540 module and PC.目 錄摘 要IAbstractII目 錄III引 言11緒論21.1藍(lán)牙應(yīng)用現(xiàn)狀21.2研究目的和意義32開發(fā)環(huán)境42.1硬件環(huán)境42.1.1藍(lán)牙芯片CC254042.1.2CC2540

7、EM核心板。52.1.3USBDongle62.1.4SmartRF04EB72.2軟件環(huán)境82.2.1IAR82.2.2藍(lán)牙4.0 BLE協(xié)議棧82.2.3BTool92.2.4Flash Programmer103系統(tǒng)硬件設(shè)計113.1設(shè)計方法和工具113.2系統(tǒng)框圖113.3硬件電路圖113.3.1CC2540核心板硬件資源113.3.2天線及巴倫匹配電路設(shè)計123.3.3晶振電路設(shè)計133.3.4電源電路設(shè)計133.3.5LED電路設(shè)計143.3.6五向按鍵電路設(shè)計143.3.7LCD12864電路設(shè)計153.3.8復(fù)位電路設(shè)計153.3.9下載調(diào)試電路設(shè)計154系統(tǒng)軟件設(shè)計174.1

8、BLE藍(lán)牙協(xié)議棧介紹174.2操作系統(tǒng)抽象層OSAL194.3硬件抽象層 HAL204.4配置文件層214.5BLE協(xié)議棧開發(fā)平臺配置234.6SimpleBLEPeripheral 從機編程234.7HostTestRelease主機編程285系統(tǒng)安裝與測試32結(jié) 論33致 謝34參考文獻35引 言隨著物聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,企業(yè)對于數(shù)據(jù)準(zhǔn)確性和實時性的要求又有了進一步的提高,用戶希望將數(shù)據(jù)的實時性擴展到更廣闊的領(lǐng)域,由此,藍(lán)牙4.0技術(shù)的出現(xiàn)顯得尤為重要。在一些需要被實時監(jiān)控的環(huán)境中,比如糧食倉庫、圖書倉庫、醫(yī)院病房中,目前數(shù)據(jù)的傳輸基本是基于有線的網(wǎng)絡(luò),但是,在生產(chǎn)現(xiàn)場環(huán)境比較惡劣或現(xiàn)場沒

9、有條件進行人工測量統(tǒng)計數(shù)據(jù),有線傳輸由于設(shè)備的驅(qū)動能力達不到或成本較高時,為了保證數(shù)據(jù)能夠及時、準(zhǔn)確地送回到控制中心,無線傳輸就成為首選的途徑。由于現(xiàn)在大多數(shù)的PC機還沒有內(nèi)置藍(lán)牙4.0功能,因此,研究藍(lán)牙4.0技術(shù)實現(xiàn)PC機的無線數(shù)據(jù)處理設(shè)計問題對現(xiàn)實生產(chǎn)生活中的應(yīng)用有很大的意義。藍(lán)牙4.0作為2010年新推出的新一代藍(lán)牙技術(shù)規(guī)范,目前各大公司和廠家都紛紛推出自己的硬件開發(fā)平臺和軟件支持,因此在硬件平臺和軟件支持的選擇上不僅要滿足系統(tǒng)的需求,還要符合藍(lán)牙未來發(fā)展的潮流; 在保證系統(tǒng)可實現(xiàn)的基礎(chǔ)上,做出常用的I/O口模塊,拓展藍(lán)牙應(yīng)用的領(lǐng)域; 藍(lán)牙4.0的軟件編程是基于一定的協(xié)議棧的基礎(chǔ)之上的

10、,類比于以前的編程來說難度不太好確定,但至少是要在熟悉協(xié)議棧的基礎(chǔ)上進行開發(fā),因此協(xié)議棧的學(xué)習(xí)成了一個重點;本次設(shè)計采用的是以TI公司的CC2540芯片為核心的EM開發(fā)板,并在外圍拓展所需的按鍵、溫度傳感器和LCD等外設(shè)構(gòu)成數(shù)據(jù)的采集端,PC端由TI公司提供的CC2540 USBDongle和上位機串口調(diào)試軟件構(gòu)成。需要通過對藍(lán)牙4.0的協(xié)議棧進行編寫和應(yīng)用才能實現(xiàn)CC2540數(shù)據(jù)采集模塊與PC機的有效通信。1 緒論 1.1 藍(lán)牙應(yīng)用現(xiàn)狀本節(jié)對藍(lán)牙4.0無線傳輸?shù)膰鴥?nèi)外研究現(xiàn)狀進行了總結(jié)并進行了對比分析。重點對未來的應(yīng)用前景進行分析。藍(lán)牙技術(shù)的研究與開發(fā)在國外起步早,經(jīng)驗和資源積累較為豐富,從

11、藍(lán)牙的發(fā)展歷史來看,藍(lán)牙技術(shù)由愛立信公司于1994年創(chuàng)立,后來由Nokia、蘋果公司和三星所創(chuàng)立的藍(lán)牙興趣小組旨在全世界范圍內(nèi)建立小范圍的無線通信技術(shù)。伴隨著后來的藍(lán)牙特別興趣小組的成立,使得藍(lán)牙技術(shù)成為未來的一種全新的通信標(biāo)準(zhǔn)成為可能。后來,業(yè)內(nèi)所共同發(fā)起的藍(lán)牙技術(shù)推廣組織,將藍(lán)牙技術(shù)的發(fā)展推向了時代的浪潮。2010年4月20日,藍(lán)牙4.0協(xié)議發(fā)布,這是目前最新的藍(lán)牙版本,為第三代藍(lán)牙的升級版。它包括三個子規(guī)范,為大家所熟知的是,就是傳統(tǒng)意義上的藍(lán)術(shù)、高速度藍(lán)牙,還有藍(lán)牙低功耗技術(shù)。在新一代的藍(lán)牙中,藍(lán)牙4.0 BLE在繼承了以前的藍(lán)牙技術(shù)的固有優(yōu)點的基礎(chǔ)上,同時它還使得傳輸速度得到大幅度的

12、增加。更為重要的是,它所固有的功耗很低,與第三代藍(lán)牙版本版本相比,尤以低耗能技術(shù)為核心。這一次的技術(shù)改進中它主要體現(xiàn)在如下方面,包括電池續(xù)航時間的加長、功耗低等方面,擁有著成本低,可操作性強,延遲時間短、通信距離長,AES-128加密等諸多特色。此外,在新一代的藍(lán)牙協(xié)議中,藍(lán)牙BLE4.0的有效傳輸距離得到大幅的提升。相比于之前版本的10米的傳輸距離,而新一代藍(lán)牙4.0 BLE的有效傳輸距離可達100米。目前,針對新一代藍(lán)牙4.0的技術(shù)規(guī)范,各大廠家和公司紛紛推出自己的硬件平臺和軟件協(xié)議棧,在這一點上,德州儀器 (TI) 的藍(lán)牙技術(shù)的發(fā)展站在世界的前列,其公司所開發(fā)的的CC2540系列產(chǎn)品為藍(lán)

13、牙技術(shù)的實現(xiàn)和應(yīng)用提供了一個真正意義上的解決方案,這將使得藍(lán)牙4.0 BLE不再僅僅停留在規(guī)范文檔之中,這將作為一項新的技術(shù)得到廣泛的實踐和發(fā)展。國內(nèi)對藍(lán)牙技術(shù)的研發(fā)起步較國外要晚,但正所謂東方藍(lán)牙風(fēng)光無限,這一項短距離無線通信技術(shù),必將在世界的東方這一人口密集,商業(yè)繁榮的大陸得到前所未有的巨大發(fā)展。這項技術(shù)只有在人與人之間以及人與機器之間相互交往的時候才會更大程度的體現(xiàn)出它的價值。更值得一提的是,目前,藍(lán)牙4.0 BLE 規(guī)范文檔已經(jīng)推出,但是各大國際公司和廠商所推出的硬件平臺和軟件開發(fā)系統(tǒng)不盡相同,這使得新一代藍(lán)牙技術(shù)的開發(fā)與研究更加具有開放性,不會在短時間之內(nèi)出現(xiàn)被少數(shù)大公司技術(shù)壟斷的局

14、面,這也有利于我國在這一次的技術(shù)浪潮中占據(jù)主動的優(yōu)勢,特別是借助于藍(lán)牙技術(shù),使我國的信息產(chǎn)業(yè)能夠更快更廣泛地滲透到國民經(jīng)濟的其他領(lǐng)域中去,從而可以加快實現(xiàn)用信息化帶動工業(yè)化,帶動現(xiàn)代化的進程。1.2 研究目的和意義物聯(lián)網(wǎng)是當(dāng)今科技和技術(shù)發(fā)展的重要產(chǎn)物,物聯(lián)網(wǎng)為我們的生活和工作帶來了巨大的改變。藍(lán)牙4.0技術(shù)就是物聯(lián)網(wǎng)發(fā)展的重要產(chǎn)物之一,它作為一種低功耗、高可靠性和較遠(yuǎn)距離的數(shù)據(jù)傳輸標(biāo)準(zhǔn),為各行各業(yè)提供了更多發(fā)展空間和工作效率。比如糧食倉庫中,糧食的保存和溫度有十分密切的關(guān)系,適宜的溫度能使糧食保存的時間更長而且不會變質(zhì)。但是傳統(tǒng)的測溫系統(tǒng)都是通過有線的方式連接傳感器,而且傳感器的位置一旦被固定

15、后,今后需要更換位置不是很方便。不僅如此,傳統(tǒng)的測溫系統(tǒng)的功耗都比較大,需要定期的人工維護,這樣下來,傳統(tǒng)的有線測溫系統(tǒng)的成本和效果都不盡人意。而利用本設(shè)計提供的CC2540數(shù)據(jù)采集模塊,可以實現(xiàn)在糧食倉庫的任意需要測量溫度的位置放置CC2540數(shù)據(jù)采集模塊,實時地將采集的溫度通過藍(lán)牙4.0協(xié)議無線傳輸給PC端,以便PC端根據(jù)采集的溫度對溫控系統(tǒng)進行適當(dāng)?shù)牟僮骰蜃龀銎渌鄳?yīng)的操作,使需要改變溫度的位置得到改善。而且由于藍(lán)牙4.0技術(shù)的超低功耗的特點,非常適合糧食倉庫這種需要長時間實時采集數(shù)據(jù)的環(huán)境。同樣地,在圖書倉庫和中藥倉庫中,對溫度也有類似的要求,所以本設(shè)計的應(yīng)用對于這種需要十分有效的溫度

16、調(diào)節(jié)的環(huán)境有廣闊的市場前景。又如在醫(yī)院的病房中,病人的心率、血壓、輸液剩余量等信息都是需要被醫(yī)生或護士在第一時間得知的信息。而傳統(tǒng)的傳感器模塊加有線傳輸?shù)姆绞皆卺t(yī)院病房這種人員較多,且人員流動頻繁的場所來說,顯得很不方便也很不實用,消耗也十分大。而本設(shè)計所提出的,基于CC2540的藍(lán)牙4.0模塊恰好能解決上面所述的問題。醫(yī)生和護士只需在辦公室,就能從PC上實時地看到各個病人的情況,并且能準(zhǔn)確地去了解病人的情況,做出相應(yīng)的醫(yī)療方案和應(yīng)急措施,這對醫(yī)生和病人來說都是極大的好處。綜上所述,藍(lán)牙4.0技術(shù)將把物聯(lián)網(wǎng)又向前帶了一大步,在未來的生產(chǎn)和生活當(dāng)中,藍(lán)牙4.0必將發(fā)揮其不可忽視的作用,為我們帶來

17、極大的便利與快樂。2 開發(fā)環(huán)境2.1 硬件環(huán)境2.1.1 藍(lán)牙芯片CC2540CC2540集成了2.4GHz射頻收發(fā)器,是一款完全兼容8051內(nèi)核的無線射頻單片機,它完美的兼容了藍(lán)牙低功耗協(xié)議棧,非常適合藍(lán)牙低功耗的開發(fā)和應(yīng)用,它有3個不同的存儲器訪問總線:特殊功能寄存器(SFR);數(shù)據(jù)(DATA);代碼/外部數(shù)據(jù)(CODE/XDATA)。CC2540單片機使用單周期訪問SFR、DATA和住SRAM。當(dāng)CC2540處于空閑模式時,任何的中斷可以把CC2540恢復(fù)到主動模式。某些中斷還可以將CC2540從睡眠模式喚醒。位于系統(tǒng)核心存儲器交叉開關(guān)使用SFR總線將CPU、DMA控制器與物理存儲器和所

18、有的外接設(shè)備連接起來。CC2540的Flash容量可以選擇,有128KB、256KB,這就是CC2540單片機的在線可編程非易失性存儲器,并且映射到代碼和外部數(shù)據(jù)存儲器空間。除了保存程序代碼和常亮之外,非易失性存儲器允許應(yīng)用程序保存必要的數(shù)據(jù),以保證這些數(shù)據(jù)在設(shè)備重啟后可用。圖2-1是CC2540的內(nèi)部結(jié)構(gòu)圖圖2-1 CC2540內(nèi)部結(jié)構(gòu)圖如圖2-1所示,CC2540的這些模塊大致可以分為三類:CPU和內(nèi)存相關(guān)的模塊;外設(shè)、時鐘和電源管理相關(guān)的模塊,以及無線電相關(guān)的模塊。2.1.2 CC2540EM核心板。CC2540 EM是TI公司官方推出的,藍(lán)牙4.0開發(fā)套件之一。CC2540EM核心板主

19、要包括CC2540單片機、全尺寸倒F天線,晶振以及擴展接口,CC2540EM核心板如圖2-2所示:圖2-2 CC2540EM開發(fā)板實物圖2.1.3 USBDongle如圖2-3所示,是CC2540 USBDongle的實物圖。它是作用是可以配合TI PacketSniffer軟件實現(xiàn)BLE的無線抓包,另外可以配合PC端的BTool軟件實現(xiàn)PC端的BTool主機。USBDongle通過USB接口與PC連接,安裝TI的驅(qū)動程序,將USBDongle模擬成串口,然后運行BTool。圖2-3 USBDongle實物圖2.1.4 SmartRF04EB如圖2-4所示,是SmartRF04EB的實物圖。它

20、是用來調(diào)試和下載軟件到EM的仿真器。它是TI第一代的CC系列仿真器,性價比高,支持CC2540和CC2530,但不支持CC2541。圖2-3 SmartRF04EB實物圖2.2 軟件環(huán)境2.2.1 IARIAR Embedded Wordbench(又稱EM)的C交叉編譯器是一款完整、穩(wěn)定且容易使用的專業(yè)嵌入式應(yīng)用開發(fā)工具,IAR對不同的微處理器提供統(tǒng)一的用戶界面,目前可以支持至少35種的8位、16位、32位的MCU。其特點如下:l 完全兼容標(biāo)準(zhǔn)C語言。l 內(nèi)建相應(yīng)芯片的程序蘇荷和內(nèi)部優(yōu)化器。l 高效浮點支持。l 內(nèi)存模式選擇。為了滿足本設(shè)計的需求,使用的IAR版本是8.10.4。2.2.2

21、藍(lán)牙4.0 BLE協(xié)議棧BLE協(xié)議棧需要先自己安裝,里面存放的是協(xié)議棧源碼,TI會陸續(xù)更新協(xié)議棧版本,但是本設(shè)計為了配合IAR的版本,所以選擇使用1.3.2版本的BLE協(xié)議棧。協(xié)議棧文件夾下有以下幾個目錄:l AccessoriesAccessoriesDrivers 里面存放的是燒寫了 HostTestRelease 程序的CC2540 USBDongle的USB轉(zhuǎn)串口驅(qū)動程序,很多用戶反應(yīng)說USBDongle插到電腦上沒有被識別成串口號,這里就要注意,USBDongle出廠時燒寫的是PacketSniffer的固件,是協(xié)議分析儀,叧有當(dāng)USBDdongle燒寫了 HostTestRelea

22、se 程序時才會表現(xiàn)為一個串口,此時USBDongle的驅(qū)動程序即在 Drivers 目錄下。AccessoriesHexFiles 里面存放的是 TI 開發(fā)板上的預(yù)先編譯的hex文件。AccessoriesBTool 以前的協(xié)議棧版本沒有這個目錄,這里存放的是 BTOOL 的安裝文件,不過不需要手動安裝,因為剛才安裝協(xié)議棧的時候已經(jīng)安裝BTOOL。l Components目錄Components存放的是最終要的協(xié)議棧組件,包括底層的BLE,還有開發(fā)板硬件層 hal,還有類似操作系統(tǒng)的osal。l Documents目錄Documents存放的是 TI 提供的關(guān)于協(xié)議棧和協(xié)議棧 demo 的相

23、關(guān)介紹和開發(fā)文檔,因為該目錄下的文件非常重要,雖然全部是英文,也需要查看:TI_BLE_Sample_Applications_Guide.pdf協(xié)議棧demo操作指南,協(xié)議棧里所有demo的說明都在這里。TI_BLE_Software_Developer's_Guide.pdfBLE協(xié)議棧指南,介紹BLE和 TI的BLE協(xié)議棧。BLE_API_Guide_main.htm BLE API 文檔,協(xié)議棧里調(diào)用的API函數(shù)還有調(diào)用時序,均在此文檔中。l Projectsble目錄Projectsble,最后一個,也是最重要的目錄,基于協(xié)議棧的demo工程都在這里。所有的協(xié)議棧demo都要

24、放到Projects/ble這個目錄下編譯運行,因為IAR程配置中使用的是相對路徑,一旦IAR工程位置和整個協(xié)議棧源碼的相對位置發(fā)生變化,就無法找到ble的其他組件,編譯時會產(chǎn)生大量的無法找到文件的錯誤,所有程序必須要放到這里來編譯。2.2.3 BToolBTool是一款TI公司出品的,與CC2540開發(fā)配套的PC端應(yīng)用程序,通過使用主機控制接口(HCI)命令的方式與藍(lán)牙BLE外設(shè)通信。Btool允許用戶使用基本的BLE集中器設(shè)備功能,例如發(fā)現(xiàn)藍(lán)牙外設(shè)或廣播設(shè)備、建立與外設(shè)的連接、進行GATT應(yīng)用數(shù)據(jù)的讀寫操作、綁定服務(wù)等。因此,可以在PC端使用Btool工具來進行藍(lán)牙外設(shè)應(yīng)用程序的開發(fā)調(diào)試。

25、2.2.4 Flash ProgrammerFlash Programmer也是一款TI的官方軟件,與SmartRF04EB配合使用,向EM開發(fā)板燒寫HEX文件。3 系統(tǒng)硬件設(shè)計3.1 設(shè)計方法和工具硬件系統(tǒng)的設(shè)計采用模塊化的方法,即首先設(shè)計出CC2540核心板,再設(shè)計出其外圍電路,之后整體調(diào)試。系統(tǒng)設(shè)計工具軟件采用Altium Designer 。這是一款功能強大的電路設(shè)計軟件,其原型為大家所熟知的Protel,為廣大的硬件設(shè)計者提供了完美的硬件開發(fā)系統(tǒng),這套軟件從原理圖的繪制到電路的實際仿真,PCB版圖的設(shè)計等方面極大地便利了用戶的自主開發(fā)。3.2 系統(tǒng)框圖系統(tǒng)硬件框圖包括CC2540核心

26、板和外圍電路,整個系統(tǒng)傳輸過程如圖3-1所示:圖3-1 系統(tǒng)硬件框圖3.3 硬件電路圖3.3.1 CC2540核心板硬件資源CC2540EM核心板主要包括CC2540單片機、全尺寸倒F天線,晶振以及擴展接口,CC2540EM核心板如圖3-2所示:圖3-2 CC2540核心板3.3.2 天線及巴倫匹配電路設(shè)計CC2540外部僅需幾個簡單的阻容網(wǎng)絡(luò)即實現(xiàn)復(fù)雜的RF前端。這部分的電路也叫做巴倫匹配電路,這部分的結(jié)果好壞對通信距離,系統(tǒng)功耗都有較大的影響。TI已經(jīng)提供了非??煽康膮⒖荚O(shè)計,所以本設(shè)計只需按照TI的參考設(shè)計來開發(fā)電路即可。天線設(shè)計可以根據(jù)不同的應(yīng)用來選擇,既可以使用PCB天線,也可以使用

27、SMA天線。本設(shè)計采用的是PCB天線,天線及巴倫匹配電路設(shè)計如圖3-3所示。圖3-3 天線及巴倫匹配3.3.3 晶振電路設(shè)計由于CC2540需要2個晶振,32MHz和32.768K,所以本設(shè)計安裝要求設(shè)計了這2個晶振電路,晶振電路接口如圖3-4所示。圖3-4 晶振電路3.3.4 電源電路設(shè)計TI第一代CC2540DK開發(fā)套件中的EM開發(fā)板可以使用USB轉(zhuǎn)DC電源從USB接口上取電,另外也可以使用鋰電池等供電,直接插在BT1上,電壓輸入范圍為3.4V到6V,電源管理電路如圖3-5所示圖3-5 電源管理電路3.3.5 LED電路設(shè)計本設(shè)計采用與TI完全兼容的四色LED,高電平驅(qū)動,另外D4和S1按

28、鍵共用一個端口。LED和按鍵S1電路如圖3-6所示。圖3-6 LED驅(qū)動和按鍵S1驅(qū)動電路3.3.6 五向按鍵電路設(shè)計協(xié)議棧另外一個非常重要的拓展電路就是五向按鍵,幾乎每個協(xié)議棧demo都會用到五向按鍵來輔助操作。五向按鍵的電路比較復(fù)雜,但是原理非常簡單,當(dāng)按鍵按下時首先產(chǎn)生一個高電平,觸發(fā)一個GPIO中斷,然后通過放大器輸出不同的電壓值,當(dāng)CC2540接收到中斷后開始去讀五向按鍵的電壓,不同的方向按下產(chǎn)生的電壓值不同,這樣就實現(xiàn)了joystick。五向按鍵設(shè)計電路如圖3-7所示。圖3-7 五向按鍵電路圖3.3.7 LCD12864電路設(shè)計本設(shè)計采用小型的12864作為系統(tǒng)的顯示系統(tǒng),該LCD

29、采用SPI接口。LCD電路設(shè)計如圖3-8所示。圖3-8 LCD電路3.3.8 復(fù)位電路設(shè)計CC2540內(nèi)部集成了上電復(fù)位電路,為了方便程序調(diào)試,本設(shè)計在板子上加了一個按鍵用來在線復(fù)位,尤其當(dāng)使用UART轉(zhuǎn)串口時,直接斷電會導(dǎo)致PC設(shè)備異常,這樣復(fù)位按鍵就能夠起到很好的系統(tǒng)復(fù)位功能。復(fù)位電路如圖3-9所示。圖3-9 復(fù)位電路3.3.9 下載調(diào)試電路設(shè)計CC2540EM開發(fā)板使用標(biāo)準(zhǔn)的CC-Debugger調(diào)試接口,為了方便調(diào)試,特意將debugger接口的9腳和2腳短接,這樣可以使用CC-Debugger為板子供電。下載調(diào)試電路如圖3-10所示。圖3-10 下載調(diào)試電路4 系統(tǒng)軟件設(shè)計 4.1

30、BLE藍(lán)牙協(xié)議棧介紹協(xié)議定義的是一系列的通信標(biāo)準(zhǔn),通信雙方需要共同按照這一標(biāo)準(zhǔn)進行正常的數(shù)據(jù)收發(fā);協(xié)議棧是協(xié)議的具體實現(xiàn)形式,通俗的理解為用代碼實現(xiàn)的函數(shù)庫,以便于開發(fā)人員調(diào)用。藍(lán)牙4.0 BLE 協(xié)議棧就是將各個層定義的協(xié)議棧都集合在一起,以函數(shù)的形式實現(xiàn),并提供一些應(yīng)用層API,供用戶調(diào)用。值得注意的是,雖然協(xié)議是統(tǒng)一的,但是協(xié)議的具體實現(xiàn)形式是變化的,即不同的廠商提供的協(xié)議棧是有區(qū)別的。藍(lán)牙4.0 BLE協(xié)議棧具有很多版本,不同的廠商提供的藍(lán)牙 4.0 BLE協(xié)議棧有一定的區(qū)別,本次的畢業(yè)設(shè)計選擇的是TI公司推出的藍(lán)牙4.0 BLE協(xié)議棧 BLECC254x1.3.2.TI公司推出的新一

31、代藍(lán)牙4.0 BLE協(xié)議棧由兩個部分組成:主機和控制器。主機和控制器的分離要追溯到藍(lán)牙BR/EDR設(shè)備時期,控制器和主機通常會分開實現(xiàn)。協(xié)議棧的實現(xiàn)方式采用分層的思想,控制器部分包括:物理層、鏈路層、主機控制接口層;主機部分包括:邏輯鏈路控制及自適應(yīng)協(xié)議層、安全管理層、屬性協(xié)議層、通用訪問配置文件層、通用屬性配置文件層,如圖4-1所示:圖4-1 藍(lán)牙4.0 BLE協(xié)議棧藍(lán)牙4.0 BLE協(xié)議棧采用分層思想將服務(wù)、接口和協(xié)議這三個概念明確地區(qū)分開來。這樣各層之間具有很強的獨立性,當(dāng)協(xié)議的一部分發(fā)生變化時,只需對與此相關(guān)的分層進行修改即可,其他各層不需要改變。物理層(Physical Layer)

32、是1Mbps自適應(yīng)跳頻的GFSK射頻,工作于免許可證的2.4Ghz ISM(工業(yè)、科學(xué)和醫(yī)療)頻段。鏈路層(Link Layer)用于控制設(shè)備的射頻狀態(tài),設(shè)備將會處于五種狀態(tài)之一:等待、廣告、掃描、初始化、連接。廣告設(shè)備不需要建立連接就可以發(fā)送數(shù)據(jù);而掃描設(shè)備收聽廣播設(shè)備發(fā)出的數(shù)據(jù);發(fā)起連接的設(shè)備通過發(fā)送連接請求來回應(yīng)廣播設(shè)備,如果廣播設(shè)備接受連接請求,那么廣播設(shè)備與發(fā)起連接的設(shè)備將會進入連接狀態(tài)。主機和控制器之間的標(biāo)準(zhǔn)的通信接口是在主機控制器接口層實現(xiàn)的。這一層可以是軟件API或硬件接口,如UART、SPI、USB。邏輯鏈路控制及自適應(yīng)協(xié)議層(Logical Link Control and

33、 Adaptation Protocol)為上層提供數(shù)據(jù)封裝服務(wù),允許邏輯上的點對點數(shù)據(jù)通信。安全管理層(Security Manager)定義了配對和密鑰方式,并為協(xié)議棧其它層與另一個設(shè)備之間的安全連接和數(shù)據(jù)交換提供服務(wù)。屬性協(xié)議層(Atttibute protocol)允許設(shè)備向另一個設(shè)備展示一塊特定的數(shù)據(jù),稱之為“屬性”。在ATT環(huán)境中,展示“屬性”的設(shè)備稱為服務(wù)器,與之配對的設(shè)備稱為客戶端。鏈路層狀態(tài)(主機和從機)與設(shè)備的ATT角色是相互獨立的。通用屬性配置文件層(Generic Attribute profile)是在ATT 上面的一層結(jié)極,定義了使用ATT 的服務(wù)框架,GATT 規(guī)

34、定了配置文件(鼎鼎有名的profile)的結(jié)極,在BLE 中,所有被profile 戒者服務(wù)用刡的數(shù)據(jù)塊都稱為“特性,characteristic”兩個建立連接的設(shè)備之間的所有數(shù)據(jù)通信都是通過GATT 子程序處理,應(yīng)用程序和profile 直接使用GATT 層。TI公司免費的藍(lán)牙4.0 BLE軟件開發(fā)套件是完整地支持單模藍(lán)牙4.0 BLE應(yīng)用開發(fā)的平臺,它基于CC2540/CC2541射頻單片機,藍(lán)牙4.0 BLE軟件平臺支持兩種不同的應(yīng)用開發(fā)配置。4.2 操作系統(tǒng)抽象層OSALOSAL(操作系統(tǒng)抽象層)是類似于一個系統(tǒng)的抽象層,但它不是一個真正意義上的操作系統(tǒng)。OSAL常用術(shù)語:資源、共享資

35、源、任務(wù)。在任務(wù)設(shè)計時,需要將問題盡可能地分為多個任務(wù),每個任務(wù)獨立完成某種功能,同時被賦予一定的優(yōu)先級,擁有自己的CPU寄存器和堆??臻g。內(nèi)核:使用內(nèi)核可以大大簡化應(yīng)用系統(tǒng)的程序設(shè)計方法,借助內(nèi)核提供的任務(wù)切換功能,可以將應(yīng)用程序分為不同的任務(wù)來實現(xiàn)。保護共享資源最常用的方法是:l 關(guān)中斷;l 使用測試并置位指令;l 禁止任務(wù)切換;l 使用信號量。其中,在藍(lán)牙4.0 BLE協(xié)議棧內(nèi)嵌操作系統(tǒng)中,經(jīng)常使用的方法是關(guān)中斷。在藍(lán)牙4.0 BLE協(xié)議棧中,OSAL主要提供如下功能:l 任務(wù)注冊、初始化和啟動;l 任務(wù)間的同步、互斥;l 中斷處理;l 存儲器分配和管理;l 提供定時器功能。在新推出的藍(lán)

36、牙4.0 BLE協(xié)議棧中,其中有三個變量值得一提:tasksCnt:該變量保存了任務(wù)的總個數(shù)。該變量的聲明為:uint8 taskCnt。其中uint8的定義為:typedef unsigned char uint8。taskEvents:這是一個指針;該變量的聲明為:uint16 *taskEvents。其中uint16的定義為:typedef unsigned short uint16。taskArr:這是一個數(shù)組;該數(shù)組的聲明為:pTaskEventHandlerFn taskArr.這是一個函數(shù)指針,指向了對應(yīng)的事件處理函數(shù)。4.3 硬件抽象層 HAL硬件抽象層(HAL)是提供硬件服務(wù)

37、而又不涉及太多硬件細(xì)節(jié)的層,為應(yīng)用提供訪問GPIO、UART、ADC等硬件的接口。硬件抽象層文件目錄如圖4-2所示:圖4-2 HAL文件目錄硬件抽象層文件目錄包括HAL驅(qū)動和HAL相關(guān)文件的頭文件,HAL文件存放在三個不同的目錄之下,HAL Common文件夾包含協(xié)議棧、MAC和驅(qū)動中使用到相關(guān)配置文件。其中“hal_drivers.c”文件包含所有驅(qū)動初始化及相關(guān)事件處理機制。主要包括以下三個函數(shù):HAL_Init()它是osaltaskadd調(diào)用,以便在OSAL中注冊HAL的驅(qū)動;HALdriverInit()它是main()函數(shù)調(diào)用來初始化硬件驅(qū)動。HAL_processevent()這

38、個函數(shù)用來處理OSAL中HAL相關(guān)的驅(qū)動事件,例如按鍵、LED、LCD、蜂鳴器、休眠定時等。HAL Include文件夾包含HAL驅(qū)動及HAL相關(guān)文件的頭文件,如圖4-3所示:圖4-3 Include文件下頭文件HAL Target文件夾下的Drivers包含所有HAL驅(qū)動的“.c”文件。4.4 配置文件層藍(lán)牙4.0 BLE協(xié)議棧的配置文件層包括GAP角色/安全配置文件、GATT配置文件兩部分。(1)通用訪問配置文件(GAP):BLE協(xié)議棧中的GAP層負(fù)責(zé)處理設(shè)備訪問模式和程序,包括設(shè)備發(fā)現(xiàn)、建立連接、終止連接、初始化安全特色和設(shè)備配置。GAP層總是作為下面四種角色之一:廣播者不可連接的廣告設(shè)

39、備;觀測者掃描廣播,但不發(fā)起建立連接;外部設(shè)備可連接的廣告設(shè)備,可以在單個鏈路層連接中作為從機;集中器掃描廣告設(shè)備并發(fā)起連接,在單鏈路層或多鏈路層作為主機,目前,BLE協(xié)議棧支持一個集中器連接三個外設(shè)。在典型的藍(lán)牙低功耗系統(tǒng)中,外部設(shè)備廣告特定的數(shù)據(jù),來使集中器知道它是一個可以連接的設(shè)備。廣告內(nèi)容包括設(shè)備地址以及一些額外的數(shù)據(jù),如設(shè)備名等。集中器收到廣告數(shù)據(jù)后,向外部設(shè)備發(fā)送掃描請求,然后外部設(shè)備將特定的數(shù)據(jù)回應(yīng)給集中器,稱為掃描回應(yīng)。集中器收到掃描回應(yīng)后,便知道這是一個可以建立連接的外部設(shè)備,這就是設(shè)備發(fā)現(xiàn)的全過程。此時,集中器可以向外部設(shè)備發(fā)起建立連接的請求。連接請求包括下面一些連接參數(shù)。

40、連接間隔在兩個BLE設(shè)備的連接中使用跳頻機制,兩個設(shè)備使用特定的信道收發(fā)數(shù)據(jù),然后過一段時間后再使用新的信道(鏈路層處理信道切換),兩設(shè)備在信道切換后收發(fā)數(shù)據(jù)稱之為連接事件。即使沒有應(yīng)用數(shù)據(jù)的收發(fā),兩設(shè)備仍然會通過交換鏈路層數(shù)據(jù)來維持連接。連接間隔就是兩個連接事件之間的時間間隔,連接間隔以1.25為單位,連接間隔的值是6(7.5ms)3200(4s)。不同的應(yīng)用可能要求不同的時間間隔。長的時間間隔的優(yōu)勢是顯著地節(jié)省功耗,因為設(shè)備可以在連接事件之間有較長事件的休眠,壞處是當(dāng)設(shè)備有應(yīng)用數(shù)據(jù)需要發(fā)送時,必須要等到下一個連接事件;短的時間間隔優(yōu)勢是兩設(shè)備連接頻發(fā),可以更快地收發(fā)數(shù)據(jù),不利之處是設(shè)備因連

41、接事件的到來而被頻繁地喚醒,會有較多功耗。從機延遲這個參數(shù)的設(shè)置可以使從機(外部設(shè)備)跳過若干連接事件,這給了外設(shè)更多的靈活度,如果它沒有數(shù)據(jù)發(fā)送時,可以選擇跳過連接事件繼續(xù)休眠,以節(jié)省功耗。管理超時這是兩個成功連接事件之間的最大允許間隔。如果超過了這個時間而沒有成功的連接事件,設(shè)備被認(rèn)為是丟失連接,返回到未連接狀態(tài)。這個值的單位是10ms,管理超時的范圍是10(100ms)3200(32ms)。另外,超時值必須大于有效的連接間隔有效的連接間隔=連接間隔*(1+從機延遲)。外設(shè)可以通過向集中器發(fā)送“連接參數(shù)更新請求”來改變連接設(shè)置,這個請求由協(xié)議棧的L2CAP層來處理。這個請求包含4個參數(shù):最

42、小連接間隔、最大連接間隔、從機延遲、超時。這些值代表了外設(shè)所要求的連接參數(shù)。當(dāng)集中器收到請求后,可以選擇接受或拒絕這些新的參數(shù)。連接可以被主機或從機以任何原因自動終止。當(dāng)一方發(fā)起終止連接時,另一方必須響應(yīng)。然后兩個設(shè)備才能退出連接設(shè)備。(2)通用屬性配置文件(GATT)主機既可以是GATT客戶端也可以是GATT服務(wù)器;從機既可以是GATT客戶端也可以是GATT服務(wù)器。在藍(lán)牙4.0 BLE協(xié)議棧中的SimpleBLEPeripheral應(yīng)用中,有三個GATT服務(wù)。 GATT定義了在BLE連接中發(fā)現(xiàn)、讀取和寫入屬性的子過程。屬性表是一個數(shù)據(jù)庫,包含了稱為屬性的小塊數(shù)據(jù),除了值本身,每個屬性都包含下

43、列屬性:句柄屬性在表中的地址,每個屬性有唯一的句柄;類型表示數(shù)據(jù)代表的事務(wù),通常是藍(lán)牙技術(shù)聯(lián)盟規(guī)定或由用戶自定義的UUID(Universally Unique Identifier);權(quán)限規(guī)定了GATT客戶端設(shè)備對屬性的訪問權(quán)限,包括是否能訪問和怎樣訪問。GATT定義了若干在GATT服務(wù)器和客戶端之間的通信的子過程。下面是一些子過程:讀特性值客戶端設(shè)備請求讀取句柄處的特性值,服務(wù)器將此值回應(yīng)給客戶端(假定屬性有讀權(quán)限)。使用特性的UUID讀客戶端請求讀基于一個特定類型的所有的特性值,服務(wù)器將所有與指定類型匹配的特性的句柄和值回應(yīng)給客戶端設(shè)備(假設(shè)屬性有讀權(quán)限)。讀多個特性值客戶端一次請求中讀

44、取幾個句柄的特征值,服務(wù)器將這些特征值回應(yīng)給客戶端(假設(shè)屬性有讀權(quán)限)??蛻舳诵枰廊绾谓馕鲞@些不同的特性值的數(shù)據(jù)。4.5 BLE協(xié)議棧開發(fā)平臺配置TI公司免費的藍(lán)牙4.0 BLE軟件開發(fā)套件是完整地支持單模藍(lán)牙4.0 BLE應(yīng)用開發(fā)的平臺,它基于CC2540/CC2541射頻單片機,是一套完整的SoC解決方案。藍(lán)牙4.0 BLE軟件開發(fā)平臺支持兩種不同的應(yīng)用開發(fā)配置:1. 單一設(shè)備:控制器、主機、配置文件、應(yīng)用程序在一片CC2540上實現(xiàn),這是最簡單和最常見的配置。這種方式提供最低的成本和功耗,大部分實際應(yīng)用都采用這種方式。SimpleBLEPeripheral和SimpleBLECent

45、ral示例工程都是采用單一設(shè)備的配置方式。2. 網(wǎng)絡(luò)處理器:控制器和主機部分在CC2540上執(zhí)行,而應(yīng)用程序和Profiles在另一個設(shè)備執(zhí)行。應(yīng)用程序和Profiles通過廠商特定的HCI命令與CC2540通信,這一過程需要使用硬件或UART接口,或者通過USB使用虛擬的UART接口。網(wǎng)絡(luò)處理器配置適用于應(yīng)用程序在另一個設(shè)備(外部微控制器或PC)上運行的情況。在這種情況下,應(yīng)用程序可以在外部獨立開發(fā),而協(xié)議棧仍然在CC2540上運行。要使用網(wǎng)絡(luò)處理器,HostTestRelease工程必須使用。如上所述,本設(shè)計是為了實現(xiàn)CC2540無線通信模塊與PC機的通信,所以本設(shè)計所選擇的BLE 協(xié)議棧

46、開發(fā)平臺配置為網(wǎng)絡(luò)處理器配置。4.6 SimpleBLEPeripheral 從機編程這里說到的從機,也就是本設(shè)計用到的CC2540EM開發(fā)板。在TI的BLE協(xié)議棧中,雖然主機和從機的主體結(jié)構(gòu)類似(均基于osal),但是從機和主機有著很大的區(qū)別,從機里包含了一個叫做profile的相關(guān)代碼,這個profile決定了從機的功能。例如防丟器、血壓儀、心率計等均是藍(lán)牙組織規(guī)定的profile。打開SimpleBLEPeripheral從機工程。ProjectsbleSimpleBLEPeripheralCC2540SimpleBLEPeripheral.eww進入SimpleBLEPeriphera

47、l.c主體源文件。SimpleBLEPeripheral工程如圖4-4所示:圖4-4 SimpleBLEPeriphal工程文件文件列表分成如下幾個文件夾:APP包含應(yīng)用程序源代碼和頭文件;HAL包含硬件抽象層源代碼和頭文件;INCLUDE這個組包含所有的BLE協(xié)議棧API的頭文件;LIB協(xié)議棧庫文件;OSAL包含操作系統(tǒng)抽象層源代碼和頭文件;PROFILE包含GAP角色Profile、GAP安全Profile、GATT Profile的源代碼和頭文件;TOOLS包含buildConfig.cfg、buildComponents.cfg。也包含“OnBoard.c”和“OnBoard.h”,處

48、理用戶接口功能;OUTPUTIAR輸出的內(nèi)容。SimpleBLEPeripheral_Init 任務(wù)初始化函數(shù),如圖4-5所示。圖4-5 SimpleBLEPeripheral_Init任務(wù)初始化函數(shù)314行:設(shè)置從機廣播數(shù)據(jù)。313行:設(shè)置主機掃描回應(yīng)數(shù)據(jù)。主機和從機是這樣開機工作的:從機開啟廣播,然后主機掃描廣播的從機,當(dāng)從機接收到主機的掃描請求后,會主動發(fā)送掃描回應(yīng)數(shù)據(jù)。然后主機發(fā)起連接,開始通信。這里涉及的廣播內(nèi)容和掃描回應(yīng)內(nèi)容就是在這里設(shè)置的。310320行:設(shè)置BLE低功耗藍(lán)牙系統(tǒng)里幾個非常重要的時間參數(shù)。354行:添加SimpleProfile。366370行:設(shè)置SimpleP

49、rofile初始數(shù)據(jù)。最后433行:啟動BLE從機。開始進入任務(wù)函數(shù)循環(huán)??梢钥闯觯械娜蝿?wù)函數(shù)的結(jié)構(gòu)幾乎都是一致的,有一個任務(wù)入口點,還有系統(tǒng)消息事件處理,以及其他的任務(wù)事件處理。455行:系統(tǒng)消息事件,同樣包括按鍵消息事件,以及從機的當(dāng)前請求狀態(tài)回復(fù)。471行:有int函數(shù)啟動的任務(wù)函數(shù)入口點,啟動從機程序,并且開啟周期性的任務(wù)處理,這個周期性的任務(wù)并不是必須的。系統(tǒng)消息處理函數(shù)如圖4-6所示。圖4-6 系統(tǒng)消息處理函數(shù)從這個函數(shù)內(nèi)容可以看到,在按鍵的處理前有一個宏定義,CC2540_MINIDK,當(dāng)使用Keyfob開發(fā)板運行該從機程序時,會有按鍵處理。當(dāng)使用CC2540EM核心板時,不

50、做任何處理。當(dāng)主機調(diào)用GATT_ReadCharValue后,讀取到的value,會在GATT_MSG_EVENT中通知我們,如圖4-7所示。圖4-7 GATT處理函數(shù)如上文所述,這里的Peripheral是作為GATT的service端,而主機是作為GATT的client端,兩者在數(shù)據(jù)的通信接口上有很大的區(qū)別。在從機里,接收數(shù)據(jù)是通過一個GATT Callback回調(diào)函數(shù)。系統(tǒng)在接收到數(shù)據(jù)時會調(diào)用這個callback向我們發(fā)出通知。在SimpleBLEPeripheral.c的開頭有這個回調(diào)函數(shù)的定義,如圖4-8所示。圖4-8 Callback回調(diào)函數(shù)每當(dāng)profile中的character

51、istic value有變化,都會產(chǎn)生一次回調(diào)。在回調(diào)函數(shù)中,我們判斷是哪個characteristic,然后準(zhǔn)備數(shù)據(jù)接收,這樣就實現(xiàn)了主機到從機的數(shù)據(jù)接收工作。4.7 HostTestRelease主機編程主機端由CC2540 USBDongle、PC和TI官方的上位機軟件BTool共同構(gòu)成,也可以使用串口助手等串口調(diào)試軟件代替BTool。要向CC2540 USBDongle中燒寫HostTestRelease程序才能實現(xiàn)其作為主機的功能。USBDongle是USB口的,通過內(nèi)部軟件模擬成串口,實現(xiàn)串口通信。打開SimpleBLEPeripheral從機工程。ProjectsbleHostT

52、estAppCC2540HostTestRelease.eww進入HostTestRelease.c主體源文件。HostTestRelease網(wǎng)絡(luò)處理器工程結(jié)構(gòu)和一般的協(xié)議棧demo一樣,同樣適用硬件抽象層,操作系統(tǒng)虛擬層。雖然它也包含了一個稱為APP的工程文件夾,但這些文件并不是真正的應(yīng)用程序,只是簡化的代碼層,用來將外部PC發(fā)來的信息轉(zhuǎn)化為調(diào)用協(xié)議棧的API功能,任何從協(xié)議棧收到的消息都會發(fā)送給外部PC,這些轉(zhuǎn)換的所有源碼都包含在hci_ext_app.c文件中,HostTestRelease工程如圖4-9所示:圖4-9 SimpleBLEPeriphal工程文件TI BLE協(xié)議棧中已經(jīng)做

53、了UART底層驅(qū)動,因此并不需要重頭編寫UART的驅(qū)動代碼,而是直接調(diào)用hal_uar.c中的api函數(shù)。該驅(qū)動源文件在如下目錄:BLE-CC2540x-1.3ComponentshaltargetCC2540EBCC2540EBhal_uart.c調(diào)用hal_uart.c提供的api方法一下:1. 編寫串口初始化函數(shù),配置UART波特率、流控制、緩沖區(qū)大小,數(shù)據(jù)接收回調(diào)函數(shù)等參數(shù)后,打開串口。2. 編寫數(shù)據(jù)接收回調(diào)函數(shù)。3. 封裝串口打印函數(shù)。在hal_uart.c中有一個串口初始化函數(shù):HalUARTInit(),但編程不是針對它,HalUARTInit()在芯片上電階段就會調(diào)用。而本設(shè)計

54、中的串口初始化函數(shù),是我們需要在任務(wù)函數(shù)中調(diào)用的初始化串口配置用。其函數(shù)如圖4-10所示。圖4-10 串口應(yīng)用程序初始化函數(shù)第33行:設(shè)置波特率,本設(shè)計使用的是57600。第34行:設(shè)置流控制,值為TRUE或者FALSE,當(dāng)為TRUE時,除了TX、RX外,還要連接CTS和RTS。如果設(shè)置成FALSE,只需要TX和RX就可以外接通信。第40行:設(shè)置回調(diào)函數(shù)。當(dāng)程序接收到硬件發(fā)來的串口數(shù)據(jù)時,會調(diào)用該函數(shù),通知用戶做好接收工作。第44行:以上的配置,打開需要的串口。當(dāng)程序接收到硬件發(fā)來的串口數(shù)據(jù)時,會調(diào)用剛才配置的回調(diào)函數(shù),通知我們做好接收工作,回調(diào)函數(shù)編寫圖4-11所示。圖4-11 串口應(yīng)用回調(diào)函數(shù)第55行:開辟臨時數(shù)據(jù)緩沖區(qū),用來接收數(shù)據(jù)。第64行:調(diào)用Hal_UART_RxBufLen函數(shù),返回當(dāng)前可讀的數(shù)據(jù)長度。第66行:調(diào)用HalUARTRead讀取uart緩存里的數(shù)據(jù)到pktBuffer中。SerialPrintString()封裝了端口號和數(shù)據(jù)長度兩個參數(shù),SerialPrintValue函數(shù)向用戶提供了打印數(shù)值功能,并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論