[原创] ez430-RF2500学习

sblpp   2010-11-2 08:13 楼主

上周就收到汤汤姐寄来的EZ430-RF2500的板子了,包装很细腻,打开后,一个MSP430的仿真器,两个同样的小板,一个带电池的小板(很细致,方便开发)。

 

焊上插针后 发现引出的IO口中并未引出UART,比较郁闷,因为习惯了用串口进行交互,本想通过串口,发送端接收串口命令将数据打包发出,接收端受到后,再从串口发出来至PC,看来这样是不行的啦!还有就是发现光盘中的资料中,并未有整板的原理图,也不知道单片机与RF2500如何连接的。

 

先上传些资料吧,具体的调试下面再来。

  • 板子

回复评论 (39)

原来UART通过USB仿真器引到PC上啦

刚看了tagetage大哥的 “RF2500的这个DEMO做的真的不错”
于是马上插入我的EZ430-RF2500
打开设备管理器 发现多了个MSP430 Application UART (com3)

打开那个DEMO EZ430-RF2500 Sensor Monitor 发现温度也有改变啦
有UART就方便调试多啦!
不禁感慨 TI做的 太他妈的周到啦。。

[ 本帖最后由 sblpp 于 2010-11-6 08:46 编辑 ]
  • 22.jpg
  • 23.jpg
  • 24.jpg
点赞  2010-11-2 08:14

使用IAR时注意

一直都在用keil

用IAR时还是很不习惯的

再下载END端程序的时候 注意将END DEVICE DEMO设置为active

不然即使选中了end的,下载的也还是之前上面的那个。

见图。

 

[ 本帖最后由 sblpp 于 2010-11-6 09:04 编辑 ]
  • 25.jpg
点赞  2010-11-2 08:15

源码分析

将程序缕了下,大体分析如下:

 

1 看Access端:

 

   main进去后初始化,通过SMPL_Ioctl(IOCTL_OBJ_ADDR, IOCTL_ACT_SET, &lAddr) 函数 设置本机地址,然后通过函数SMPL_Init(sCB)初始化;sCB为一回调函数,通过判断lid分辨sPeerFrameSem还是sJoinSem,主循环中分别判断sPeerFrameSem与sJoinSem,如果是sJoinSem,则通过SMPL_LinkListen(&sLID[sNumCurrentPeers]) 进行监听,如果是sPeerFrameSem,则为收到一帧数据,于是通过调用SMPL_Receive(sLID, msg, &len) 进行接收。收完后通过SMPL_Ioctl(IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SIGINFO, (void *)&sigInfo)进行设置。然后通过串口上传至PC机。

 

大体上就是这么个过程吧。

 

2 看END 端:
   main进去后初始化单片机后,通过  SMPL_Ioctl(IOCTL_OBJ_ADDR, IOCTL_ACT_SET, &lAddr)设置,这个与上同。初始化后跟着while (SMPL_NO_JOIN == SMPL_Init((uint8_t (*)(linkID_t))0))一直等待连接。连接上后,通过“
    SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "" );
    __bis_SR_register(LPM3_bits+GIE);       // LPM3 with interrupts enabled
    SMPL_Ioctl( IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "" );
    ”
进行设置(不同在先设置IOCTL_ACT_RADIO_SLEEP,然后使能中断,然后IOCTL_ACT_RADIO_AWAKE),跟Access不同的是,Access端设置的是IOCTL_ACT_RADIO_SIGINFO。具体的还不清楚这几个分别是什么的。如果有数据需要发送,则通过调用SMPL_Send(linkID1, msg, sizeof(msg))这个函数 将数据发送出去。


程序相对来说并不复杂,与RF相关的都是以SMPL开头的几个函数,查了下含在#include "nwk_api.h" 中,以库的形式出现的,并未有函数原型。又从网上找了下相关的解释:

/*
Initialization
– smplStatus_t SMPL_Init(uint8_t (*callback)(linkID_t));
? Linking
– smplStatus_t SMPL_Link(linkID_t *linkID);
– smplStatus_t SMPL_LinkListen(linkID_t *linkID);
? Peer-to-peer messaging
– smplStatus_t SMPL_Send(lid, *msg, len);
– smplStatus_t SMPL_Receive(lid, *msg, *len);
? Configuration
– smplStatus_t SMPL_Ioctl(object, action, *val);
? API calls are synchronous
– Do not return until operation is complete
*/

程序稍整理了下,传上来了,摘出了本身AD采集的,与RF相关的 就很明了了,就那些。

[ 本帖最后由 sblpp 于 2010-11-26 08:22 编辑 ]
点赞  2010-11-2 08:15

上传测试结果。。。。

 

具体的就看截图名称吧。。。

 

 

 

传上来的 Strength 代表信号强度吧??

 

总的来说,短距离的通信 还是没有问题的

 

距离超出4米后,就会有比较严重的 丢包吧

 

不怎么连续了就

 

 

 

对了 再测试的时候 是把其中Access端的AD屏蔽掉后再测的、这样 传上来的数据 就完完全全是

 

接收到的数据了 比较纯净

 

[ 本帖最后由 sblpp 于 2010-11-26 08:20 编辑 ]
  • 1正常通信.jpg
  • 2拨打电话干扰.jpg
  • 3开无线鼠标.jpg
  • 4电话加鼠标.jpg
  • 5距离四米左右时,已经可以看出通讯质量比较差,偶尔的也能收到一两包.jpg
  • 6三米左右时恢复正常.jpg
  • 7斜上方,有障碍物阻隔时,大约一米半多,通讯较差,偶尔的能收到,大部分时间收不到.jpg
  • 8找了个装茶叶的小铁盒把它罩起来.jpg
点赞  2010-11-2 08:15
不占了!
点赞  2010-11-2 08:16

这孩子

占了怎么多楼。
点赞  2010-11-2 14:29
关注我的人 不多啊。。。
点赞  2010-11-6 09:05
关注呀,一直在关注呀,哈哈,希望楼主写点好文章出来
点赞  2010-11-16 17:47
这个我从现在开始一直要关注LZ了!~
QQ:1625345502
点赞  2010-11-25 19:29
板子已经转出去啦。。。
期待新的分享啊!!!
点赞  2010-11-28 22:11
哎  继续 关注我自己啊。。。
点赞  2010-12-3 21:04
没事的时候 我就来顶顶自己的帖子把。、。。、
点赞  2010-12-3 21:04
兄弟 我来帮你顶!~自己顶多累呀!~
QQ:1625345502
点赞  2010-12-3 21:42
呵呵 你玩的怎样了啊?
心得呀!
点赞  2010-12-5 11:31

我顶!!!!

我再顶!!!

点赞  2010-12-10 12:18

回复 16楼 sblpp 的帖子

呵呵,我帮你顶,谢谢你分享了那么多资料。
点赞  2011-1-17 17:31
强烈关注中,楼主加油
点赞  2011-1-17 18:04
楼主能不能把调试中遇到的问题也跟大家分享下呢
点赞  2011-1-17 18:29
楼主好样的,

鼎起~~~
点赞  2011-1-17 19:25
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复