QCC3020開發問題彙總(更新中。。。)

1、第一次拿到開發板別急着編代碼下程序

拿到板子,裝完MDE和ADK之後第一件事就是修改配置,尤其是注意修改對應的溫度傳感器使能宏開關:HAVE_THERMISTOR和 INCLUDE_TEMPERATURE,其主要功能就是控制程序默認LED5對應的溫度傳感器開關。

打開MDE->選擇工程"Projects"->"Build Settings"->"General"

2、當沒有操作1中過程,而直接deploy程序,導致無法連接調試設備

當然如果你沒有修改這些宏開關而直接deploy進去之後,也可以通過短接flash或者擦除flash,然後將禁用溫度傳感器的代碼編譯ok的文件deploy進去。具體方法是將flash的兩個數據腳短接上電,或者通過nvsapp 直接上電馬上擦除。

3、下載資料裏的tws鏡像,上電手機找不到藍牙設備,無法進入配對模式。

QCC3020開發板原因可能有兩個:

第一個是可能供電是USB,而對於tws的earbuds耳機認爲處在電池倉中,不能自動切換爲出倉狀態,自然無法進入配對模式。可以配置一個按鍵手動去切換狀態:

a、修改文件:1_button.buttonxml加入PIO20作爲用戶自定義按鍵

    <pio>
        <pinFriendlyName>USR_BUTTON_1</pinFriendlyName>
        <pad>20</pad>
    </pio>
    <message>
        <messageName>APP_USR_BUTTON_1_PRESS</messageName>
        <buttonEvent>RELEASE</buttonEvent>
        <activePinFriendlyName>USR_BUTTON_1</activePinFriendlyName>
    </message>

b、修改文件:av_heardset_ui.c

case APP_USR_BUTTON_1_PRESS:
{
    DEBUG_LOG("APP_USR_BUTTON_1_PRESS");
    if (appSmIsInCase()){
        appTestPhyStateOutOfCaseEvent();
    }else if (appSmIsOutOfCase()){
        appTestPhyStateIsInEar();
    }
}
break;

第二個原因是隻有一個qcc3020開發板,有網友專家提供的參考是程序燒錄到開發板裏,tws耳機將自動組隊,組隊成功後手機就可以搜索到開發板,但是前提是必須兩個開發板纔可以,否則一個無法組隊更無法進入配對模式,問題就來了,那爲啥我們買的tws耳機可以單個使用,代理給出的解釋是那種狀態也是他前期做過組隊工作,纔可以單獨使用。

3、SYS_CTRL作爲主控制按鍵IO默認只可配置爲PIO0

4、使能PIO3的功放控制引腳後,sink連接的手機主動打電話沒有聲音(PIO3爲低)

按照配置sink需要在adk configure tools中配置pio3的功放引腳:

配置後發現聽歌和被call電話聲音都沒有問題,但是用連接sink耳機的手機主動打電話出去,sink耳機卻沒有聲音,通過判斷知道是PIO_AUDIO_ACTIVE即PIO3被拉低導致,可以通過添加判斷來解決:

case EventSysCheckAudioAmpDrive:
    /* cancel any pending messages */
    MessageCancelAll( &theSink.task , EventSysCheckAudioAmpDrive);
    /* when the device is no longer routing audio to the speaker then turn off the audio amplifier */
    if((!sinkAudioIsAudioRouted()) && (!sinkAudioIsVoiceRouted())&& (!isSinkInCallMode()))
    {
        MAIN_DEBUG (( "HS : EventSysCheckAudioAmpDrive turn off amp\n" ));
        PioDrivePio(PIO_AUDIO_ACTIVE, FALSE);
    }
    else
        lIndicateEvent = FALSE;
break;

其中isSinkInCallMode(void)爲sink_statemanager.c自定義函數:

bool isSinkInCallMode (void)
{
    if ((gTheSinkState == deviceOutgoingCallEstablish ) || 
        (gTheSinkState == deviceIncomingCallEstablish ) || 
        (gTheSinkState == deviceActiveCallSCO ) || 
        (gTheSinkState == deviceActiveCallNoSCO )||
        (gTheSinkState == deviceThreeWayCallWaiting)||
        (gTheSinkState == deviceThreeWayCallOnHold)||
        (gTheSinkState == deviceIncomingCallOnHold)||
        (gTheSinkState == deviceActiveCallSCO))
    {
        return TRUE;
    }else {
        return FALSE;
    }
}

記得在sink_statemanager.h文件中聲明哈;

5、更改藍牙地址和設備的連接名稱(sink 工程)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章