CC1101 在TI 的 SimpliciTI 协议栈 移植学习.doc_第1页
CC1101 在TI 的 SimpliciTI 协议栈 移植学习.doc_第2页
CC1101 在TI 的 SimpliciTI 协议栈 移植学习.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

全是自己凭自己的理解写的,可能有理解或者错误错误的地方,欢迎大家指正。先废话两句,好久没有写关于无线方面的程序了,今天兴致比较高,就把前一段时间一个项目上用到的SimpliciTI协议之的心得写一下,和大家一块分享,可以帮助新手更加快速入门,废话不多说了。移植这个协议栈之前,最好有过CC1101或者CC2500等射频收发芯片的使用经验,要不然你会很头大,SimpliciTI协议栈主要针对TI的射频收发芯片,不是TI的需要修改的比较多一点,如果你是高手,可以不去用他提供的底层的,只用网络层,那样就和芯片没有关系了。1、SimpliciTI协议栈包括了四个层,BSP,MRFI,NWK,NWK_APPLICATION,其中BSP是最基础的板级硬件,包括一些MCU相关的函数以及LED、按键之类的基础器件驱动,;MRFI是属于射频接口层,提供射频芯片的选择,射频芯片的配置参数,射频芯片的驱动以及通信接口,;NWK和NWK_APPLICATION是网络层和网络应用层,真正属于SimpliciTI协议栈的内容,包括网络的建立,网络地址的分配,网络数据帧结构、数据消息队列,数据消息处理,网络通信安全加密等一系列复杂机制。2、用户一般只需要修改BSP和MRFI层即可实现SimpliciTI协议的移植和使用,BSP层要注意时钟初始化的选择,LED数目和接口,按键的数目和接口等,一般我们修改的比较多,主要是要和自己的板子相适应,MRFI层比如涵盖芯片初始化函数,发送函数,接收函数等,所以我说这里一般要有经验一点,不然很难理解的需要注意射频IC的选择,我选的是CC1101,以及射频芯片的配置,采用433MHz,配置文件需要进行修改。选择CC1101这个宏定义比较隐蔽,需要修改IAR,我这里截图一张。3、在SimpliciTI中一般有四种类型,AP,也就是Access Pointer,ED,也就是End Device,RE,也就是Range Extemder。其中AP就是我们常说的路由,网关,集线器,数据中心这类的意思,在无线传感网一般我们要确保AP电力,一般不采用干电池,不考虑AP功耗。ED就是节点,一般是带各种传感器的节点,考虑低功耗,一般用电池供电。RE是为了距离扩展才引入的,为了更远距离中转,另外一种更不常用。如果直接使用TI的工程,我们这里要对节点类型选择,选择节点类型如下图所示。4、一般采用AP和ED组网时,多个ED节点和AP正确建立通信连接后,AP都会给ED分配一个相应的地址。当某个ED出现意外,比如电源问题,和AP断开连接,AP并不将该ED节点的地址消除。当该ED恢复正常,重新申请加入网络时,AP会检测该ED仍然分配原来的地址继续使用,如果是新的ED申请加入网络时,会分配一个新的网络地址。SimpliciTI协议也并非支持无线多个节点,肯定不会超过256个,因为AP为ED分配标号的Tid变量是8位的,好像官方数据说挂载30多节点吧,我就测试过挂载8个,个数限制中可以修改smpl_config.dat中的NUM_CONNECTIONS值。5、关于节点地址,每个ED节点的4字节地址都不应相同,地址作为节点区分的标志,如果不使用软件自动分配给该节点地址,那么则应该修改相应的smpl_config.dat中的THIS_DEVICE_ADDRESS值,特别是网络中含多个ED节点,默认的使用都是同一个地址,不修改的话出第一个外是加入不了网络的。我们也可以使用读取Flash地址作为本机节点的地址,或者使用随机函数参数,则无需修改,如果使用随机地址作为节点地址,在SimpliciTI协议栈中必须要开启I_WANT_TO_CHANGE_DEFAULT_ROM_DEVICE_ADDRESS_PSEUDO_CODE宏6、SimpliciTI协议组成的网络实现过程一般是,AP先启动,初始化协议栈后,处于接收状态,等待ED加入网络和接收数据;ED启动后,向AP发送建立网络请求,然后一直处于这个请求建立网络状态,直到建立正常的网络连接为止。7、AP在协议初始化时会引入一个函数指针到协议初始化函数中SMPL_Init(sCB);这里的sCB就是这个函数指针,是指向SimpliciTI的中断回调函数的函数指针,sCB中断回调函数在无线收发的接收中断服务函数中会被调用一次。sCB中断回调函数是个非常重要的函数,收到数据分为节点加入网络请求数据和节点发送普通数据,通过lid识别区分,如果是加入网络请求,sJoinSem+;也就是SimpliciTI网络加入帧加一次,AP在主函数检测sJoinSem是否为0,不为0说明有节点请求加入网络,如果没有达到最大节点限制数目,AP就一直处于和该ED建立网络连接,直到建立正常网络连接为止。那么如果是普通数据,sPeerFrameSem+;也就是SimpliciTI网络节点数据帧加一次,AP在主函数检测sPeerFrameSem是否为0,不为0说明有节点发送数据包,就接收处理一下数据包,这个我们以前不用协议栈也是大致这样处理。8、ED在协议初始化时不会引入一个函数指针到协议初始化函数中SMPL_Init(0);也就是没有中断回调函数,然后一直向AP发送网络请求帧,直到成功。这时连接指示标号Lid变量就为1,这个1就是指AP,ED以后通信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论