目录

Contiki(TI CC26XX)入门

本文档让你能够在TI的CC26xx上使用Contiki。该平台支持多个评估板:

能够兼容CC26xx或CC13xx评估模块的SmartRF 06评估板(相关文件和驱动程序在srf06/路径下)

两个平台通用的CPU代码在$(CONTIKI)/cpu/cc26xx-cc13xx路径下。
该端口是在CC2650s上开发和测试的,但是也能在CC2630上工作。欢迎提供这两种芯片的错误报告。CC2630以及CC13XX芯片是没有BLE功能的。该端口只适用于7x7mm封装的芯片。

在使用本文档之前您需要对如何使用命令行和在UNIX系列操作系统上执行基本管理任务有基本的了解。

端口特性

该平台具有以下主要功能:

在硬件支持方面,已经实现了以下驱动程序:

要求

您需要使用的端口:

该端口有三个例程:

想详细了解这三个例程你可以查看它们的readme文件。

编译你的第一个例子

建议你从examples/cc26xx/下面的cc26xx-demo开始你的学习。这是一个非常简单的例子,可以帮助您熟悉硬件和环境。该示例可在Sensortag和SmartRF06 EB上运行。

严格来说,要想编译它,你需要运行make TARGET=srf06-cc26xx BOARD=srf06/cc26xx。但是在该示例目录下包含一个Makefile.target自动包含了该目录,并且指定了正确的TARGET=参数,同样将BOARD=环境变量默认为srf06/cc26xx(SmartRF06 EB + CC26XXEM)。所以对于cc26xx目录下的示例,以及使用SmartRF06 EB时,您只需要运行make就行了。

BOARD变量的其他编译选项有:

如果BOARD变量没有设置,将会编译用于Srf06 CC26XXEM的镜像文件。

如果例程正在编译,这个时候你想切换平台编译,在你切换平台编译之前必须执行make clean,否则将导致链接器错误。

至于cc26xx-demo例程在做什么你可以查看它的readme文件详细了解。

如果你需要生成程序编译的汇编列表,请运行make cc26xx-demo.lst。汇编列表对你调试或优化应用程序代码很有用。要在汇编列表中插入C源代码,您需要通过添加CFLAGS += -g到项目的Makefile中使编译器包含调试信息然后运行make clean cc26xx-demo.lst重新编译。

下载程序到设备

在Windows上你可以使用TI的SmartRF Flash Programmer(FLASH-PROGRAMMER-2)对设备进行编程。

在Linux和OS X上,您可以通过芯片的串口ROM bootloader对设备进行编程。当然你需要满足以下条件:

您需要手动启用bootloader,并使用.upload来编译目标文件(例如对于cc26xx-demo就make cc26xx-demo.upload)。在SmartRF06上,您需要按住select按钮来复位EM(EM RESET按钮)进而启动bootloader。对于LaunchPad,您需要按住BTN_1重置芯片来启动bootloader。你可以修改boar.h中的宏SET_CCFG_BL_CONFIG_BL_LEVELSET_CCFG_BL_CONFIG_BL_PIN_NUMBER来更改引脚及其相应的电平(高/低),进而触发bootLoader模式。

串口下载器脚本会自动选择第一个可用的串行端口。但是这个端口可能不是连接我们开发板的端口,这时你可以通过定义脚本中的PORT参数来强制脚本使用特定端口。例如make cc26xx-demo.upload PORT=/dev/tty.usbserial

有关串口bootLoader的更多信息,请参阅tools/cc2538-bsl目录下的README

CC13xx/CC26xx基于UART的边界路由

开发平台可以用作边界路由器(基于UART的SLIP)。在目录examples/ipv6/rpl-border-router下的示例代码就是做这件事的。此示例定义了以下内容:

#ifndef UIP_CONF_BUFFER_SIZE
#define UIP_CONF_BUFFER_SIZE    140
#endif

#ifndef UIP_CONF_RECEIVE_WINDOW
#define UIP_CONF_RECEIVE_WINDOW  60
#endif

对于用作边界路由器,CC26xx端口比其他平台具有更高的功能。因此,在编译示例之前,建议删除上面的两个配置指令。这将允许平台默认值生效,从而提高性能和稳定性。

您还需要根据需要定义RF_CORE_CONF_CHANNEL来选择正确的通道。

CC13xx/CC26xx串口协议广播(slip-radio)以及6lbr

开发平台还可以基于UART作为串口协议广播,与6lbr一起使用。

与边界路由器配置类似,您需要删除限制uIP缓冲区大小的宏定义。即在examples/ipv6/slip-radio/project-conf.h路径下删除下面两行。

#undef UIP_CONF_BUFFER_SIZE
#define UIP_CONF_BUFFER_SIZE    140

不要忘记根据需要定义RF_CORE_CONF_CHANNEL来选择正确的通道。

Contiki和CC26xxware之间的文件名冲突

在Contiki和CC26xxware中都有一个名为timer.c的文件。我们现在的配置是不使用CC26xxware中的timer.c文件。但是,如果在某些您需要使用它的时候,要按住以下方式对它进行重命名:

cpu/cc26xx/lib/cc26xxware/driverlib/timer.cdriverlib-timer.c

Sensortag UART的使用(有或没有调试器Devpack)

在Sensortag中有两种可以进行调试输出(printf等)的方法。

该平台支持两种操作模式,只要芯片也具有相应的功能。如果没有特殊设置平台将默认
为CC13xx设备的Sub-GHz模式而不是IEEE模式。要强制设置为IEEE模式,您需要将下面的宏添加到您的project-conf.h

#define CC13XX_CONF_PROP_MODE 0

低功耗运行

该平台充分利用CC26xx的省电功能。以下简单描述了它是如何工作的:

我们不使用预定义的功率配置文件(例如,如TRM中提到的或者像我们在CC2538上使用的LPM1,LPM2等一样)。每次进入低功耗运行时,我们要么使CM3休眠或者深度睡眠。深度休眠是高度可配置的:LPM引擎允许其他代码模块注册自己来接受通知以及允许配置为低功耗操作。有了这些功能配置,模块可以完全禁止深度睡眠,或者要求电源域保持供电等等。LPM引擎将尽可能关闭CC26xx组件,同时满足通过注册模块来设置的所有限制。

要确定要使用哪种电源模式,请遵循以下逻辑:

当芯片进入深度睡眠时:

芯片将因以下事件之一从低功耗模式下唤醒:

加入我们

文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。

CC2640R2F&BLE5.0-乐控畅联 © Copyright 2017, 成都乐控畅联科技有限公司.