微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541+cc2591 藍芽停止廣播

cc2541+cc2591 藍芽停止廣播

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

在使用cc2541+cc2591時,

使用一陣子後, 偶爾會突然發生手機完全掃描不到藍芽裝置,

這時如果用藍芽裝置的按鈕去控制藍芽裝置上的LED是會正常閃爍的,

所以cc2541應該還正常的在運作,

只是沒有廣播,

請問有人遇過類似的情形嗎?

或是有什麼方法可以去找出問題的原因?

请问您的板子是自己制作的吗? 建议您将广播模式设置为无限制广播试试还会出现您现在的情况

另外您现在使用的协议栈版本是怎样的?

謝謝您的回覆

目前我是使用1.4.0

我的板子是自己做的

廣播模式已經是無限制廣播

Susan Yang

另外您现在使用的协议栈版本是怎样的?

聽說有可能是被外設佔用

請問我該如何驗證是否被外設佔用

出现这种情况重新上电或者复位能否正常广播?

大秦正声

出现这种情况重新上电或者复位能否正常广播?

重新上電後就會正常廣播了

通信距离有多远?采用啥电源?工作环境如何?多试几块板子。

手机上的app退出,然后重新启动app,再看

大秦正声

通信距离有多远?采用啥电源?工作环境如何?多试几块板子。

有三塊板子都發生這種情形

手機和藍芽裝置通信距離約2米

兩台用1.5v*2的電池供電, 一台用5v USB電源供電

環境中有近十台BLE

大话西游

手机上的app退出,然后重新启动app,再看

確實有遇過類似的情形,

是在iphone4s上,

手機藍芽重啟就恢復正常了,

但是我遇到的情形是
發生問題的藍芽裝置, 我手上的每一台手機都掃不到

用debug mode來測試,

當停止廣播的時候,

我執行break指令去讀取static

發現gapProfileState = GAPROLE_WAITING,

接著在執行Go指令後,

就恢復廣播了

請問這個是哪裡出問題,

相關的代碼如下

static void peripheralStateNotificationCB( gaprole_States_t newState )
{

// ...

case GAPROLE_WAITING:
case GAPROLE_WAITING_AFTER_TIMEOUT:
{
osal_stop_timerEx( simpleBLEPeripheral_TaskID, PAIRING_BUTTON_COUNTER_EVT);
osal_memset( charValue2, 0, (sizeof( charValue2 )));
SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR2, SIMPLEPROFILE_CHAR2_LEN, charValue2 );
}
break;

//...

 }

David Hsueh

用debug mode來測試,

當停止廣播的時候,

我執行break指令去讀取static

發現gapProfileState = GAPROLE_WAITING,

接著在執行Go指令後,

就恢復廣播了

請問這個是哪裡出問題,

相關的代碼如下

static void peripheralStateNotificationCB( gaprole_States_t newState )
{

// ...

case GAPROLE_WAITING:
case GAPROLE_WAITING_AFTER_TIMEOUT:
{
osal_stop_timerEx( simpleBLEPeripheral_TaskID, PAIRING_BUTTON_COUNTER_EVT);
osal_memset( charValue2, 0, (sizeof( charValue2 )));
SimpleProfile_SetParameter( SIMPLEPROFILE_CHAR2, SIMPLEPROFILE_CHAR2_LEN, charValue2 );
}
break;

//...

 }

我剛剛忘記把watch dog timer關掉,

所以才會在break後再go可以修復問題

我剛重新實驗發現程式跑到這裡了

        else if ( pPkt->hdr.status == bleGAPConnNotAcceptable )
        {
          // Set enabler to FALSE; device will become discoverable again when
          // this value gets set to TRUE
          gapRole_AdvEnabled = FALSE;

          // Go to WAITING state, and then start advertising
          gapRole_state = GAPROLE_WAITING;
        }

請問有人知道為什麼會進來這裡嗎?

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

网站地图

Top