上周就收到汤汤姐寄来的EZ430-RF2500的板子了,包装很细腻,打开后,一个MSP430的仿真器,两个同样的小板,一个带电池的小板(很细致,方便开发)。
焊上插针后 发现引出的IO口中并未引出UART,比较郁闷,因为习惯了用串口进行交互,本想通过串口,发送端接收串口命令将数据打包发出,接收端受到后,再从串口发出来至PC,看来这样是不行的啦!还有就是发现光盘中的资料中,并未有整板的原理图,也不知道单片机与RF2500如何连接的。
先上传些资料吧,具体的调试下面再来。
刚看了tagetage大哥的 “RF2500的这个DEMO做的真的不错”
于是马上插入我的EZ430-RF2500
打开设备管理器 发现多了个MSP430 Application UART (com3)
打开那个DEMO EZ430-RF2500 Sensor Monitor 发现温度也有改变啦
有UART就方便调试多啦!
不禁感慨 TI做的 太他妈的周到啦。。
一直都在用keil
用IAR时还是很不习惯的
再下载END端程序的时候 注意将END DEVICE DEMO设置为active
不然即使选中了end的,下载的也还是之前上面的那个。
见图。
[ 本帖最后由 sblpp 于 2010-11-6 09:04 编辑 ]
将程序缕了下,大体分析如下:
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 编辑 ]上传测试结果。。。。
具体的就看截图名称吧。。。
传上来的 Strength 代表信号强度吧??
总的来说,短距离的通信 还是没有问题的
距离超出4米后,就会有比较严重的 丢包吧
不怎么连续了就
对了 再测试的时候 是把其中Access端的AD屏蔽掉后再测的、这样 传上来的数据 就完完全全是
接收到的数据了 比较纯净
[ 本帖最后由 sblpp 于 2010-11-26 08:20 编辑 ]