趙成城+嚴(yán)帥+劉文怡+張會(huì)新
摘 要: 介紹了基于CC3200的TCP/IP傳輸應(yīng)用,通過(guò)在CCS中編譯調(diào)試,實(shí)現(xiàn)了以STA模式工作的多對(duì)一的基于TCP/IP協(xié)議的無(wú)線傳輸,突破了單一的點(diǎn)對(duì)點(diǎn)方式的數(shù)據(jù)傳輸,更加高效。以CC3200為核心器件,集成度高,可靠性好,方便操作,能夠廣泛應(yīng)用于數(shù)據(jù)采集等領(lǐng)域。
關(guān)鍵詞: WiFi; CC3200; TCP/IP; 多終端
中圖分類(lèi)號(hào): TN99?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)23?0030?04
Abstract: The transmission application of TCP/IP based on CC3200 is introduced. The compiling and debugging in CCS can realize the several?for?one wireless transmission (working in STA mode) based on TCP/IP protocol, which can break through the point?to?point data transmission and make the transmission more efficient. The CC3200 is taken as the core device of this application, has high integration, good reliability and easy operation, and can be widely used in data acquisition and other fields.
Keywords: WiFi; CC3200; TCP/IP; multi?terminal
0 引 言
TCP/IP是一種網(wǎng)絡(luò)通信協(xié)議,是Internet的語(yǔ)言,它規(guī)范了網(wǎng)絡(luò)上的所有通信設(shè)備,是當(dāng)今互聯(lián)網(wǎng)必不可少的組成部分。與UDP/IP通信協(xié)議在傳輸過(guò)程中數(shù)據(jù)的完整性相比,TCP為不可靠的IP連接提供可靠、具有流量控制、端到端的數(shù)據(jù)傳輸[1],在Internet中幾乎可以無(wú)差錯(cuò)地傳送數(shù)據(jù),對(duì)諸多通信領(lǐng)域起到了積極深遠(yuǎn)的作用。與有線通信傳輸方式相比,無(wú)線通信方式傳輸可以極大地克服有線通信帶來(lái)的例如線纜的布線、設(shè)備的移動(dòng)、線材的損耗及腐蝕等諸多問(wèn)題,其高效性、便攜性、靈活性給數(shù)據(jù)通信帶來(lái)了極大的便利,順應(yīng)了各行各業(yè)的行業(yè)發(fā)展需求。
WiFi(WirelessFidelity,無(wú)線高保真)屬于無(wú)線局域網(wǎng)的一種,通常是指符合IEEE 802.11b標(biāo)準(zhǔn)的網(wǎng)絡(luò)產(chǎn)品,WiFi可以將個(gè)人電腦、手持設(shè)備(如PDA、手機(jī))等終端以無(wú)線方式互相連接,在物聯(lián)網(wǎng)領(lǐng)域也得到了廣泛應(yīng)用[2?3]。
物聯(lián)網(wǎng)(Internet of Things,IoT)指的是將各種信息傳感設(shè)備,如射頻識(shí)別裝置、電子標(biāo)簽、全球定位系統(tǒng)、激光掃描器、家庭智能設(shè)備等種種裝置與互聯(lián)網(wǎng)結(jié)合起來(lái)而形成的一個(gè)物聯(lián)網(wǎng)絡(luò)。其目的是讓所有的物品都與網(wǎng)絡(luò)連接在一起,進(jìn)行信息交換和通信,以實(shí)現(xiàn)智能化識(shí)別、定位、跟蹤、監(jiān)控和管理。
CC3200是TI無(wú)線連接SimpleLink WiFi和物聯(lián)網(wǎng)(IoT)解決方案最新推出的一款單片無(wú)線MCU,是業(yè)界第一個(gè)具有內(nèi)置WiFi的MCU,是針對(duì)物聯(lián)網(wǎng)應(yīng)用、集成高性能ARM Cortex?M4的無(wú)線MCU[4]。通過(guò)該芯片可以實(shí)現(xiàn)諸多需求的功能。本文介紹的應(yīng)用主要利用CC3200的無(wú)線模塊實(shí)現(xiàn)接收來(lái)自多個(gè)終端的無(wú)線TCP數(shù)據(jù)包,并可以根據(jù)需要在此基礎(chǔ)上添加無(wú)線串口UART輸出等功能。
1 總體設(shè)計(jì)
本應(yīng)用的整體結(jié)構(gòu)由多個(gè)終端、路由器、CC3200 Launchpad 組成,終端和CC3200 Launchpad共同連接無(wú)線路由組成局域網(wǎng),如圖1所示。
CC3200有站點(diǎn)(STA)和接入點(diǎn)(AP)兩種工作模式,由于本次在應(yīng)用中CC3200是連接到無(wú)線路由器上的,因此工作在STA模式。CC3200 Launchpad在啟動(dòng)時(shí)根據(jù)存儲(chǔ)于外部存儲(chǔ)器(串行閃存SFLASH)中的用戶配置文件中的工作模式標(biāo)志選擇工作模式,配置文件同時(shí)存儲(chǔ)接入點(diǎn)名稱(SSID)及密碼[2]。配置文件是事先通過(guò)SDK編譯后燒錄到開(kāi)發(fā)板中的,用戶可以根據(jù)需要自行修改。
2 硬件設(shè)計(jì)
本應(yīng)用的硬件部分主要由CC3200、射頻(RF)電路、輔助電路三部分組成,如圖2所示。其中,CC3200集成了WiFi網(wǎng)絡(luò)處理器(CC3100)和Cortex M4。用戶可根據(jù)TI官網(wǎng)提供的硬件設(shè)計(jì)文檔自行修改調(diào)整。
2.1 SimpleLinkTMWiFi?CC3200
多終端TCP包接收應(yīng)用的核心器件為CC3200,它是TI最新推出的一款WiFi MCU,整合了無(wú)線連接SimpleLink WiFi和物聯(lián)網(wǎng)(IoT)解決方案,是業(yè)界第一個(gè)具有內(nèi)置WiFi針對(duì)物聯(lián)網(wǎng)應(yīng)用、集成高性能ARM Cortex?M4的無(wú)線MCU。CC3200采用四方扁平無(wú)引線(QFN)封裝格式,易于布局,集成度高,客戶能夠方便地使用單個(gè)集成電路來(lái)完成整個(gè)應(yīng)用的開(kāi)發(fā)。借助片上WiFi、互聯(lián)網(wǎng)和強(qiáng)大的安全協(xié)議,無(wú)需WiFi相關(guān)經(jīng)驗(yàn)便可快速上手及二次開(kāi)發(fā)。CC3200是一個(gè)完整的平臺(tái)解決方案,其中包括軟件、示例應(yīng)用、工具、用戶和編程指南、參考設(shè)計(jì)以及TI E2E支持社區(qū)。CC3200由應(yīng)用MCU、WiFi網(wǎng)絡(luò)處理器(CC3100)和電源管理三大部分組成。
MCU子系統(tǒng)包含一個(gè)ARM Cortex?M4 CPU,運(yùn)行頻率為80 MHz。該系統(tǒng)包含多種外設(shè),其中包括一個(gè)快速并行攝像頭接口,I2S,SD/MMC,UART,SPI,I2C和四通道模/數(shù)轉(zhuǎn)換器(ADC)。CC3200的嵌入式RAM用于存儲(chǔ)代碼和數(shù)據(jù),ROM用于存儲(chǔ)外部串行閃存,引導(dǎo)加載程序和外設(shè)驅(qū)動(dòng)程序。endprint
WiFi網(wǎng)絡(luò)處理器子系統(tǒng)(CC3100)特有一個(gè)WiFi片上互聯(lián)網(wǎng),并且包含一個(gè)額外的專(zhuān)用ARM MCU,可以通過(guò)SPI,UART與外部MCU進(jìn)行通信[5],此MCU可完全免除應(yīng)用MCU的處理負(fù)擔(dān)。這個(gè)子系統(tǒng)包含802.11 b/g/n射頻、基帶和具有強(qiáng)大的256位加密引擎的MAC,能夠?qū)崿F(xiàn)快速、安全互聯(lián)網(wǎng)連接。CC3200支持基站(AP)、訪問(wèn)點(diǎn)(STA)和WiFi直接(P2P)模式。此器件還支持WPA2個(gè)人和企業(yè)安全性以及WPS 2.0的加密方式,最大限度地保證了用戶和企業(yè)的連接安全性。WiFi片上互聯(lián)網(wǎng)包括嵌入式TCP/IP和 TLS/SSL堆棧,HTTP服務(wù)器和多個(gè)互聯(lián)網(wǎng)協(xié)議。CC3100模塊框圖如圖3所示。
電源管理子系統(tǒng)包括支持廣泛電源電壓范圍的集成直流?直流轉(zhuǎn)換器。這個(gè)子系統(tǒng)可啟用低功耗模式,諸如具有RTC的休眠模式(Hibernate),所需電流少于4 μA;低功耗深睡眠(LPDS),所需電流為120 μA。
2.2 無(wú)線射頻外圍電路
CC3200的RF外圍電路是完成無(wú)線通信的基礎(chǔ)配置,其電路圖如圖4所示。得益于CC3200較高的集成度,外圍電路的構(gòu)造變得非常簡(jiǎn)單,僅需少量元件即可實(shí)現(xiàn)無(wú)線信號(hào)的收發(fā),待發(fā)送信號(hào)從CC3200的引腳RF_BG中傳出,經(jīng)過(guò)2.4 GHz的帶通濾波器FL1以及阻抗匹配網(wǎng)絡(luò)后通過(guò)天線發(fā)送出去[6]。
2.3 輔助電路
輔助電路是整個(gè)開(kāi)發(fā)板必不可少的部分,它提供了開(kāi)發(fā)板運(yùn)行所需的電源、狀態(tài)指示等,其包括供電電路、時(shí)鐘電路、復(fù)位電路、指示燈、用戶按鍵等,具體電路可在TI提供的硬件手冊(cè)中查閱。
3 軟件設(shè)計(jì)
鑒于TI已提供了完整的CC3200 Launchpad,軟件部分為本應(yīng)用的核心,著重講述。TI提供了IAR,CCS,GCC等集成開(kāi)發(fā)環(huán)境,并在SDK中提供了豐富的API接口函數(shù)以及應(yīng)用例程,用戶可以方便地調(diào)用各種API進(jìn)行編程調(diào)試,極大地降低了用戶的學(xué)習(xí)難度。本次應(yīng)用是在CCS開(kāi)發(fā)環(huán)境中完成的,應(yīng)用語(yǔ)言為C語(yǔ)言。本應(yīng)用的總體流程圖如圖5所示。
3.1 初始化系統(tǒng)
初始化系統(tǒng)包括初始化開(kāi)發(fā)板BoardInit(),初始化μDMA函數(shù)UDMAInit(),引腳復(fù)用配置PinMuxConfig()和初始化應(yīng)用變量InitializeAppVariables()。
3.1.1 初始化開(kāi)發(fā)板BoardInit()
初始化開(kāi)發(fā)板BoardInit()包括設(shè)置中斷向量表IntVTableBaseSet(),允許處理器中斷IntMasterEnable(),允許中斷IntEnable(),初始化MCU PRCMCC3200MCUInit()。
3.1.2 初始化μDMA函數(shù)UDMAInit()
初始化μDMA函數(shù)包括允許μDMA時(shí)鐘PRCMPeripheralClkEnable()、復(fù)位μDMA PRCMPeripheralReset()、注冊(cè)μDMA中斷 μDMAIntRegister()、允許μDMAuDMAEnable()、設(shè)置μDMA通道控制表基地址μDMAControlBaseSet(void *pControlTable)。其中,*pControlTable為DMA通道控制表基地址指針。
3.1.3 引腳復(fù)用配置PinMuxConfig()
引腳復(fù)用配置程序包括允許GPIO時(shí)鐘PRCMPeripheralClkEnable()和配置GPIO引腳PinTypeUART()。
3.1.4 初始化應(yīng)用變量InitializeAppVariables()
初始化應(yīng)用變量InitializeAppVariables()中對(duì)SimpleLink狀態(tài)、網(wǎng)關(guān)IP、SSID及BSSID、目的IP、端口號(hào)、TCP包數(shù)量進(jìn)行了初始化。
3.2 配置SimpleLink
所用函數(shù)為ConfigureSimpleLinkToDefaultState(),包括啟動(dòng)SimpleLink sl_Start()、獲取設(shè)備版本sl_DevGet()、設(shè)置連接策略,禁止WLAN掃描,設(shè)置電源模式sl_WlanPolicySet()、刪除配置文件sl_WlanProfileDel()、允許DHCP sl_NetCfgSet、sl_WlanPolicySet()、設(shè)置發(fā)射功率 sl_WlanSet()、注銷(xiāo)DNS服務(wù) sl_NetAppMDNSUnRegisterService()、刪除接收濾波sl_WlanRxFilterSet()、停止SimpleLink sl_Stop()。
3.3 啟動(dòng)SimpleLink
在配置完SimpleLink后,需要重新啟動(dòng)SimpleLink,所用函數(shù)為sl_Start()。
3.4 連接WLAN
連接WLAN所用函數(shù)為WlanConnect(),內(nèi)部調(diào)用函數(shù)為sl_WlanConnect()。
3.5 TCP處理函數(shù)
TCP處理函數(shù)流程如圖6所示(以接收3個(gè)終端為例)。
創(chuàng)建TCP套接字所用函數(shù)為sl_Socket(),傳遞值為SL_AF_INET(IPv4),在socket.h中定義為2;SL_SOCK_STREAM(流式套接字)在socket.h中定義為1。函數(shù)正確返回值為套接字ID。
綁定和監(jiān)聽(tīng)TCP服務(wù)器所用函數(shù)為sl_Bind()和sl_Listen()。套接字ID為sl_Socket()的返回值。
接收函數(shù)為sl_Accept(),正確返回值為套接字ID;接收函數(shù)為sl_Recv(),正確返回值為接收字節(jié)數(shù)。endprint
本函數(shù)的核心是在進(jìn)行完綁定和監(jiān)聽(tīng)服務(wù)器之后,CC3200開(kāi)始接受終端連接,然后陸續(xù)接收來(lái)自終端的TCP數(shù)據(jù)包。如果需要從每個(gè)終端單次連續(xù)接收多個(gè)TCP包,則需要用戶自行添加for循環(huán)使每個(gè)socketID套接字多次接收TCP包;如果需要添加串口輸出功能,在接收函數(shù)sl_Recv后添加MAP_UARTCharPut函數(shù)便可實(shí)現(xiàn)。
3.6 運(yùn)行結(jié)果
對(duì)程序添加串口輸出功能后通過(guò)TI提供的燒錄軟件Uniflash燒錄到CC3200中,數(shù)據(jù)線連接到PC,運(yùn)行程序,終端1發(fā)送”terminal test 1”,終端2發(fā)送”terminal test 2”,終端3發(fā)送”terminal test 3”到CC3200,便可以在串口調(diào)試工具中看到從各個(gè)終端發(fā)送過(guò)來(lái)的數(shù)據(jù),如圖7所示。
4 結(jié) 語(yǔ)
CC3200作為T(mén)I推出的高性能單片無(wú)線MCU,其強(qiáng)大的整合性和擴(kuò)展性方便了用戶和企業(yè)的二次開(kāi)發(fā)。采用該器件獨(dú)特的低功耗設(shè)計(jì),依靠?jī)晒?jié)AA電池便可運(yùn)行一年以上的工作時(shí)間,這為使用電池供電的終端設(shè)備帶來(lái)了WiFi功能,可以非常便利地滿足IoT連接的各種技術(shù)要求[7]。本次應(yīng)用充分挖掘了CC3200的網(wǎng)絡(luò)功能,在僅修改代碼不改變硬件結(jié)構(gòu)的前提下突破了單一點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳輸?shù)膫鹘y(tǒng)方法,成本低、結(jié)構(gòu)簡(jiǎn)單,提高了數(shù)據(jù)傳輸?shù)男?,拓展了?yīng)用范圍。
參考文獻(xiàn)
[1] 魯力,張波.嵌入式TCP/IP協(xié)議的高速電網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)[J].儀器儀表學(xué)報(bào),2009(2):405?409.
[2] 李曉陽(yáng).WiFi技術(shù)及其應(yīng)用與發(fā)展[J].信息技術(shù),2012(2):196?198.
[3] 閆安斌.基于WiFi的無(wú)線傳感器采集傳輸模塊設(shè)計(jì)與實(shí)現(xiàn)[D].太原:中北大學(xué),2016.
[4] 郭書(shū)軍,田志鵬.基于單片WiFi MCU CC3200的無(wú)線串口[J].儀器儀表用戶,2016(1):24?27.
[5] 陳穎瑩.芯片上的網(wǎng)絡(luò) TI SimpleLink WiFi讓聯(lián)網(wǎng)如此簡(jiǎn)單[J].電子技術(shù)應(yīng)用,2014(7):2.
[6] 林婷.面向WiFi開(kāi)發(fā)的微控制器CC3200的應(yīng)用研究[D].蘇州:蘇州大學(xué),2015.
[7] 田志鵬.基于CC3200的遠(yuǎn)程監(jiān)視系統(tǒng)設(shè)計(jì)[D].北京:北方工業(yè)大學(xué),2016.endprint