|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
小弟用的是FreeScale的mc13213解决方案,研究的例程是基于BeeStack的Wireless uart Demo。在这个例程中,我想在Router加入网络后(没有绑定设备之前)手动向Coordinator发送数据(比如0x1234),并在Coordinator接收到数据后将此数据发送回PC。我对Router一端的ASL_Userinterface.c文件的void ASL_UpdateDevice函数里面的
case gZDOToAppMgmtZCRunning_c:
case gZDOToAppMgmtZRRunning_c:
case gZDOToAppMgmtZEDRunning_c:
做了如下修改:
case gZDOToAppMgmtZCRunning_c:
case gZDOToAppMgmtZRRunning_c:
case gZDOToAppMgmtZEDRunning_c:
appState = mStateZDO_device_running_c;
ASL_ConfigSetLed(LED1,gLedStopFlashing_c);
ASL_ConfigSetLed(LED1,gLedOn_c);
#if ((gCoordinatorCapability_d == 1) || (gRouterCapability_d == 1))
ASL_ConfigSetLed(LED2,gLedOn_c);
#endif
LCD_WriteString(1,(uint8_t *)gsASL_Running);
ASL_DisplayLine2OnLCD();
PhyAssert(mPhyTxRxState==cBusy_Tx);
MC1319xDrv_WriteSpiSync(TX_DATA, 0x1234);
break;
即添加了语句PhyAssert(mPhyTxRxState==cBusy_Tx);和MC1319xDrv_WriteSpiSync(TX_DATA, 0x1234);
相应的我在Coordinator一端的程序中,在Mc1319xHandler.c文件中的INTERRUPT_KEYWORD void MC1319xInterrupt(void)函数里的if (retReg & cRX_DONE)条件中做了如下修改:
if (retReg & cRX_DONE)
{
#if USE_INTERRUPT_RXEOF
PhyPlmeSyncLossIndication();
goto IsrExit;
#else
DummyIsr();
#endif
MC1319xDrv_ReadSpiSync(RX_DATA, datar);
datapc = (*datar)&0x00ff;
SCI2D= datapc;
}
其中datar定义是uint16_t *datar;datapc定义是unsigned char datapc;
这样编译烧写运行发现,Router加入网络后Coordinator确实能向pc传回字符,但是传回的却是黑色上三角,然后Coordinator就停止响应(进入“死机”状态,只能复位),并且不管我在Router端发送什么数据,传回的都是黑色上三角符号,请问这是为什么?要是修改的话应当怎样改?请说的详细一点,谢谢!我是个ZigBee的初学者。 |
|