微波EDA网,见证研发工程师的成长!
微波EDA网
  • 首页
  • 微波射频
  • 射频和无线通信
  • 天线设计
  • 硬件设计
  • PCB和SI
  • 通信和网络
  • 测试测量
  • 应用设计
  • 研发杂谈
  • 研发问答
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > CC3200 STA模式下读取RSSI值没变化

CC3200 STA模式下读取RSSI值没变化

时间:10-02 整理:3721RD 点击:

我在一个TASK中开启了Wlan扫描策略,每隔5s扫描一次,在以后的代码里面都没有disable scan

int wlan_scan_background()
{
  unsigned char   policyOpt;
  unsigned long IntervalVal = 5;
  int lRetVal;

  // enable scan
  policyOpt = SL_SCAN_POLICY(1);

  // set scan policy - this starts the scan
  lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , policyOpt,
                             (unsigned char *)(IntervalVal), sizeof(IntervalVal));

 return lRetVal;
}

然后在另一个Task中调用sl_WlanGetNetworkList 获取当前连接的AP的RSSI值,可是不管AP离设备多远,有没有遮挡,每次读取到的RSSI值都不变,问题出在哪?下面是获取的代码。

int get_scan_result(Sl_WlanNetworkEntry_t* netEntries )
{
    int lRetVal;

    #define SCAN_TABLE_SIZE   20

    // lRetVal indicates the valid number of entries
    // The scan results are occupied in netEntries[]
    lRetVal = sl_WlanGetNetworkList(0, SCAN_TABLE_SIZE, netEntries);
    if(lRetVal == -1)
    {
     UART_PRINT("can not get scan results...\r\n");
    }

    return lRetVal;

}

在读取RSSI信号质量的时候,需要增加一点延时,不能连续不间断的读取,在读取时候增加延时后进行读取

谢谢 Terry的回复, 我读RSSI的TASK是 每隔3s读一次,而且每次读之前都osi_Sleep了 200ms, 可是都出来的还是一样的, 感觉好像底层就没有scan。每次断开重新启动设备的时候 值才会变一次。

// enable scan

    //

    ucpolicyOpt = SL_SCAN_POLICY(1);

    //

    // set scan cycle to 10 seconds

    //

    policyVal.uiPolicyLen = 10;

    //

    // set scan policy - this starts the scan

    //

    lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , ucpolicyOpt,

                               (unsigned char*)(policyVal.ucPolicy), sizeof(policyVal));

/启动扫描热点

      ui_policy_inv = 5;

      ucpolicy_opt = SL_SCAN_POLICY(1);

      ret_val = sl_WlanPolicySet(SL_POLICY_SCAN, ucpolicy_opt, (unsigned char *)(&ui_policy_inv), sizeof(ui_policy_inv));

      if(ret_val < 0){

        DO_Printf("Wlan Enable Scan Policy Failure.\r\n");

        goto return_point;

      }

开启扫描热点后,等待一段时间,让芯片内部去扫描一些结果,然后循环去查询这个结果列表

?

1

2

3

4

5

6

7

8

9

10

11

12

13

i_val = 20;

  while(i_val--){

    vTaskDelay(1350);

    memset(wlan_net_entries, 0, sizeof(wlan_net_entries));

    ret_val = sl_WlanGetNetworkList(i_val, (unsigned char)WLAN_MAX_NET_ENTRIE_COUNT, &wlan_net_entries[0]);

    if(ret_val == 0){

      return -1;//无法扫描到热点

    }else{

      for(j_val = 0;j_val < WLAN_MAX_FILTER_ENTRIE_COUNT;j_val++){

        i8 rssi = wlan_net_entries[j_val].rssi;

      }

    }

谢谢Terry,我好像发现问题了

我的问题应该是出在这行

 // set scan policy - this starts the scan
  lRetVal = sl_WlanPolicySet(SL_POLICY_SCAN , policyOpt,
                             (unsigned char *)(IntervalVal), sizeof(IntervalVal));

IntervalVal 传入的时候应该是 传入引用的 应该这么写   (unsigned char *)(&IntervalVal),现在变成传值转换了。

不过这段代码是从1.2.0的SDK里面的antenna_selection 里面copy过来的,没多加考虑。SDK这个地方应该是错误的。

你们Check一下,SDK这个地方是不是有问题?

上一篇:CC3200 SPI DMA做主机传输大量数据给TCP时,返回值错误是什么原因造成
下一篇:咨询:CC3200&CC3220芯片airkiss的接入

STA RSSI 相关文章:

  • launchpad(mspG2553) + cc3000boost 编译器报错,提示cstack 不足
  • 有关mac_status = nvmem_get_mac_address(cMacFromEeprom)
  • CC3100 Getting Started 问题
  • CC3101在运行getting_started_with_wlan_ap时不能获取IP
  • CC3000发送HCI_CMND_SIMPLE_LINK_START之后,收到的CC3000的回馈数据不对
  • 关于BBB+WILINK8配置成station时的问题
栏目分类
  • 移动通信
  • 微波和射频技术
  • 无线和射频
  • PCB设计问答
  • 硬件电路设计
  • 嵌入式设计讨论
  • 手机设计讨论
  • 信号完整性分析
  • 测试测量
  • 微电子和IC设计
热门文章
  • CC3200 IAR dubug 问题 _
  • 关于CC3200 OTA失败
  • 基于TI CC3220 wifi芯片的H
  • CC3200 hibernate模式处理
  • CC3200 uniflash格式化(For
  • CC3200的多线程和多任务是一回
  • _SlNonOsMainLoopTask() 函数
  • cc3200 wifi audio 问题

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top