/* ****************************************************************************** * * @file VOX_Module.h * @brief VOL/R module * @ic sy8835 * * @version 1.0 * @date 2024/11/01 09:59:40 * @author Alex Xu * * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. * All Rights Reserved * * History: * Revision Date Author Desc * 1.0.0 2024/11/01 Alex build this file ****************************************************************************** */ #ifndef __VOX_MODULE_H__ #define __VOX_MODULE_H__ /*_____ I N C L U D E S ____________________________________________________*/ #include "define.h" /*耳机方案商选择*/ //#define QIANCHENG //岍丞 //#define ZHONGKELANXUN //中科蓝讯 #define XIAOMI //小米 /*硬件版本信息*/ #define HW_VER 0x01 //硬件版本信息,范围0-9 /*软件版本信息*/ #define FW_VER 0x001 //程序版本 extern bit Vox_Vout_Enable; extern bit Earphone_Chg_Flag; //耳机出入盒标志位 extern bit Vox_Output_Short_Flag; #define IVOX_THN 20 //耳机跟随充电流下降阈值 #define IVOX_THP 200 //耳机跟随充电流上升阈值 #define VOL_TYPE 0x00 #define VOR_TYPE 0x01 /*耳机配对状态*/ typedef enum { VOX_PAIR_NONE = 0, //无效 VOX_PAIR_ING, //配对中 VOX_PAIR_OK, //配对完成 VOX_PAIR_KEEP, //不处理,保持当前状态 }e_Vox_Pairing_State; /*耳机配对记录*/ typedef enum { VOX_PAIRED_NONE = 0, //无配对过 VOX_PAIRED_OK, //有配对记录 }e_Vox_Paired_State; #if VOX_ENABLE /******************************************************************************\ Macro definitions \******************************************************************************/ /* VOX过流档位设置,在系统初始化中(Vox_init())通过配置VOX_CON0, SFRADDR = VOX_CON0; //设置VOX输出200mA,负载识别电流2.5uA。 SFRDATA &= 0xE0; SFRDATA |= (VOX_IOUT_200MA << 3) | VOX_ADT_Cur_2_5UA; //Vox轻重载滤波时间配置 SFRADDR = VOX_CON2; SFRDATA |= (VOX_LIGHT_TO_HAVEY_128 << 2) | VOX_HAVEY_TO_LIGHT_8; */ /*Vox输出电流过流保护阈值。*/ #define VOX_IOUT_200MA 0x00 #define VOX_IOUT_300MA 0x01 #define VOX_IOUT_400MA 0x02 #define VOX_IOUT_500MA 0x03 /*自动识别负载电流阈值。*/ #define VOX_ADT_Cur_0_5UA 0x00 #define VOX_ADT_Cur_1_5UA 0x01 #define VOX_ADT_Cur_2_5UA 0x02 #define VOX_ADT_Cur_3_5UA 0x03 #define VOX_ADT_Cur_4_5UA 0x04 #define VOX_ADT_Cur_5_5UA 0x05 #define VOX_ADT_Cur_6_5UA 0x06 #define VOX_ADT_Cur_7_5UA 0x07 /*轻载转重载滤波时间配置。*/ #define VOX_LIGHT_TO_HAVEY_1 0x00 #define VOX_LIGHT_TO_HAVEY_8 0x01 #define VOX_LIGHT_TO_HAVEY_128 0x02 #define VOX_LIGHT_TO_HAVEY_256 0x03 /*重载转轻载滤波时间配置。*/ #define VOX_HAVEY_TO_LIGHT_0_125 0x00 #define VOX_HAVEY_TO_LIGHT_1 0x01 #define VOX_HAVEY_TO_LIGHT_8 0x02 #define VOX_HAVEY_TO_LIGHT_64 0x03 #define BOXHEADER 0x55AA //VOX通讯数据包头 #define BOXIDCODE 0xFF //VOX通讯耳机->仓数据包头 #define Vox_TX_Interval 2 //Vox定时发送指令时间间隔 #define TIM_SHUTDOWN_DEBOUNCE 600 //关机前debounce时间 /******************************************************************************\ Variables definitions \******************************************************************************/ /*耳机通道选择*/ #define TWS_VOL 0x04 #define TWS_VOR 0x05 #define TWS_BOX 0x02 #define TWS_PC 0x03 /*耳机通道选择*/ typedef enum { VOL_CHAN = 0x00, VOR_CHAN = 0x01, VOX_MAX_CHAN = 0x02, VOX_BOTH = 0xFF, }e_Vox_Chan; /*耳机和充电仓进行双向通讯的协议命令ID。*/ typedef enum _VOX_BES_COMMAND_E { VHOUSE_CMD_PAIR = 0x01, //充电仓发起的配对信息 VHOUSE_CMD_EXCH_TWS_BTADDR = 0x02, //交换对耳的蓝牙地址信息。 VHOUSE_CMD_CLEAR_PAIR = 0x03, //清配对信息 VHOUSE_CMD_OPEN_BOX = 0x06, //开盖获取电量包 VHOUSE_CMD_CLOSE_WIN_GET_VBAT = 0x07, //关盖获取电量包 VHOUSE_CMD_RST = 0x08, // VHOUSE_CMD_PWROFF = 0x80, //关机消息 VHOUSE_CMD_CLOSE_BOX = 0x81, BES_RESET = 0xE1, }VOX_BES_COMMAND_E; /* Vox Channel Select. */ typedef enum { VOL_CHAN_SET = 0x00, VOR_CHAN_SET = 0x01, VOX_BOTH_SET = 0x02, }e_Vox_Chan_Set; /* Vox Follow Charge State. */ typedef enum { Vox_Follow_Chg_InitSta = 0x00, Vox_Follow_Chg_Sta1, Vox_Follow_Chg_Sta2, Vox_Follow_Chg_Sta3, Vox_Follow_Chg_Sta4, }e_Vox_Follow_Chg_Sta; /* VOX Enable Type */ typedef enum { VOX_TRANS_Mode = 0x00, //VOx UART 透传功能使能 VOX_COMM_Mode_Uart, //VOx 通讯 UART Mode VOX_COMM_Mode_Reg, //VOx 通讯 Register Mode VOX_VOUT_Mode, //VOx 5V 输出使能 VOX_ADT_Mode, //VOx 负载接入、存在识别功能使能,负载自动识别 VOX_PUnK_Mode, //Vox上拉电阻配置,上拉到VOX_Vup。 VOX_PD1K_Mode, // VOX 1K 电阻下拉使能 1: VOR 通过 1K 电阻下拉至 gnd } VOX_Enable_Mode_e; extern bit Cover_Open_Flag; #ifdef VOX_RX extern xdata uint8_t Vox_Get_Vbat_Flag[2]; //耳机配对状态,VOL:低4bit;VOR:高4bit。0是无效,1是正在配对,2是配对成功,3不处理,保持当前状态。 extern xdata uint8_t Vox_Get_BES_Addr_Flag[2] ; #endif typedef struct { uint16_t IVox_Init[VOX_MAX_CHAN]; //跟随充Vox初始化电流值。 uint16_t IVox_Threshold_Neg[VOX_MAX_CHAN]; //Vox电流下降阈值 uint16_t IVox_Threshold_Pos[VOX_MAX_CHAN]; //Vox电流上升阈值 uint16_t IVox_At_Present[VOX_MAX_CHAN]; //Vox当前电流 uint8_t IVox_TC_Mode[VOX_MAX_CHAN]; //Vox CV_TC充电电流阈值 uint8_t Vpmid_SubSta[VOX_MAX_CHAN]; //Vox的Vpmid电压下降标志 uint8_t Vpmid_SubSta_Flag; //Vpmid电压下降标志 uint8_t Vpmid_AddSta[VOX_MAX_CHAN]; //Vpmid电压上升标志 uint8_t Vox_InBox_Sta[VOX_MAX_CHAN]; //耳机在盒标志 uint16_t Vpmid_Threshold_Neg; //Vpmid电压下降阈值 uint16_t Vpmid_Threshold_At_Present; //Vpmid电压当前值 uint16_t Vpmid_Threshold_Pos; //Vpmid电压上升阈值 uint8_t Vox_Follow_Start; //跟随充启动标志 uint8_t Vox_Follow_Stop; //跟随充结束标志 } g_Vox_Fllow_Chg_Cfg; extern g_Vox_Fllow_Chg_Cfg xdata Vox_Fllow_Chg; //extern uint8_t Box_To_Bes_Comm_Debounce; /******************************************************************************\ UserCfg.Functions definitions \******************************************************************************/ extern void HandleTxCommand(VOX_BES_COMMAND_E TxCommand, e_Vox_Chan nVox_Chn_Select); extern void Vox_Det_Machine(void); extern void Vox_Follow_Chg( g_Vox_Fllow_Chg_Cfg *n_Vox_Fllow_Chg ); extern void VOX_EN_Type(VOX_Enable_Mode_e VOX_Enable_Mode); #ifdef VOX_RX extern void HandleVoxCommMsg(void); #endif #endif #endif