SimpliciTI无线开发 — 快速搭建低功耗、低成本无线传感器网络
一、初闻SimpliciTI
SimpliciTI是TI在2007年宣布推出的针对小型简单RF网络的专有低功耗协议,因其简化了具体的实施操作,降低对微控制器资源的占用,故基于SimpliciTI的RF网络有助于用户在不需要深入理解无线网络具体细节的情况下,快速推出低功耗、低成本、低数据率的无线自组织网络解决方案。SimpliciTI是一个基于连接的对等网络通信协议,理论上单一网络可容纳255的节点,支持点对点、星状、串状三种网络拓扑结构。
1、SimpliciTI体系结构

图1 SimpliciTI体系结构
2、SimpliciTI源码目录结构
在浏览SimpliciTI代码之前,有必要对源码的整体分布情况进行了解。安装完协议栈后,可以在(安装盘:\Texas Instruments\SimpliciTI-CC430-1.1.0-Demo\)路径下找到源码。分布情况如图5.1所示。以下针对SimpliciTI-CC430-1.1.0-Demo,对源码目录下各子目录进行简单介绍。

图2 SimpliciTI源码目录结构
1、Components
SimpliciTI协议栈的代码位于该目录下,共包含3个子目录。
(1)bsp
表1 bsp文件夹目录结构
|
\boards\ :与开发板相关 |
||
|
\CC430EM\ |
\bsp_external\ |
mrfi_board_defs.h |
|
\schematics\ |
EM430F6137RF900.pdf |
|
|
bsp_board.c |
||
|
bsp_board_defs.h |
||
|
bsp_button_defs.h |
||
|
bsp_config.h |
||
|
bsp_driver_defs.h |
||
|
bsp_drivers.c |
||
|
bsp_led_defs.h |
||
|
\drivers\ :驱动 |
||
|
\code\ |
bsp_buttons.c |
|
|
bsp_generic_buttons.h |
||
|
bsp_generic_leds.h |
||
|
bsp_leds.c |
||
|
bsp_buttons.h |
||
|
bsp_leds.h |
||
|
\mcus\ |
||
|
bsp_msp430_defs.h |
||
|
bsp.c |
||
|
bsp.h |
||
|
bsp_macros.h |
||
(2)mrfi
表2 mrfi文件夹目录结构
|
\radios\ :射频 |
|
|
\common\ |
mrfi_f1f2.c |
|
mrfi_f1f2.h |
|
|
\family5\ |
mrfi_radio.c |
|
mrfi_radio_interface.c |
|
|
mrfi_radio_interface.h |
|
|
\smartrf\ :SmartRF studio 导出配置 |
|
|
\CC1101\ |
rfstudio.srfs1101 |
|
smartrf_CC1101.h |
|
|
mrfi.c |
|
|
mrfi.h |
|
|
mrfi_defs.h |
|
(3)simpliciti
表3 simpliciti文件夹目录结构
|
\nwk\ :网络层 |
|
nwk.c |
|
nwk.h |
|
nwk_api.c |
|
nwk_api.h |
|
nwk_app.h |
|
nwk_frame.c |
|
nwk_frame.h |
|
nwk_globals.c |
|
nwk_globals.h |
|
nwk_QMgmt.c |
|
nwk_QMgmt.h |
|
nwk_types.h |
|
\nwk_applications\ :网络应用层 |
|
nwk_freq.c |
|
nwk_freq.h |
|
nwk_ioctl.c |
|
nwk_ioctl.h |
|
nwk_join.c |
|
nwk_join.h |
|
nwk_link.c |
|
nwk_link.h |
|
nwk_mgmt.c |
|
nwk_mgmt.h |
|
nwk_ping.c |
|
nwk_ping.h |
|
nwk_security.c |
|
nwk_security.h |
2、Documents
该目录下的文件是关于SimpliciTI协议的帮助文档。开发者可通过阅读这些文档,快速了解SimpliciTI协议的基本信息及其相关特性。
3、Projects
Projects目录下的是SimpliciTI的示例程序。
表4 Examples文件夹目录结构
|
\Examples\ :示例 |
|
|
\Applications\ |
app_remap_led.h |
|
main_2EDOnePolls.c |
|
|
main_AP_Async_Listen.c |
|
|
main_AP_Async_Listen_autoack.c |
|
|
main_AP_RE.c |
|
|
main_babble.c |
|
|
main_ED_Sniffer.c |
|
|
main_LinkListen.c |
|
|
main_LinkTo.c |
|
|
main_manyEDs.c |
|
|
main_manyEDs_autoack.c |
|
|
\CC430EM\ |
AP_as_Data_Hub |
|
Cascading_End_Devices |
|
|
Polling_with_AP |
|
|
Simple_Peer_to_Peer |
|
3、SimpliciTI的最小射频接口
MRFI(Minimal RF Interface,最小射频接口)。SimpliciTI共有5个Radio Family,每个Radio Family所支持的TI芯片及其描述,如表5所示。具体的代码请查看\Components\mrfi \mrfi_defs.h。
表5 Radio Family
|
Radio Family |
芯片 |
描述 |
|
Radio Family 1 |
MRFI_CC1100 |
Sub 1 GHz RF Transceiver |
|
MRFI_CC1101 |
Sub 1 GHz RF Transceiver |
|
|
MRFI_CC1100E_470 |
Sub 1 GHz RF Transceiver (CC1100E Asia) |
|
|
MRFI_CC1100E_950 |
Sub 1 GHz RF Transceiver (CC1100E Asia) |
|
|
MRFI_CC2500 |
2.4 GHz RF Transceiver |
|
|
Radio Family 2 |
MRFI_CC1110 |
Sub 1 GHz SoC |
|
MRFI_CC1111 |
Sub 1 GHz SoC with USB controller |
|
|
MRFI_CC2510 |
2.4 GHz SoC |
|
|
MRFI_CC2511 |
2.4 GHz SoC with USB controller |
|
|
Radio Family 3 |
MRFI_CC2420 |
2.4 GHz IEEE 802.15.4 RF Transceiver |
|
MRFI_CC2520 |
2.4 GHz IEEE 802.15.4 RF Transceiver |
|
|
Radio Family 4 |
MRFI_CC2430 |
2.4 GHz IEEE 802.15.4 SoC |
|
MRFI_CC2431 |
2.4 GHz IEEE 802.15.4 SoC |
|
|
Radio Family 5 |
MRFI_CC430 |
Sub 1 GHz MSP SoC |
|
Radio Family 6 |
MRFI_CC2530 |
2.4 GHz IEEE 802.15.4 SoC |
SimpliciTI-CC430-1.1.0-Demo中只有Radio Family 5的源代码。Radio Family的配置如图3所示,在“Defined Symbols”处声明即可。

