主题中讨论的其他器件:TIMAC
工具与软件:
#define MSA_MAC_CHANNEL = MAC_CHAN_11; // in msa.h TIMAC
以下修改过的源代码是否正常?
extern uint8 MSA_MAC_channel ;
msa_MAC_channel =20;//在 msa.c 中
如果对通道进行分频、如何检查频率?
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.
尊敬的 Edan:
您是否仍在评估 TIMAC v1.5.2 SDK 解决方案? 将 MSA.c 中的 MSA_MAC_channel 更改为20 (或 MAC_CHAN_20)与 2.450GHz 频率相关。 您可以使用频谱分析仪、数据包监听工具、也可以使用能够检测数据包的 Smart RF Studio 7进行验证。 如果您为 PAN 协调器(正常-FFD)和终端设备(正常-RFD)使用相同的通道、则应该观察它们的调试和通信情况、与它们使用不同的通道进行比较。
此致、
Ryan
MAC 示例应用协调器确实更改了动态设置通道、因为为终端器件选择了静态通道来查找和加入。 通道等网络设置存储在非易失性存储器中、以便在器件复位后恢复、并且2.4GHz IEEE 解决方案没有跳频机制。 协调器没有理由在没有连接终端设备的情况下发送无线电数据包。 除非您想考虑在信标模式下使用 PAN 协调器? 有关 本设计以及有关应用功能的其他详细信息、请参阅 MAC 示例应用软件设计。
我之前参与的大多数 FCC 认证都允许只要使用相同的 IEEE PHY 无线电、就可以评估其他固件。 因此、您可以考虑以下其他选项:
此致、
Ryan
可以专注于 RF_CHANNEL 分配到的 basicRfConfig.channel。 下面是 IEEE 2.4GHz 的通道分配:
11 - 2405 MHz 12 - 2410 MHz 13 - 2415 MHz 14 - 2420 MHz 15 - 2425 MHz 16 - 2430 MHz 17 - 2435 MHz 18 - 2440 MHz 19 - 2445 MHz 20 - 2450 MHz 21 - 2455 MHz 22 - 2460 MHz 23 - 2465 MHz 24 - 2470 MHz 25 - 2475 MHz 26 - 2480 MHz
因此、通道17为2435 MHz、通道25为2475 MHz。
此致、
Ryan
basicRF 样本的 appLight() 没有 appSwitch()使信号与 TIMAC 相同。
我没有看到 smartRFstudio 发出的信号。
请参见 appLight()的源代码。
appSwitch()中没有 basicRfSendPacket()的源代码。
static void appLight() { halLcdWriteLine(HAL_LCD_LINE_1, "Light"); halLcdWriteLine(HAL_LCD_LINE_2, "Ready"); #ifdef ASSY_EXP4618_CC2420 halLcdClearLine(1); halLcdWriteSymbol(HAL_LCD_SYMBOL_RX, 1); #endif // Initialize BasicRF basicRfConfig.myAddr = LIGHT_ADDR; if(basicRfInit(&basicRfConfig)==FAILED) { HAL_ASSERT(FALSE); } basicRfReceiveOn(); // Main loop while (TRUE) { while(!basicRfPacketIsReady()); if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) { if(pRxData[0] == LIGHT_TOGGLE_CMD) { halLedToggle(1); } } } }
感谢您的回答。
我将 basicRfSendPacket 的源代码添加到 while ()。
我确认仅使用不带设备的路由器时信号才会发出。
static void appRouter() { initUART(); // Initialize BasicRF basicRfConfig.myAddr = ROUTER_ADDR; if(basicRfInit(&basicRfConfig)==FAILED) { HAL_ASSERT(FALSE); } basicRfReceiveOn(); // Main loop while (TRUE) { pTxData[0] = '0'; pTxData[1] = '2'; pTxData[2] = ':'; pTxData[3] = 0x34; pTxData[4] = 0x35; pTxData[5] = 0x36; pTxData[6] = 0x37; pTxData[7] = 0x38; pTxData[8] = 0x39; pTxData[9] = '\n'; //while(!basicRfPacketIsReady()); while(TRUE){ //basicRfReceiveOff(); basicRfSendPacket(DEVICE_ADDR, pTxData, APP_PAYLOAD_LENGTH); //basicRfReceiveOn(); if(basicRfPacketIsReady()) break; } if(basicRfReceive(pRxData, ROUTER_DATA_LENGTH, NULL)>0) { for(int i=0;i<ROUTER_DATA_LENGTH;i++) send_uart(pRxData[i]); } } }