主题中讨论的其他器件:TIMAC
工具与软件:
我使用 TIMAC。
如果在 ZigBee 设备开启后 ZigBee 协调器开启
则 ZigBee 器件将无法找到此网络。
这是一种用于重新启动 ZigBee 器件(HAL_SYSTEM_RESET ();)的解决方案。
但这种方法并不好、因为所有设置都会被重置。
如何在没有 HAL_SYSTEM_RESET()的情况下重新启动网络扫描?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
我使用 TIMAC。
如果在 ZigBee 设备开启后 ZigBee 协调器开启
则 ZigBee 器件将无法找到此网络。
这是一种用于重新启动 ZigBee 器件(HAL_SYSTEM_RESET ();)的解决方案。
但这种方法并不好、因为所有设置都会被重置。
如何在没有 HAL_SYSTEM_RESET()的情况下重新启动网络扫描?
尊敬的 Edan:
TIMAC 本身不是 Zigbee 堆栈解决方案、但它确实支持底层 IEEE 802.15.4-2006规范。 您应该能够使用 TIMAC API MAC_MlmeScanReq 和 MAC_MlmeAssociateReq 以及相应的回调用例 MAC_MLME_SCAN_CNF 和 MAC_MLME_ASSIGNE_CNF 执行器件扫描并与现有网络关联。
此致、
Ryan
感谢您的答复。
我已经尝试过你的建议。
osal_start_timerEx(MSA_TaskId, MAC_MLME_SCAN_CNF, MSA_WAIT_PERIOD);
它可以重新扫描并加入现有网络。
但所有设置仍然被重置。(所有数字输出端口均已关闭)
我尝试了 MAC_MLME_Associated_CNF、而不是 MAC_MLME_SCAN_CNF。
它似乎与 HAL_SYSTEM_RESET()相同。
我尝试了 MSA_DeviceStartup ();而不是 回调情况 MAC_MLME_SCAN_CNF 和 MAC_MLME_Associated_CNF
它 可以在 ZigBee 器件丢失网络时重新扫描网络、而无需重置数字端口。
这怎么办?
请使用 OSAL 计时器调用您在 msa.h 中定义的新事件、并 从该事件中调用 MSA_ScanReq -> MAC_MlmeScanReq 或 MSA_AssociateReq -> MAC_MlmeAssociateReq。 不应直接 输入 MAC_MLME_Associated_CNF 或 MAC_MLME_SCAN_CNF 回调、因为它们只应由堆栈根据无线电事件调用、在这种情况下、确认关联或扫描响应。
您还可以进一步调试和单步执行代码、以确定复位原因以及导致数字输出端口行为的原因。
此致、
Ryan
osal_start_timerEx(MSA_TaskId, MSA_DeviceStartup_EVENT, MSA_WAIT_PERIOD);
是,MSA_ScanReq ()有两个参数。 但我不知道它的价值。
所以我使用了 Start_Network ()。 MSA_ScanReq ()存在于 Start_Network ()中;
if (events & MSA_DeviceStartup_EVENT){ Start_Network(); //MSA_DeviceStartup(); return events ^ MSA_DeviceStartup_EVENT; }
:
void Start_Network(void){ if (!msa_IsStarted) { /* Read IEEE Address from Info Page */ MAC_READ_CHIP_IEEE_ADDR(msa_ExtAddr); /* Decide if direct or indirect messaging is used */ msa_IsDirectMsg = MSA_DIRECT_MSG_ENABLED; if (msa_IsDirectMsg) { /* Start the device as an DIRECT messaging device */ if (msa_BeaconOrder != 15) MSA_ScanReq(MAC_SCAN_PASSIVE, MSA_MAC_BEACON_ORDER + 1); else MSA_ScanReq(MAC_SCAN_ACTIVE, 3); } else { /* Start the device as an INDIRECT messaging device and beacon disabled */ /* Beacon network doesn't work with polling */ if (!msa_IsStarted) { msa_IsDirectMsg = FALSE; MSA_ScanReq(MAC_SCAN_ACTIVE, 3); } } } }
结果很好。
"你说什么?