cc2531USB dongle 实现MT模式 数据转发 串口

来源:互联网 发布:软件系统安全性需求 编辑:程序博客网 时间:2024/05/29 02:30

由于项目需求要实现CC2531USB dongle的MT模式来实现dongle的数据转发功能,框架简图1所示。PC端实现了MT模式,也可以用Ztool。总结起来就是dongle在MT模式下接收串口数据(数据满足MT格式),然后将数据解析为具体方法,接收到node端发送的数据后将数据处理(封装成MT格式)再传给串口进而传给PC。


图1

好了,不多说了直接讲步骤。

环境:

操作系统:window xp

Zstack版本:2.5.0

IAR版本:8.11

1.下载基于GenericApp已经移植好USB驱动的工程文件GenericApp-CC2531.zip,下载链接。

2.把解压后的文件夹拷贝..\TexasInstruments\ZStack-CC2530-2.5.0\Projects\zstack\Samples\GenericApp文件夹下,使用IAR打开工程。

3.在MT文件夹下找到MT_UART.c,然后找到MT_UartProcessZToolData函数:

/* Make sure it's correct */

       if ((MT_UartCalcFCS ((uint8*)&pMsg->msg[0], MT_RPC_FRAME_HDR_SZ +LEN_Token) == FSC_Token))

       {

//把osal_msg_send( App_TaskID, (byte *)pMsg );这句话注释掉添加//MT_AfCommandProcessing(pMsg->msg);别忘了添加MT_AF.h文件

//关于这个函数可以参见《如何在Zstack中使用串口.pdf》

         //osal_msg_send( App_TaskID, (byte *)pMsg );

          MT_AfCommandProcessing(pMsg->msg);

       }

       else

       {

         /* deallocate the msg */

         osal_msg_deallocate ( (uint8 *)pMsg );

       }

4.在第三部中相当于已经解决了从pc发到串口然后再由MT处理的过程,接下来就是要解决收到node的数据后如何返回给串口。打开GenericApp.c找到GenericApp_MessageMSGCB函数将其改为:

void GenericApp_MessageMSGCB(afIncomingMSGPacket_t *pkt )

{

 MT_AfIncomingMsg(pkt);

}

别忘了添加#include"MT_AF.h"哈。

最好把GenericApp.c中的其他东西删除了,一方面看着简单,另一方面GenericApp.c里面还有一个定时发送功能。

5.然后就是编译下载了。

注意:

一定别忘了编译时的选项添加一个MT_UTIL_FUNC,在project->options->c/c++compiler->preprocess