本帖最后由 3guoyangyang7 于 2016-5-5 04:21 编辑
一、前言
1、资料说明
ti提供的网络编程资料小狂收集到了三篇,分别在小狂提供的资料的如下目录 ①网络说明文档
cc3200开发文档网络部分说明Internet on chip
②OTA库文档
cc3200开发文档库文件CC3200 Simplelink OTA Extlib API User's Guide
③网络接口文档
cc3200开发文档库文件simplelink_api
2、概念
正式开讲之前,先介绍几个概念,有主意我们接下来的说明。
AP(Access Point):无线接入点,这个概念特别广,在这里,用大白话说,你可以把CC3200当做一个无线路由器,这个路由器的特点不能插入网线,没有接入Internet,只能等待其他设备的链接,并且智能接入一个设备。类似于点对点模式啦。
STA(Station):任何一个接入无线AP的设备都可以称为一个站点。大白话说也就是平时接入路由器的设备,哈哈。
SSID(Service Set Identifier):SSID,每个无线AP都应该有一个标示用于用户识别,SSID就是这个用于用户识别的的名字,也就是我们经常说到的wifi名。
BSSID:每一个网络设备都有其用于识别的物理地址,这个东西呢就叫MAC地址,这个东西一般情况下出厂会有一个默认值,可更改,也有其固定的命名格式,也是设备识别的标识符。这个BSSID呢是针对设备说的,对于STA的设备来说,拿到AP接入点的MAC地址就是这个BSSID。
RSSI:这个理解起来更简单,就是通过STA扫描到AP站点的信号强度。
3、概念图
1、TI提供的Wlan_Station,示意图盗用一下
解释一下,其实这个图很简单明了,就是CC3200接入到一个能连入网络的无线路由器中,然后用CC3200通过路由ping到TI的官网,所以说TI的Wlan_Station 就做了这些事情。只是做的过程中,准备工作复杂了点而已。
2、网络状态机
这个图是摘自CC3200 应用指南这本书,感觉挺有用,就画了一遍,所以,状态机的模式,看着很清晰,我感觉就不做过多的解释了,哈哈。
二、Wlan_Station
小狂自认为没有那么大的能力,所以也写不出完全独立的Wlan_Station的程序,我就不拿我的程序出来献丑了(基本参考TI的历程),就直接拿TI的官方历程直接分析了。另外TI官方历程是基于OS的,当然也可以不依赖OS,小狂没有做测试,也不好说,所以,咱就分析基于OS的。
1、流程分析
2、工程导入
2.1 导入的工程
①ti_rtos_config:TI RTOS 配置工程库
②oslib:因为TI的工程能同时支持TI rtos和Free RTOS,所以又在此基础上写了一个通用的os库,我个人感觉有些东西好用,有些东西不好用,到时候再说
③simplelink:网络连接库,想要使用CC3200的网络必须包含这个库,别无他法,至少我现在没有发现其他的方式。
④Wlan_station:这个就是我们要调试的程序主题。
⑤Driverlib:这个是GPIO和串口用的库(在这个工程里)。
2.2导入过程
导入过程上一贴已经讲过了,所以就不多讲了,主要注意的是
①②③的导入不要copy,④的导入copy就行。看图
导入完成,如下图所示
2.3编译工程
编译的顺序一定要严格按照下边的顺序,因为每个库之间是有相互依赖关系的,不按照套路编译,就会出错
1、编译ti_rtos_config
右击ti_rtos_config选择Propertise
选择最新的编译器
按照图中选择,然后编译,没有报错和警告证明编译完成
2、编译oslib
同样右击点击Propertise,选择最近的编译器,如果不是最新的应该会给警告,但是没有问题。
然后编译,如果没有警告和错误,证明编译完成
3、编译simplelink
同样的编译没有错误,就算编译完成
4、编译driverlib
同样设置完成后编译,如果没有错误就算编译完成
5、编译wlan_station
如果没有出现任何错误,就证明编译完成,
3、修改参数
下边我们就让cc3200的设备连接到相应的网络上
修改参数
SECURITY_KEY:是你要连接的无线AP的名称
SECURITY_TYPE:要连接的无线AP的加密方式
SSID_NAME:要连接的AP的名称
把这几个参数重新修改一下,然后重新编译一下,没有出现错误就把程序下载到板子里
打开串口助手
执行程序
如果出现如图所示的状态的话,证明程序运行正常
1是你连接的AP名称也就是SSID,2是你连接的AP的MAC,也就是BSSID,3就是CC3200得到的IP地址,4是接入AP的网关地址,出现5则证明Ping网关和www.ti.com都成功,证明本机可以接入外网。 三、代码分析
我们就根据流程图来分析代码
1、板子初始化
板子初始化通过BoardInit();这个函数来的。
主要做了三件事,一件事强制化初始函数,PRCMCC3200MCUInit();这个不需要解释,强制性的,必须加上。因为我们这个工程用了RTOS,每个RTOS都需要一个心脏定时器,所以,就初始化了芯片中断,和系统定时器中断。PRCMCC3200MCUInit() 初始化芯片中断,MAP_IntEnable(FAULT_SYSTICK) 初始化定时器中断。
2、调试LED,和UART串口初始化
2.1 PinMuxConfig()
1是开启GPIOA1定时器时钟,和UART0的时钟,玩过cotex-M系列的童鞋都应该有这些体验,为了省电一般电源都是用什么开什么。2是串口UART复用,3是输出IO复用,这些都是用pinmux产生的。Pinmux的使用很简单,直接勾选就可以了。 2.2 InitTerm()
初始化串口调试台,里边的代码,到时候讲串口的时候再分析。现在就知道这么玩就可以实现就行了。
3、VStartSimpleLinkSpawnTask()
这个建立simplelink的一个调度的任务,具体的作用就是用来simplink切换的时候调用的,比如,从STA切换到AP会调用,从AP切换到STA也会调用,其他有关simplink的功能就不知道了,有知道具体作用的可以告知小狂,小狂特别感谢。
4、建立网络初始化任务
通过osi_TaskCreate来完成,这个就是tios建立一个任务的形式,也先不需要了解,讲到TIOS的时候会好好讲的,咱先进入WlanStationMode函数看看,不逐个解释了,太麻烦,就直接代码加注释了
下边的是初始化网络函数的代码加注释
基本上到这里,代码就算完事了,但是这个讲的应该不够自己,所以各位看官有什么不懂的可以直接问小狂,在下一篇里,会分析网络连接的回调函数,又是一个大长帖,希望大家看的不累啊,哈哈,小狂写的都累,没有办法,还是那句话,只有能帮助小白一切都值,另外写的匆忙,并没有时间校验,所以有什么问题可以直接提出来,小狂验证后会直接修改,谢谢大家,喜欢的点赞,支持。
8