基于CC32的多终端TCP包的无线接收

介绍了基于CC32的TCP/IP传输应用,通过在CCS中编译调试,实现了以STA模式工作的多对一的基于TCP/IP协议的无线传输,突破了单一的点对点方式的数据传输,更加高效。以CC32为核心器件,集成度高,可靠性好,方便操作,能够广泛应用于数据采集等领域。 
关键词WiFi;CC32;TCP/IP;多终端 
中图分类号TN99?34文献标识码A文章编号14?373X(217)23?3?4 
AbstractThetransmissionapplicationofTCP/IPbasedonCC32isintroduced.ThecompilinganddebugginginCCScanrealizetheseveral?for?onewirelesstransmission(workinginSTAmode)basedonTCP/IPprotocol,whichcanbreakthroughthepoint?to?pointdatatransmissionandmakethetransmissionmoreefficient.TheCC32istakenasthecoredeviceofthisapplication,hashighintegration,goodreliabilityandeasyoperation,andcanbewidelyusedindataacquisitionandotherfields. 
KeywordsWiFi;CC32;TCP/IP;multi?terminal 
引言 
TCP/IP是一种网络通信协议,是Internet的语言,它规范了网络上的所有通信设备,是当今互联网必不可少的组成部分。与UDP/IP通信协议在传输过程中数据的完整性相比,TCP为不可靠的IP连接供可靠、具有流量控制、端到端的数据传输1,在Internet中几乎可以无差错地传送数据,对诸多通信领域起到了积极深远的作用。与有线通信传输方式相比,无线通信方式传输可以极大地克服有线通信带来的例如线缆的布线、设备的移动、线材的损耗及腐蚀等诸多问题,其高效性、便携性、灵活性给数据通信带来了极大的便利,顺应了各行各业的行业发展需求。 
WiFi(WirelessFidelity,无线高保真)属于无线局域网的一种,通常是指符合IEEE82.11b标准的网络产品,WiFi可以将个人电脑、手持设备(如PDA、手机)等终端以无线方式互相连接,在物联网领域也得到了广泛应用2?3。 
物联网(InternetofThings,IoT)指的是将各种信息传感设备,如射频识别装置、电子标签、全球定位系统、激光扫描器、家庭智能设备等种种装置与互联网结合起来而形成的一个物联网络。其目的是让所有的物品都与网络连接在一起,进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理。 
CC32是TI无线连接SimpleLinkWiFi和物联网(IoT)解决方案最新推出的一款单片无线MCU,是业界第一个具有内置WiFi的MCU,是针对物联网应用、集成高性能ARMCortex?M4的无线MCU4。通过该芯片可以实现诸多需求的功能。本文介绍的应用主利用CC32的无线模块实现接收来自多个终端的无线TCP数据包,并可以根据需在此基础上添加无线串口UART输出等功能。 
1总体设计 
本应用的整体结构由多个终端、路由器、CC32Launchpad组成,终端和CC32Launchpad共同连接无线路由组成局域网,如图1所示。 
CC32有站点(STA)和接入点(AP)两种工作模式,由于本次在应用中CC32是连接到无线路由器上的,因此工作在STA模式。CC32Launchpad在启动时根据存储于外部存储器(串行闪存SFLASH)中的用户配置文件中的工作模式标志选择工作模式,配置文件同时存储接入点名称(SSID)及密码2。配置文件是事先通过SDK编译后烧录到开发板中的,用户可以根据需自行修改。 
2硬件设计 
本应用的硬件部分主由CC32、射频(RF)电路、辅助电路三部分组成,如图2所示。其中,CC32集成了WiFi网络处理器(CC31)和CortexM4。用户可根据TI官网供的硬件设计文档自行修改调整。 
2.1SimpleLinkTMWiFi?CC32 
多终端TCP包接收应用的核心器件为CC32,它是TI最新推出的一款WiFiMCU,整合了无线连接SimpleLinkWiFi和物联网(IoT)解决方案,是业界第一个具有内置WiFi针对物联网应用、集成高性能ARMCortex?M4的无线MCU。CC32采用四方扁平无引线(QFN)封装格式,易于布局,集成度高,客户能够方便地使用单个集成电路来完成整个应用的开发。借助片上WiFi、互联网和强大的安全协议,无需WiFi相关经验便可快速上手及二次开发。CC32是一个完整的平台解决方案,其中包括软件、示例应用、工具、用户和编程指南、参考设计以及TIE2E支持社区。CC32由应用MCU、WiFi网络处理器(CC31)和电源管理三大部分组成。 
MCU子系统包含一个ARMCortex?M4CPU,运行频率为8MHz。该系统包含多种外设,其中包括一个快速并行摄像头接口,I2S,SD/MMC,UART,SPI,I2C和四通道模/数转换器(ADC)。CC32的嵌入式RAM用于存储代码和数据,ROM用于存储外部串行闪存,引导加载程序和外设驱动程序。
 
