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