1.CC3200发射功率是否可以降低。
2.CC3200发射功率是否可以设置到一个固定的值。
3.cc3200现在代码中默认的功率是多少dbm?
4.cc3200只需要802.11b协议,在代码中怎么限制?
Terry Han:
CC3200的发射功率
– TX Power•18.0 dBm @ 1 DSSS• 14.5 dBm @ 54 OFDM
CC3200的发射功率可以降低,具体可以调节TX Power Level的等级来进行控制
/******************************************************************************////! Configure the device to Default state according to the given use case//!//! \param None//!//!\return Negtive int value on failure other value on succusses//******************************************************************************/static long ConfigureSimpleLinkToDefaultState(){ SlVersionFull ver = {0}; _WlanRxFilterOperationCommandBuff_t RxFilterIdMask = {0};
unsigned char ucVal = 1; unsigned char ucConfigOpt = 0; unsigned char ucConfigLen = 0; unsigned char ucPower = 0;
long lRetVal = -1; long lMode = -1;
SlNetCfgIpV4Args_t ipV4;
lMode = sl_Start(0, 0, 0); ASSERT_ON_ERROR(lMode);
/* configure device to station mode */ SwitchToStaMode(lMode);
/* Get the device's version-information */ ucConfigOpt = SL_DEVICE_GENERAL_VERSION; ucConfigLen = sizeof(ver); lRetVal = sl_DevGet(SL_DEVICE_GENERAL_CONFIGURATION, &ucConfigOpt, &ucConfigLen, (unsigned char *)(&ver)); ASSERT_ON_ERROR(lRetVal);
UART_PRINT("Host Driver Version: %s\n\r",SL_DRIVER_VERSION); UART_PRINT("Build Version %d.%d.%d.%d.31.%d.%d.%d.%d.%d.%d.%d.%d\n\r", ver.NwpVersion[0],ver.NwpVersion[1],ver.NwpVersion[2],ver.NwpVersion[3], ver.ChipFwAndPhyVersion.FwVersion[0],ver.ChipFwAndPhyVersion.FwVersion[1], ver.ChipFwAndPhyVersion.FwVersion[2],ver.ChipFwAndPhyVersion.FwVersion[3], ver.ChipFwAndPhyVersion.PhyVersion[0],ver.ChipFwAndPhyVersion.PhyVersion[1], ver.ChipFwAndPhyVersion.PhyVersion[2],ver.ChipFwAndPhyVersion.PhyVersion[3]); /* * Set connection policy to Auto + SmartConfig * (Device's default connection policy) */ lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(1, 0, 0, 0, 1), NULL, 0); ASSERT_ON_ERROR(lRetVal);
/* Remove all profiles */ lRetVal = sl_WlanProfileDel(0xFF); ASSERT_ON_ERROR(lRetVal); /* // Device in station-mode. Disconnect previous connection if any // The function returns 0 if 'Disconnected done', negative number if already // disconnected Wait for 'disconnection' event if 0 is returned, Ignore // other return-codes */ lRetVal = sl_WlanDisconnect(); if(0 == lRetVal) { /* Wait for connection */ while(IS_CONNECTED(g_ulStatus)) {
_SlNonOsMainLoopTask(); } } /* static IP or DHCP configuration */ if (g_IpV4Option == STATIC_IP) { ipV4.ipV4 = g_myIpAddr; ipV4.ipV4Mask = (_u32)SL_IPV4_VAL(255,255,255,0); ipV4.ipV4Gateway = g_GwIPAddr; ipV4.ipV4DnsServer = g_GwIPAddr; sl_NetCfgSet(SL_IPV4_STA_P2P_CL_STATIC_ENABLE,IPCONFIG_MODE_ENABLE_IPV4,sizeof(SlNetCfgIpV4Args_t),(_u8 *)&ipV4); UART_PRINT("Configured to Static IP Address \n\r"); } if (g_IpV4Option == DHCP) { /* Enable DHCP client */ UART_PRINT("IP Address will be obtained through DHCP \n\r"); lRetVal = sl_NetCfgSet(SL_IPV4_STA_P2P_CL_DHCP_ENABLE,1,1,&ucVal); ASSERT_ON_ERROR(lRetVal); }
/* Disable scan */ ucConfigOpt = SL_SCAN_POLICY(0); lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , ucConfigOpt, NULL, 0); ASSERT_ON_ERROR(lRetVal); /* // Set Tx power level for station mode // Number between 0-15, as dB offset from max power – 0 will set max power */ ucPower = 0; lRetVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (unsigned char *)&ucPower); ASSERT_ON_ERROR(lRetVal);
if (g_ActiveUseCase == TRANSCEIVER_MODE) { lRetVal = sl_WlanPolicySet(SL_POLICY_PM ,SL_LOW_POWER_POLICY , NULL, 0); ASSERT_ON_ERROR(lRetVal); } else { /* Set PM policy to normal */ lRetVal = sl_WlanPolicySet(SL_POLICY_PM , SL_NORMAL_POLICY, NULL, 0); ASSERT_ON_ERROR(lRetVal); } /* set the sleep interval */ if (g_ActiveUseCase == ALWAYS_CONNECTED && LSI_SLEEP_DURATION_IN_MSEC > 100) { _u16 PolicyBuff[4] = {0,0,LSI_SLEEP_DURATION_IN_MSEC,0}; /* PolicyBuff[2] is max sleep time in mSec */ sl_WlanPolicySet(SL_POLICY_PM , SL_LONG_SLEEP_INTERVAL_POLICY, (_u8*)PolicyBuff,sizeof(PolicyBuff)); }
/* Unregister mDNS services */ lRetVal = sl_NetAppMDNSUnRegisterService(0, 0); ASSERT_ON_ERROR(lRetVal); /* disable mdns */ sl_NetAppStop(SL_NET_APP_MDNS_ID); /* Remove all 64 filters (8*8) */ memset(RxFilterIdMask.FilterIdMask, 0xFF, 8); lRetVal = sl_WlanRxFilterSet(SL_REMOVE_RX_FILTER, (_u8 *)&RxFilterIdMask, sizeof(_WlanRxFilterOperationCommandBuff_t)); ASSERT_ON_ERROR(lRetVal);
if (g_ActiveUseCase == INTERMITTENTLY_CONNECTED) { /* Set connection policy to Auto + fast connect in */ lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(1, 1, 0, 0, 0), NULL, 0); ASSERT_ON_ERROR(lRetVal); } if (g_ActiveUseCase == SLEEP_MEASURE || g_ActiveUseCase == TRANSCEIVER_MODE) { /* Set connection policy to None */ lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION, SL_CONNECTION_POLICY(0, 0, 0, 0, 0), NULL, 0); ASSERT_ON_ERROR(lRetVal); } if (g_SocketType == SEC_TCP_SOCKET) { ASSERT_ON_ERROR(SetTime()); };
lRetVal = sl_Stop(10); ASSERT_ON_ERROR(lRetVal);
g_ulStatus = 0;
return lRetVal; // Success}
/* // Set Tx power level for station mode // Number between 0-15, as dB offset from max power – 0 will set max power */ ucPower = 0; lRetVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (unsigned char *)&ucPower); ASSERT_ON_ERROR(lRetVal);
pearlon:
回复 Terry Han:
是直接更改ucPower的值吗?我们尝试修改了下,好像没有作用。
还有在STA模式下,将发送模式固定在54OFDM?
感谢!
Alvin Chen:
回复 pearlon:
// Set Tx power level for station mode// Number between 0-15, as dB offset from max power – 0 will set max powerucPower = 0;lRetVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (unsigned char *)&ucPower);ASSERT_ON_ERROR(lRetVal);
pearlon:
回复 Alvin Chen:
谢谢Alvin Chen!
在STA模式下,在软件中怎样将模式固定在11g,而不是自由切换。
感谢!
Terry Han:
回复 pearlon:
连接的模式取决于AP的网络模式,可以将AP的网络模式固定为11g,这个时候CC3200连接上后的收发数据都是在11g下完成的。
hongxin zhu1:
回复 Terry Han:
你好,我们在降低CC3200发射功率,使用了如下两种方式:
1.
// Set Tx power level for station mode// Number between 0-15, as dB offset from max power – 0 will set max power*/ucPower = 15;lRetVal = sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID,WLAN_GENERAL_PARAM_OPT_STA_TX_POWER, 1, (unsigned char *)&ucPower);ASSERT_ON_ERROR(lRetVal);
2.
sl_SendTo(sockedid, buf, sizeof(buf), SL_RAW_RF_TX_PARAMS(1 /*eChannel*/, 13 /*eRate*/, 15/*powerLevel_Tone*/, 0 /*ePreamble*/), (SlsockAddr_t*)&sAddr, iAddrSize);
sl_SendTo函数中, 降低发射功率的参数是powerLevel_Tone, 15为发射功率最小。
问题:CC3200在连接AP以后,正常工作过程中,发射功率已经降低,为10dbm以下, 但是在连接AP的过程中,瞬间发射功率会达到15dbm, 怎样才能把cc3200连接AP的过程中的瞬间发射功率降低到10dbm以下?