WiFi网络处理器子系统(CC31)特有一个WiFi片上互联网,并且包含一个额外的专用ARMMCU,可以通过SPI,UART与外部MCU进行通信5,此MCU可完全免除应用MCU的处理负担。这个子系统包含82.11b/g/n射频、基带和具有强大的256位加密引擎的MAC,能够实现快速、安全互联网连接。CC32支持基站(AP)、访问点(STA)和WiFi直接(P2P)模式。此器件还支持WPA2个人和企业安全性以及WPS2.的加密方式,最大限度地保证了用户和企业的连接安全性。WiFi片上互联网包括嵌入式TCP/IP和TLS/SSL堆栈,HTTP服务器和多个互联网协议。CC31模块框图如图3所示。 
电源管理子系统包括支持广泛电源电压范围的集成直流?直流转换器。这个子系统可启用低功耗模式,诸如具有RTC的休眠模式(Hibernate),所需电流少于4μA;低功耗深睡眠(LPDS),所需电流为12μA。 
2.2无线射频外围电路 
CC32的RF外围电路是完成无线通信的基础配置,其电路图如图4所示。得益于CC32较高的集成度,外围电路的构造变得非常简单,仅需少量元件即可实现无线信号的收发,待发送信号从CC32的引脚RF_BG中传出,经过2.4GHz的带通滤波器FL1以及阻抗匹配网络后通过天线发送出去6。 
2.3辅助电路 
辅助电路是整个开发板必不可少的部分,它供了开发板运行所需的电源、状态指示等,其包括供电电路、时钟电路、复位电路、指示灯、用户按键等,具体电路可在TI供的硬件手册中查阅。 
3软件设计 
鉴于TI已供了完整的CC32Launchpad,软件部分为本应用的核心,着重讲述。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(),初始化MCUPRCMCC32MCUInit()。 
3.1.2初始化μDMA函数UDMAInit() 
初始化μDMA函数包括允许μDMA时钟PRCMPeripheralClkEnable()、复位μDMAPRCMPeripheralReset()、注册μ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(),包括启动SimpleLinksl_Start()、获取设备版本sl_DevGet()、设置连接策略,禁止WLAN扫描,设置电源模式sl_WlanPolicySet()、删除配置文件sl_WlanProfileDel()、允许DHCPsl_NetCfgSet、sl_WlanPolicySet()、设置发射功率sl_WlanSet()、注销DNS服务sl_NetAppMDNSUnRegisterService()、删除接收滤波sl_WlanRxFilterSet()、停止SimpleLinksl_Stop()。 
3.3启动SimpleLink 
在配置完SimpleLink后,需重新启动SimpleLink,所用函数为sl_Start()。 
3.4连接WLAN 
连接WLAN所用函数为WlanConnect(),内部调用函数为sl_WlanConnect()。 
3.5TCP处理函数 
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(),正确返回值为接收字节数。
 
本函数的核心是在进行完绑定和监听服务器之后,CC32开始接受终端连接,然后陆续接收来自终端的TCP数据包。如果需从每个终端单次连续接收多个TCP包,则需用户自行添加for循环使每个socketID套接字多次接收TCP包;如果需添加串口输出功能,在接收函数sl_Recv后添加MAP_UARTCharPut函数便可实现。 
3.6运行结果 
对程序添加串口输出功能后通过TI供的烧录软件Uniflash烧录到CC32中,数据线连接到PC,运行程序,终端1发送”terminaltest1”,终端2发送”terminaltest2”,终端3发送”terminaltest3”到CC32,便可以在串口调试工具中看到从各个终端发送过来的数据,如图7所示。 
4结语 
CC32作为TI推出的高性能单片无线MCU,其强大的整合性和扩展性方便了用户和企业的二次开发。采用该器件独特的低功耗设计,依靠两节AA电池便可运行一年以上的工作时间,这为使用电池供电的终端设备带来了WiFi功能,可以非常便利地满足IoT连接的各种技术求7。本次应用充分挖掘了CC32的网络功能,在仅修改代码不改变硬件结构的前下突破了单一点对点数据传输的传统方法,成本低、结构简单,高了数据传输的效率,拓展了应用范围。 
参考文献 
1魯力,张波.嵌入式TCP/IP协议的高速电网络数据采集系统J.仪器仪表学报,29(2)45?49. 
2李晓阳.WiFi技术及其应用与发展J.信息技术,212(2)196?198. 
3闫安斌.基于WiFi的无线传感器采集传输模块设计与实现D.太原中北大学,216. 
4郭书军,田志鹏.基于单片WiFiMCUCC32的无线串口J.仪器仪表用户,216(1)24?27. 
5陈颖莹.芯片上的网络TISimpleLinkWiFi让联网如此简单J.电子技术应用,214(7)2. 
6林婷.面向WiFi开发的微控制器CC32的应用研究D.苏州苏州大学,215. 
7田志鹏.基于CC32的远程监视系统设计D.北京北方工业大学,216.