基于CC3200的多终端TCP包的无线接收
赵成城+严帅+刘文怡+张会新
摘 要: 介绍了基于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用于存储外部串行闪存,引导加载程序和外设驱动程序。
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(),正确返回值为接收字节数。
本函数的核心是在进行完绑定和监听服务器之后,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.
摘 要: 介绍了基于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用于存储外部串行闪存,引导加载程序和外设驱动程序。
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(),正确返回值为接收字节数。
本函数的核心是在进行完绑定和监听服务器之后,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.