首页 > 评测 > 传感器、BLE及云的完美结合——TI CC2650STK开发板评测

传感器、BLE及云的完美结合——TI CC2650STK开发板评测

TI   CC2650   STK   BLE   无线   射频   开发套件   
  • 作者:netlhx
  • 来源:21ic
  • [导读]
  • TI将STK系列定位为下一代IoT演示套件,除了无线通信技术,STK系列都板载了丰富的传感器并实现了云端连接的功能,TI宣称可在3分钟内实现快速体验,看上去很美。

另外从设备信息节可以看到当前产品的型号CC2650STK及当前固件(Firmware)的版本号,此处为1.3,与PCB上的标出的固件版本一致。

APP提供了固件OAD升级功能,在APP滑动内容至底部,打开TI OAD Service,检测当前设备可用的固件,如下图

TI CC2650STK19.jpg

可以看到针对CC2650STK的固件有两个,一个是BLE版本,版本号为1.32,另一个是ZigBee版本,版本号为1.12,这里选择将固件升级为BLE的1.32版本,点击下载升级按钮,APP开始下载固件并升级,如下图

TI CC2650STK20.jpg

这是下载升级新版固件的画面。

然而悲剧总是在不经意间发生。为了截取下载升级固件的画面,在手机上截图时不小心打破了升级的过程,然后CC2650就变砖了,真变砖了!LED没有了闪烁,APP也检测不到任何设备。

不过对于一款开发板来说,是没有变砖的说法的。只不过意味着再一次刷写固件代码而已,不过STK有自己的特殊性,并没有板载XDS调试/下载器,所以需要使用Debug DevPack来再次为CC2650STK烧录代码。

CC2650STK的出厂代码在BLE-STACK2软件包中,从官方下载该SDK包并安装,使用CCS7来编译得到一个HEX文件并通过DevPack下载到开发板,然后就满血复活了,当前最新的固件版本呈为1.4,奇怪的是,该版本号比OAD升级中的1.32版本号要高,估计是最新的固件版本号还没有在OAD服务中提供吧。

接下来将数据推送到云端,按如下设置打开云端推送功能

TI CC2650STK21.jpg

打开Push to Cloud开关,数据将推送到云端,实现网络访问功能。默认设置是将数据推送到IBM Watson网络,该网络不需要特定的认证,只需要一个唯一的设备标识即可,如下图

TI CC2650STK22.jpg

其中247189e99b06是设备的ID号,下面显示的是推送数据的图形化显示,APP向云端推送了很多数据,这里显示的是温度数据,如果想显示其它数据如光照值的图形化显示,在页面的下部选择相应的指标值即可。

这样子确实很方便,不过有一个问题。从头到尾,你只不过是个观众,要了解设备的工作原理,还是需要从代码着手。接下来看看如何使用CCS(Code Composer Studio)来建立、编译及调试一个程序,让开发板按照我们的意愿来执行任务。

CCS当前最新的版本为CCS7,从CCS7开始,TI免费提供CCS的使用,也就是不再需要License了。从官网下载CCS7安装程序,安装过程中CCS会根据用户设置的选项从网络下载需要的软件包,另外要注意的是CCS安装过程中最好是关闭操作系统的反病毒软件如Windows Defender等程序

TI CC2650STK23.jpg

这里我们选择了针对TI CC13XX及CC26XX系列的MCU支持,后期如果需要添加其它设备的硬件支持,可以在CCS里再行添加。

安装好CCS之后,可以新建工程,从头开始编写代码,实现特定的功能。最快的方式无疑是使用TI为设备提供的示例代码,CCS中的资源管理器可以联机搜索代码资源,针对TI CC2650STK的相关代码包如下

TI CC2650STK24.jpg

CCS资源管理器左边是可用的资源,右边可以对资源进行相关的操作,首先要下载相关的资源到本地,然后再导入到CCS中编译及调试/下载。

这里以PWM LED为例,该示例工程是TI-RTOS里面的示例代码。TI-RTOS是TI专门为MCU打造的一款RTOS系统,相比与裸机程序而言,在RTOS里面编写代码可以更加专注代码功能,而代码的调度等工作则交给RTOS来管理,程序的逻辑性更强。

PWM LED的主要代码如下

 

code1.jpg

 

同大多数MCU工程代码一样,在main函数里先是初始化硬件,例如时钟的配置,GPIO/PWM的配置等。初始化硬件之后,是配置一个PWM专用的任务函数,交由RTOS来管理及调度,TI-RTOS中的任务创建通过使用Task_Params结构体来指定相关的参数如任务函数名及任务参数等。

任务创建好后调用BIOS_start()来启动主循环,开始调度用户创建的任务。

具体实现PWM任务的函数定义如下

 

code2.jpg

 

这一段代码设定占空比,通过duty变量的值来实现调整不同的输出亮度,然后使用Task_sleep来指定简单的延迟,需要注意的Task_sleep中的参数是tick值,默认每个tick是10us,该值在每个工程文件的cfg文件中指定。

编译并下载代码到开发板,实现的效果如下

TI CC2650STK25.jpg

前面曾提到CC2650变砖及修复的问题。如果已有对应固件的HEX文件,也可以不使用CCS来下载。

  • 本文系21ic原创,未经许可禁止转载!

网友评论