由于项目需求要实现CC2531USBdongle的MT模式来实现dongle的数据转发功能,框架简图1所示。PC端实现了MT模式,也可以用Ztool。总结起来就是dongle在MT模式下接收串口数据(数据满足MT格式),然后将数据解析为具体方法,接收到node端发送的数据后将数据处理(封装成MT格式)再传给串口进而传给PC。
图1
好了,不多说了直接讲步骤。
环境:
操作系统:windowxp
Zstack版本:2.5.0
IAR版本:8.11
1.下载基于GenericApp已经移植好USB驱动的工程文件GenericApp-CC2531.zip,下载链接。
2.把解压后的文件夹拷贝..TexasInstrumentsZStack-CC2530-2.5.0ProjectszstackSamplesGenericApp文件夹下,使用IAR打开工程。
3.在MT文件夹下找到MT_UART.c,然后找到MT_UartProcessZToolData函数:
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
{
osal_msg_deallocate( (uint8 *)pMsg );
}
4.在第三部中相当于已经解决了从pc发到串口然后再由MT处理的过程,接下来就是要解决收到node的数据后如何返回给串口。打开GenericApp.c找到GenericApp_MessageMSGCB函数将其改为:
voidGenericApp_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