对于QCC302X/303X/512X新版本的芯片充电设置和旧版本的CSR86XX和QCC300X其实没有很大的改变,就是设置的窗口有的不一样,这些芯片都是带有内有和外部充电控制的功能,只是QCC302X/303X/512X的ADK默认代码是在EVB的基础上开发,自动默认为外部充电,所以很多新的开发工程没有太注意这些设置,一直充电有问题。下面就来看看内部充电设置如何设置,如果使用外部充电,直接用默认配置就行!
- USB的D+/D_的电压偏差使用默认值,内部最大电流只能是200mA,一般根据客户自己的产品电池容量设置。例如使用100mA容量的电池,一般设置最大电流不超过100mA,常用90mA即可。D+/D_的电压偏置大小往往是识别使用不同的充电器,而经行不同充电设置:
- USB作为充电口的入口点,而这个USB接口就有很多种类型,比如PC,Hub,DC可调电源,Type-C不同版本等,这些都是需要设置;如果不设置,就有可能UCB接插到一些USB充电设备是,就没有电流,无法充电识别:全部充电设备勾选,设置内部充电最大200mA;
- 充电内部和外部配置,不勾选是使用内部充电;
- 设置电池充电电压为4.25V,截止充电电流为10%,相当恒压充值后,电流慢慢的下降,直至下降到设定值后就跳转停止充电;如果这个值设置太大40%,电流就在比较大40%的时候就跳转截止充电,电池电压一般没有到达4.16V就已经跳转截止,电池就充不满;
5. 电池电压阈值设定对应的提示音,一般按照客户自己的要求设定即可:
/*******************************************************************************
Copyright (c) 2016 Qualcomm Technologies International, Ltd.
FILE NAME
sink_ba_broadcaster.c
DESCRIPTION
This is an internal submodule for broadcast audio. This module implements
Broadcaster functionalities of broadcast audio. It provides interface to other
sub modules to access(set/get) broadcaster behaviours.
Major functionalities handled in this module are
1.Broadcaster Association
2.Security key/random number generation for association
3.Handle Broadcaster configuration
4.Handles all messages form broadcaster
5.Broadcaster connection
NOTES
This module interfaces need to be exposed to sink_ba or sink_ba_pluging modules
only. It is restricted to access these interfaces from any other modules
*/
#include "sink_ba_broadcaster.h"
#include "sink_debug.h"
#ifdef ENABLE_BROADCAST_AUDIO
#include "sink_ba_broadcaster_encryption.h"
#include "sink_ba_broadcaster_scm.h"
#include "sink_ba_broadcaster_packetiser.h"
#include "sink_ba.h"
#include "sink_main_task.h"
#include "sink_gatt_server_ba.h"
#include "sink_ble.h"
#include "sink_configmanager.h"
#include "sink_broadcast_audio_config_def.h"
#include <broadcast_context.h>
#include <broadcast_cmd.h>
#include <broadcast.h>
#include <afh_channel_map.h>
#include <a2dp.h>
#include <vm.h>
#include <vmtypes.h>
#include <panic.h>
#include <stdlib.h>
/* Debugging defines */
#ifdef DEBUG_BA_BROADCASTER
#define DEBUG_BROADCASTER(x) DEBUG(x)
#else
#define DEBUG_BROADCASTER(x)
#endif
#ifdef AFH_LOGGING
#define AFH_LOGGING_DEBUG(x) DEBUG(x)
#else
#define AFH_LOGGING_DEBUG(x)
#endif
/*! Offset to apply to the instant for an AFH update to be applied on broadcaster
* and receiver, in BT slots when using sync train method; 1 second. */
#define AFH_UPDATE_INSTANT_OFFSET (3200)
/*---------------------CSB Defines--------------------------*/
/* Time in slots before we'll receive a supervision timeout
* for failure to transmit a CSB packet. */
#define CSB_SUPERVISION_TIMEOUT 0x2000
/* Permitted packets to use for CSB. */
#define CSB_PACKET_TYPE 8
/*---------------------SYNC TRAIN related Defines ----------*/
/* Default sync train timeout of 30s (in BT slots) */
#define SYNC_TRAIN_TIMEOUT (0xBB80)
/* Don't timeout the sync train, broadcast library will
* automatically restart it for us, and always keep it running */
#define SYNC_TRAIN_NO_TIMEOUT 0
/* Minimum interval for sync train packets. */
#define SYNC_TRAIN_INTERVAL_MIN 0xA0
/* Maximum interval for sync train packets. */
#define SYNC_TRAIN_INTERVAL_MAX 0xC0
/* Service data in the sync train, must be 0x00 */
#define SYNC_TRAIN_SERVICE_DATA_WORD 0x00
/*-----------------Data structure used for Broadcaster------*/
/* Broadcaster data, this single structure handles all
data related to broadcaster.
*/
typedef struct _brodcasterdata_t{
/* Reference to an instance of the broadcast library, configured as a broadcaster */
BROADCAST* broadcaster;
/* Parameters for configuring a broadcast stream */
broadcaster_csb_params csb_params;
/* Parameters for configuring a sync train, advertising the broadcast stream */
broadcaster_sync_params sync_params;
/* Lock during handling of adverts/connecting/disconnecting BLE link */
unsigned connecting:1;
/*! Flag indicating we hav