图3 Radio Family配置
二、 开发工具
2.1、集成开发环境
1、IAR Embedded Workbench

图2.1 IAR主界面
2、TI Code Composer Studio

图2.2 CCS主界面
2.2、SmartRF Studio
SmartRF Studio是TI推出的用于评估和配置其低功耗RF芯片的Windows应用程序,可作为单独的应用程序使用。该应用程序可帮助设计人员在射频系统设计初期评估RF芯片。它可以生成相关配置寄存器的值、对射频系统进行测试。
SmartRF Studio 7的最新版本是1.10,主界面如图2.3所示。可配置TI生产低于1GHz、2.4GHz频段的射频芯片和片上系统。

图2.3 SmartRF Studio 7主界面

图2.4 射频参数配置
三、快速体验
3.1、协议栈配置
协议栈的配置文件位于Demo程序工程目录下的Configuration文件夹中。其中,smpl_nwk_config.dat用于通用网络的配置,而Access Point、End Device、Range Extender各自文件夹下的smpl_config.dat则用于配置该功能角色,在Demo程序的工程中,仅默认使用MAX_HOPS、MAX_HOPS_FROM_AP、MAX_APP_PAYLOAD三个配置选项。
3.2、部分代码解读
(1)BSP层
BSP层是一个轻量级的板级支持包,只提供了LED、Button两个驱动支持。SimpliciTI协议栈对硬件驱动的支持很少,更多其他驱动需要用户自行开发,例如ADC、UART、Flash、PWM等。
BSP_Init函数主要负责硬件的板级初始化以及相关驱动的初始化。该函数必须在射频初始化和协议栈初始化之前调用执行。
代码清单 BSP_Init函数

驱动模块的动态加载过程,BSP层的驱动在bsp_drivers.c中定义,在bsp_drivers_defs.h中可以看到驱动的初始化。
代码清单 驱动模块的初始化

代码清单 驱动模块的加载

(2)MRFI层
代码清单 MRFI_Init函数


