Other Parts Discussed in Thread: CC3230SF
器件型号: CC3230SF
我将在 CC3230SF 上执行 FCC 认证测试、但遇到 TX 功率问题。 该器件规格要求在 1 DSSS (802.11b) 时为 18.0dBm、在 54 OFDM (802.11g) 时为 14.5dBm、但我只在天线端口上测量到大约 7-8 dBm 的传导功率。
测试设置:
MODE:ROLE_TAG(原始射频模式)、用于 FCC 认证
通道:1 (2412MHz)
速率:1 Mbps (802.11b、DSSS)
测量:频谱分析仪通过射频电缆直接连接到天线端口
分析仪读数:~5 dBm(具有内部 10 dB 衰减)
计算出的传导功率:~7-8 dBm
目标功率:18dBm
代码实现:
int32_t 无线电工具 FCC_TxStart(SlWlanRateIndex_e 速率、uint8_t 通道)
{
int32_t = 0;
uint16_t 大小= 1500;
Uint8_t txPower = 20; //这是 ROLE_TAG 模式中唯一重要的地方
uint8_t 前导码 Seq = 0;
uint8_t dummyMac[6]={0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、0xFF};
uint32_t 长度;
uint16_t macLen = 6;
INT frameCount = 0;
字符 userInput[10];
uart_print(“\n\r== FCC 连续 TX 测试====\n\r“);
UART_print(“Ch%d rate=%d (%.1fMbps) Power=%ddBm\n\r“、通道、速率、RateToMbps (rate)、txPower);
/*=======================================
*步骤 1 : NWP 模式设置
*======================================= */
sl_Stop (0);
sl_WlanSetMode (ROLE_TAG);
RET = sl_Start (NULL、NULL、NULL);
if (ret < 0){
uart_print(“[error] sl_Start (ROLE_TAG) 失败:%ld\n\r“、ret);
返回 ret;
}
uart_print(“[1/6] NWP ROLE_TAG(原始测试模式)\n\r“);
/*=======================================
*第 2 步:准备 802.11 帧
*======================================= */
RET = sl_NetCfgGet (sl_netcfg_mac_address_get、NULL、&macLen、Template_Hdr [TA_OFFSET]);
for (int i = 0;i < size;i++){
tx_frame[i]=(uint8_t) i;
}
memcpy (&memcpy[da_offset] Template_Hdr、dummymac、6);
memcpy (&memcpy[SA_offset] Template_Hdr、dummyMac、6);
memcpy (&memcpy[TA_OFFSET] Template_Hdr、&memcp[TA_OFFSET]、Template_Hdr 6);
memcpy (Tx_frame、Template_Hdr、30);
uart_print(“[2/6] 802.11 帧就绪(30B HDR + 1500B 数据)\n\r“);
/*=======================================
*第 3 步:创建原始 RF 插座
*======================================= */
RadioTool_rawSocketdesc = sl_Socket (SL_AF_RF、SL_SOCK_RAW、channel);
if (radioTool_rawSocketdesc < 0){
uart_print(“[错误 3/6] RAW 套接字失败:%d\n\r“、radioTool_rawSocketdesc);
退还 RadioTool_rawSocketdesc;
}
uart_print(“[3/6] RAW 套接字 Ch%d fd=%d\n\r“、通道、radioTool_rawSocketdesc);
/*=======================================
*第 4 步:启用硬件连续 TX
*======================================= */
RET = sl_SetSockOpt (radioTool_rawSocketdesc、
SL_SOL_PHY_OPT、
SL_SO_PHY_NUM_FRAMES_TO_TX、
frameCount (&F)
sizeof (frameCount));
if (ret < 0){
uart_print(“[错误 4/6]连续 TX 设置失败:%ld\n\r“、ret);
sl_Close (radioTool_rawSocketdesc);
返回 ret;
}
uart_print(“[4/6]硬件无限 TX 发生器已布防\n\r“);
/*=======================================
*第 5 步:触发传输
*======================================= */
长度= sl_Send (radioTool_rawSocketdesc、
TX_FRAME
尺寸、
SL_WLAN_RAW_RF_TX_PARAMS(通道,速率,txPower、前导码 Seq);
if(length != size){
uart_print(“[错误 5/6] sl_Send failed:sent =%lu expected =%u\n\r“,长度,大小);
sl_Close (radioTool_rawSocketdesc);
APP_TX_STATUS = 0;
返回 RADIO_TOOL_ERROR_TX_FULL_SIZE_DATA;
}
uart_print(“[5/6] sl_Send Success — 硬件 TX 有效\n\r“);
/*=======================================
*第 6 步:验证并等待
*======================================= */
APP_TX_STATUS = 1;
uart_print(“***连续 TX:ch%d %.1fMbps Power=%ddBm ***\n\r“、
通道、RateToMbps (RATE)、txPower);
uart_print(“***验证:检查电流消耗+频谱分析仪***\n\r“);
uart_print(“===类型完成以结束==\n\r\n\r“);
while (1){
GetCmd (userInput、sizeof (userInput));
if (strcmp (userInput、“done")“)== 0){
uart_print(“\n\rTest completed by user.\n\r“);
RadioTool_FCC_TxStop();
vTaskDelay (PDMs_to_ticks (2000));
MAP_PRCMHibernateCycleTrigger();
休息;
}其他{
uart_print(“\n\r 输入无效。 请键入“完成“:“);
}
}
返回 0;
} 