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