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