QCC3020开发问题汇总(更新中。。。)

1、第一次拿到开发板别急着编代码下程序

拿到板子,装完MDE和ADK之后第一件事就是修改配置,尤其是注意修改对应的温度传感器使能宏开关:HAVE_THERMISTOR和 INCLUDE_TEMPERATURE,其主要功能就是控制程序默认LED5对应的温度传感器开关。

打开MDE->选择工程"Projects"->"Build Settings"->"General"

QCC3020开发问题汇总(更新中。。。)_第1张图片

2、当没有操作1中过程,而直接deploy程序,导致无法连接调试设备

当然如果你没有修改这些宏开关而直接deploy进去之后,也可以通过短接flash或者擦除flash,然后将禁用温度传感器的代码编译ok的文件deploy进去。具体方法是将flash的两个数据脚短接上电,或者通过nvsapp 直接上电马上擦除。

3、下载资料里的tws镜像,上电手机找不到蓝牙设备,无法进入配对模式。

QCC3020开发板原因可能有两个:

第一个是可能供电是USB,而对于tws的earbuds耳机认为处在电池仓中,不能自动切换为出仓状态,自然无法进入配对模式。可以配置一个按键手动去切换状态:

a、修改文件:1_button.buttonxml加入PIO20作为用户自定义按键

    
        USR_BUTTON_1
        20
    
    
        APP_USR_BUTTON_1_PRESS
        RELEASE
        USR_BUTTON_1
    

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

QCC3020开发问题汇总(更新中。。。)_第2张图片

4、使能PIO3的功放控制引脚后,sink连接的手机主动打电话没有声音(PIO3为低)

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

QCC3020开发问题汇总(更新中。。。)_第3张图片

配置后发现听歌和被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 工程)

QCC3020开发问题汇总(更新中。。。)_第4张图片

 

 

你可能感兴趣的:(QCC3020,蓝牙)