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 工程)