主题中讨论的其他器件: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]);
}
}
}