Other Parts Discussed in Thread: CC1352P7, SYSCONFIG
你好:
我将CC2652P7设置发送功率为20db 。zc和zed数据在距离较近(10m以内)时可以通讯上,距离较远时通讯不上,但是使用zigbee抓包可以看到数据请求,这是因为什么?抓包数据如下
您好,
您能否指定 SDK 中的哪些示例在 ZC/ZED 上运行?
请注意、为了在 SDK 示例中支持20dBm、应遵循此处类似的步骤:(2) LAUNCHXL-CC1352P: Building Zigbee Network Processor (ZNP) Example App for CC2652P7 chip - Zigbee & Thread forum - Zigbee & Thread - TI E2E support forums
不清楚什么原因,在这里的回复总是失败。
SDK使用simplelink_cc13xx_cc26xx_sdk_8_30_01_01
例程使用zc_thermostat_LP_CC1352P7_4_tirtos7_ticlang 和 zed_temperatursensor_LP_CC1352P7_4_tirtos7_ticlang
核心的函数如下:
发送程序使用函数使用static void zclGenericApp_ReportCommand(uint16 shortAddr, uint16 len, uint8 *cmd)
{
static uint8 seqNum = 0;
zclReportCmd_t *reportCmd;
//目标设备的地址信息
afAddrType_t destAddr;
destAddr.addrMode = afAddr16Bit;
destAddr.endPoint = GENERICAPP_ENDPOINT;
destAddr.addr.shortAddr = shortAddr;
reportCmd = (zclReportCmd_t *)OsalPort_malloc(sizeof(zclReportCmd_t)+sizeof(zclReport_t));//申请内存空间
if(reportCmd == NULL)//判断内存空间是否申请成功
return;
reportCmd->numAttr = 1;//属性数量为1
reportCmd->attrList[0].attrID = ATTRID_CLUSTER_UART ;
reportCmd->attrList[0].dataType = ZCL_DATATYPE_CHAR_STR;//数据类型
(reportCmd->attrList[0].attrData) = cmd;//属性值
//上报数据
zcl_SendReportCmd(GENERICAPP_ENDPOINT,//源端点号
&destAddr,//地址信息
ZCL_CLUSTER_ID_GENERAL_ALARMS,//Cluster ID
reportCmd,
ZCL_FRAME_CLIENT_SERVER_DIR,//通信方向为从客户端到服务端
TRUE,//关闭默认响应(目标设备的响应)
seqNum++ );//数据包标号,每上报一次数据seqNum的值就会增加1
OsalPort_free(reportCmd);
}
是否还需要其它信息?
谢谢
您好,
其他意见:
1,使用 stackapi_sysSetTxPowerReq()在运行时设置并确认20dBm TX 功率设置。
2,确认用于评估系统的 TI LaunchPad 或third-party module。
3,如果使用定制电路板、请确认匹配网络已针对+20dBm 进行了优化、并且设计已经由 TI 审查。
您好,
该配置生效后,对通信效果有改善,但离我们的预期还差很远。
这可以用 Zigbee 量化吗? 数据包丢失前的最大距离是多少? 它与在+20dBm LaunchPad 设置(如 LAUNCHXL-CC1352P-2)上进行评估时的距离相同吗?
下图是他们提供的测试效果802.15.4
该输出是否显示在 Smart RF Studio 8的频谱分析仪或 Zigbee SimpleLink F2 SDK 示例上?
您好,
-101dBm 是非常低的 RSSI 值、超过了 CC2652P7的 IEEE 无线电接收器灵敏度、超出了改变 RSSI 灵敏度所能达到的水平。
3.3V 是正常的、增加电压在该电平下不会产生差异。 使用信道25和26时、TX 功率级别存在一些限制、但听起来他们也考虑了其他信道。
该演示可以使用按钮操作进行调试、可以通过将相应的 DIO 短接至 GND 在模块上对其进行仿真。 或者、您可以在器件初始化后使用计时器一秒钟左右启动 Zstackapi_bdbStartCommissioningREQ。
客户能否提供自定义的 ti_radio_config.c、ti_drivers_config.c 和 SysConfig 文件以供查看?
您好,
假设您遵循了这些步骤
并且 ti_drivers_config.c 被单独保留(由 SysConfig 生成),它将包含原始 rfDriverCallbackAntennaSwitching,它将具有 Smart RF Studio 7 参考中列出的 DIO28/29/30 的正确方向。
/* * ======== Antenna switching ======== */ /* * ======== rfDriverCallbackAntennaSwitching ======== * Sets up the antenna switch depending on the current PHY configuration. * * Truth table: * * Path DIO28 DIO29 DIO30 * ========== ===== ===== ===== * Off 0 0 0 * 2.4 GHZ 1 0 0 * HIGH PA 0 1 0 * SUB1 GHZ 0 0 1 */ void __attribute__((weak)) rfDriverCallbackAntennaSwitching(RF_Handle client, RF_GlobalEvent events, void *arg) { if (events & RF_GlobalEventRadioSetup) { bool sub1GHz = false; uint8_t loDivider = 0; /* Switch off all paths. */ GPIO_write(CONFIG_RF_24GHZ, 0); GPIO_write(CONFIG_RF_HIGH_PA, 0); GPIO_write(CONFIG_RF_SUB1GHZ, 0); /* Decode the current PA configuration. */ RF_TxPowerTable_PAType paType = (RF_TxPowerTable_PAType)RF_getTxPower(client).paType; /* Decode the generic argument as a setup command. */ RF_RadioSetup* setupCommand = (RF_RadioSetup*)arg; switch (setupCommand->common.commandNo) { case (CMD_RADIO_SETUP): case (CMD_BLE5_RADIO_SETUP): loDivider = RF_LODIVIDER_MASK & setupCommand->common.loDivider; /* Sub-1GHz front-end. */ if (loDivider != 0) { sub1GHz = true; } break; case (CMD_PROP_RADIO_DIV_SETUP): loDivider = RF_LODIVIDER_MASK & setupCommand->prop_div.loDivider; /* Sub-1GHz front-end. */ if (loDivider != 0) { sub1GHz = true; } break; default:break; } if (sub1GHz) { /* Sub-1 GHz */ if (paType == RF_TxPowerTable_HighPA) { /* PA enable --> HIGH PA * LNA enable --> Sub-1 GHz */ GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not de-asserted on CC1352 Rev A. */ GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3); GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0); } else { /* RF core active --> Sub-1 GHz */ GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH, IOC_PORT_GPIO); } } else { /* 2.4 GHz */ if (paType == RF_TxPowerTable_HighPA) { /* PA enable --> HIGH PA * LNA enable --> 2.4 GHz */ GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO0); /* Note: RFC_GPO3 is a work-around because the RFC_GPO1 (PA enable signal) is sometimes not de-asserted on CC1352 Rev A. */ GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_RFC_GPO3); GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); } else { /* RF core active --> 2.4 GHz */ GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT | GPIO_CFG_OUT_HIGH, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); } } } else if (events & RF_GlobalEventRadioPowerDown) { /* Switch off all paths. */ GPIO_write(CONFIG_RF_24GHZ, 0); GPIO_write(CONFIG_RF_HIGH_PA, 0); GPIO_write(CONFIG_RF_SUB1GHZ, 0); /* Reset the IO multiplexer to GPIO functionality */ GPIO_setConfigAndMux(CONFIG_RF_24GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_HIGH_PA, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); GPIO_setConfigAndMux(CONFIG_RF_SUB1GHZ, GPIO_CFG_OUTPUT, IOC_PORT_GPIO); } }