射频功率的设置可由上述的SmartRF Studio工具导出,共有4个功率值可选 ,分别是-12dBm、-6dBm、0dBm、10dBm。频率设置为433MHz。
代码清单 射频功率设置

代码清单 逻辑信道设置

---------------------------------------祝玩得愉快!------------------------------------------
SimpliciTI无线开发 — 快速搭建低功耗、低成本无线传感器网络的更多相关文章
- STM32W108无线传感器网络节点自组织与移动智能体导航技术
使用STM32W108无线开发板及节点完毕大规模网络的自组建,网络模型选择树型,网络组建完毕之后,使用基于接收信号强度指示RSSI(ReceivedSignal Strength Indication ...
- JAVA学习:maven开发环境快速搭建
转自:http://tech.it168.com/a2011/1204/1283/000001283307.shtml 最近,开发中要用到maven,所以对maven进行了简单的学习.因为有个mave ...
- 快速搭建 Node.js 开发环境以及加速 npm
如何快速搭建 node 开发环境 npm 超慢 github 无法打开的问题 于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门. 快速搭建 Node.js 开发环境 如果你想长期 ...
- CentOS 7快速搭建Nodejs开发环境
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...
- 使用visual studio 2013 快速搭建phonegap开发环境
前一段时间开发了一款简单的Phonegap应用,遇到了很多坑,其中有一个坑就是在搭建开发环境上.由于Phonegap 2.x 与3.x 区别比较大,导致了开发环境也有所不同.2.x 是这样的http: ...
- [转] 使用NVM快速搭建NODE开发环境
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node 本文主要介绍最近自己碰到的几个坑以及搜索到的相应解决方案: 如何快速搭 ...
- Java Web 开发环境快速搭建
Java Web 开发环境快速搭建 在因某种原因更换开发设备后,可依据此文快速搭建开发环境,恢复工作环境. Java开发环境: Windows 10 (64-bit) Oralce JDK Eclip ...
- Linux下快速搭建php开发环境
php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...
- 【转】使用nvm快速搭建 Node.js 开发环境
原文链接:http://www.cnblogs.com/shuoer/p/7802891.html 快速搭建 Node.js 开发环境 如果你想长期做 node 开发, 或者想快速更新 node 版本 ...
随机推荐
- 无法读取服务器服务中的服务器队列性能数据。数据段的第一个四字节 (DWORD) 中包
无法打开服务器服务性能对象.数据段的第一个四字节 (DWORD) 包含状态代码. 解决方法:修改注册表禁用PerfNet性能计数器. 具体方法:打开注册表,在HKEY_LOCAL_MACHINE\SY ...
- GTS--阿里巴巴分布式事务全新解决方案
现代IT应用中,服务化SOA作为主流的技术架构被广泛应用到各种信息系统.原来一个系统被分拆成若干个服务的集合,产生了跨服务调用的分布式事务问题.随着Dubbo.SpringCloud等微服务框架的流行 ...
- python爬虫之下载京东页面图片
import requests from bs4 import BeautifulSoup import time import re t = 0 #用于给图片命名 for i in range(10 ...
- C# 终于写完了简单的ORM
实现单表 增 .删. 改 .查 使用接口定义表实体数据.实体对象动态创建,使用 Email 进行数据读取. 存储过程调用示例
- SpringMvc+mybatis mybatis在xml文件中大于小于号处理
方法一:转移字符 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE = AND start_date <= CURRENT_DATE ...
- poj3348凸包面积
用叉积求凸包面积 如图所示,每次找p[0]来计算,(叉积是以两个向量构成的平行四边形的面积,所以要/2) #include<map> #include<set> #includ ...
- 搞懂分布式技术6:Zookeeper典型应用场景及实践
搞懂分布式技术6:Zookeeper典型应用场景及实践 一.ZooKeeper典型应用场景实践 ZooKeeper是一个高可用的分布式数据管理与系统协调框架.基于对Paxos算法的实现,使该框架保证了 ...
- 【转】ftrace 简介
ftrace 简介 ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数 ...
- 为红米Note 5 Pro编译Lineage OS 15.1的各种坑
安装了ubuntu虚拟机,直接上网repo sync,网速特别慢,中间断了好多次,记得是3天吧,总算是下载成功了.中途还在淘宝上买过付费的VPN代理软件,有时候会打开代理来尝试,也是不太稳定.好歹第1 ...
- spring boot @ConditionalOnxxx相关注解
@Conditional(TestCondition.class) 这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置. Spring框架还 ...