SY8837_Demo_For_OurSelf/UsrInc/inc/config.h
rb_peng c743af0aa6 1、将双向通信的具体场景提到vox_Comm_Handle函数中
2、增加VOX持续输出0V以唤醒耳机的情况;
3、解决超长按后,双向通讯一直发码的问题;(松开按键后Key_Press_ll_irq设为FALSE)
4、解决关盖上电时,不亮灯和不发码的问题(即把Hall_Sta_bk初始化);
5、长按发配对码时,主副耳的选择提取到config.h中;
2025-02-21 17:24:44 +08:00

431 lines
15 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
******************************************************************************
*
* @file config.h
* @brief config module
* @ic sy8837/8
*
* @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 __CONFIG_H__
#define __CONFIG_H__
#include "define.h"
/******************************************************************************\
Macro definitions
\******************************************************************************/
/*程序版本第一个数代表在硬件存在改动不能兼容之前版本时加1
第二个数在功能存在改动时加1第三个数在软件调试出现不同的
测试版本时改动;高位数字变动时,低位数字清零。*/
#define FW_VER0 0x01 //程序版本0:代表在硬件存在改动不能兼容之前版本时加1
#define FW_VER1 0x01 //程序版本1:代表在功能存在改动时加1
#define FW_VER2 0x02 //程序版本2:代表在软件调试出现不同的测试版本时改动时加1
#if 0
#if 0
/*20uA 电流源下接 104K NTC(4250K) 电阻并联一个82K电阻后得到的电压值*/
#define T_N20C 1530 //-20℃(76.5KΩ * 20uA) NTC:1151K
#define T_N15C 1495 //-15℃ 迟滞温度
#define T_N10C 1440 //-10℃(72KΩ * 20uA) NTC:629K
#define T_0C 1334 //-0℃(66.7KΩ * 20uA) NTC:357K
#define T_3C 1300
#define T_5C 1260
#define T_8C 1200
#define T_10C 1178 //10℃(58.9KΩ * 20uA) NTC:209.7K
#define T_12C 1100
#define T_15C 1050
#define T_18C 996
#define T_42C 580
#define T_45C 546 //45℃(27.3KΩ * 20uA) NTC:40.9K
#define T_47C 500
#define T_57C 370
#define T_60C 350 //60℃(17.5KΩ * 20uA) NTC:22.2K
#define T_75C 250
#define T_80C 188 //80℃(9.4KΩ * 20uA) NTC:10.6K
#else
/*20uA 电流源下接 104K NTC(4250K) 电阻并联一个100K电阻后得到的电压值*/
#define T_N20C 1840 //-20℃(92KΩ * 20uA) NTC:1151K
#define T_N15C 1788 //-15℃(89.4KΩ * 20uA) NTC:846K
#define T_N10C 1724 //-10℃(86.2KΩ * 20uA) NTC:629K
#define T_0C 1562 //-0℃(78.1KΩ * 20uA) NTC:357K
#define T_3C 1502 //3℃(75.1KΩ * 20uA) NTC:303K
#define T_5C 1462 //5℃(73.1KΩ * 20uA) NTC:272K
#define T_8C 1396 //8℃(69.8KΩ * 20uA) NTC:232K
#define T_10C 1354 //10℃(67.7KΩ * 20uA) NTC:209.7K
#define T_12C 1308 //12℃(65.4KΩ * 20uA) NTC:189K
#define T_15C 1236 //15℃(61.8KΩ * 20uA) NTC:162K
#define T_18C 1166 //15℃(58.3KΩ * 20uA) NTC:140K
#define T_42C 634 //42℃(31.7KΩ * 20uA) NTC:46.5K
#define T_45C 580 //45℃(29 KΩ * 20uA) NTC:40.9K
#define T_47C 546 //47℃(27.3KΩ * 20uA) NTC:37.6K
#define T_48C 530
#define T_57C 400 //57℃(20 KΩ * 20uA) NTC:25K
#define T_60C 362 //60℃(18.1KΩ * 20uA) NTC:22.2K
#define T_75C 222 //75℃(11.1KΩ * 20uA) NTC:12.6K
#define T_80C 192 //80℃(9.6KΩ * 20uA) NTC:10.6K
#endif
#else
/*2.5V上拉LDO下接 104K NTC(3950K) 电阻串联一个100K电阻后得到的电压值,Value=1024 * Rntc/(Rntc + 100k) */
/* 具体公式:( LSB = 2500/1024 )
NTC Pin实际电压Vntc = Rntc/R总 * 2500
码值NTC = Vntc / LSB = (Rntc / R总 * 2500) / (2500 / 1024)
= Rntc / R总 * 1024
使用码值的原因2.5V的上拉LDO有温漂误差使用码值可以规避。
*/
#define NONE_NTC 1000 //NTC引脚悬空码值
#define T_N20C 927 //-20℃ NTC:953K
#define T_N17C 911 //-17℃ NTC:804K
#define T_N15C 900 //-15℃ NTC:719K
#define T_N13C 887 //-13℃ NTC:644K
#define T_N10C 866 //-10℃ NTC:547K
#define T_0C 783 //-0℃ NTC:325K
#define T_3C 755 //3℃ NTC:293K
#define T_5C 734 //5℃ NTC:253K
#define T_8C 703 //8℃ NTC:218K
#define T_10C 682 //10℃ NTC:198K
#define T_12C 659 //12℃ NTC:180K
#define T_15C 626 //15℃ NTC:157K
#define T_18C 592 //18℃ NTC:137K
#define T_42C 337 //42℃ NTC:49K
#define T_45C 311 //45℃ NTC:43.6K
#define T_47C 294 //47℃ NTC:40K
#define T_57C 221 //57℃ NTC:27.6K
#define T_60C 203 //60℃ NTC:24.7K
#define T_75C 130 //75℃ NTC:14.6K
#define T_80C 113 //80℃ NTC:12.4K
#endif
/* 功能选择和配置。 */
/* NTC保护标准选择JEITA or IEC.*/
#define NTC_JEITA 1
#define NTC_IEC 0
/* NTC充电温度范围。 */
#if NTC_IEC
#define IEC_NTC_CHG_PRO_LOW_TMP T_0C //配置充电NTC保护温度下限值。
#define IEC_NTC_CHG_HYST_LOW_TMP T_3C //配置充电NTC保护恢复温度下限迟滞值。
#define IEC_NTC_CHG_PRO_HIGH_TMP T_45C //配置充电NTC保护温度上限值。
#define IEC_NTC_CHG_HYST_HIGH_TMP T_42C //配置充电NTC保护恢复温度上限迟滞值。
#elif NTC_JEITA
/* JEITA模式NTC温度保护上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_PRO_LOW_TMP T_0C //配置充电NTC保护温度下限值。
#define JEITA_NTC_CHG_PRO_HYST_LOW_TMP T_3C //配置充电NTC保护恢复温度下限迟滞值。
#define JEITA_NTC_CHG_PRO_HIGH_TMP T_60C //配置充电NTC保护温度上限值。
#define JEITA_NTC_CHG_PRO_HYST_HIGH_TMP T_57C //配置充电NTC保护恢复温度上限迟滞值。
/* JEITA模式NTC温度冷状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_COLD_HIGH_TMP T_10C //配置充电NT C冷状态温度上限值。
#define JEITA_NTC_CHG_COLD_HYST_HIGH_TMP T_8C //配置充电NTC冷状态恢复温度上限迟滞值。
/* JEITA模式NTC温度暖状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_WARM_LOW_TMP T_10C //配置充电NTC暖状态温度下限值。
#define JEITA_NTC_CHG_WARM_HYST_LOW_TMP T_12C //配置充电NTC暖状态恢复温度下限迟滞值。
#define JEITA_NTC_CHG_WARM_HIGH_TMP T_45C //配置充电NT C暖状态温度上限值。
#define JEITA_NTC_CHG_WARM_HYST_HIGH_TMP T_42C //配置充电NTC暖状态恢复温度上限迟滞值。
/* JEITA模式NTC温度热状态上下限阈值和迟滞温度。 */
#define JEITA_NTC_CHG_HOT_LOW_TMP T_45C //配置充电NTC热状态温度下限值。
#define JEITA_NTC_CHG_HOT_HYST_LOW_TMP T_47C //配置充电NTC热状态恢复温度下限迟滞值。
#endif
/* NTC放电温度范围。 */
#define NTC_DISCHG_PRO_LOW_TMP T_N13C //配置放电NTC保护温度下限值。
#define NTC_DISCHG_HYST_LOW_TMP T_N10C //配置放电NTC保护恢复温度下限迟滞值。
#define NTC_DISCHG_PRO_HIGH_TMP T_60C //配置放电NTC保护温度上限值。
#define NTC_DISCHG_HYST_HIGH_TMP T_57C //配置放电NTC保护恢复温度上限迟滞值。
/* Bat Level Set. 5% Each Gear */
#define C_batLevel_SetMax 21 //电量计档位数设置
#define Bat_Lev_0 3000 //0%
#define Bat_Lev_5 3050 //5%
#define Bat_Lev_10 3100 //10%
#define Bat_Lev_15 3200 //15%
#define Bat_Lev_20 3250 //20%
#define Bat_Lev_25 3300 //25%
#define Bat_Lev_30 3350 //30%
#define Bat_Lev_35 3400 //35%
#define Bat_Lev_40 3450 //40%
#define Bat_Lev_45 3500 //45%
#define Bat_Lev_50 3600 //50%
#define Bat_Lev_55 3650 //55%
#define Bat_Lev_60 3700 //60%
#define Bat_Lev_65 3750 //65%
#define Bat_Lev_70 3800 //70%
#define Bat_Lev_75 3850 //75%
#define Bat_Lev_80 3900 //80%
#define Bat_Lev_85 3975 //85%
#define Bat_Lev_90 4050 //90%
#define Bat_Lev_95 4125 //95%
#define Bat_Lev_100 4200 //100%
/* Boost Module Config Para Setting. */
#define OPEN_BOOST_VIN 3600 //Boost 发生uvlo保护后在有VIN条件下Boost再次恢复开启的电压3.6V)。
#define OPEN_BOOST_NOVIN 3300 //Boost 发生uvlo保护后在无VIN条件下Boost再次恢复开启的电压3.3V)。
#define BOOST_VOUT_MAX Boost_Vout_5_225V //Boost 输出最高电压阈值。
/* LED 驱动输出限流配置。 */
#define LED_DRV_LIMIT_SET P0_DRV_400 //配置P02-P05限流输出三个档位限流电阻400Ω、800Ω、无限流。
/* KEY And Hall Module Setting. */
#define HALL_OPEN_LEV_SET 1 //配置是高电平为开盖还是低电平为开盖。1:高电平为开盖0:低电平为开盖。
/* Charger Config Setting. */
#define TRICKLE_CUR_SET CHG_ITC_20MA //配置涓流充电流。
#define ITERM_CUR_SET CHG_ITERM_20MA //配置截止充电流。
#define CONSTANT_CUR_SET CHG_ICC_2_00MA //配置恒流充电流。
#define CONSTANT_JEITA_COLD CHG_ICC_1_00MA //配置JEITA低温限流充电电流。
#define VFLOAT_SET CHG_VFLOAT_4_200V //配置浮充电压。
#define VFLOAT_VOLTAGE_SET ( 4200UL ) //配置浮充电压实际电压值用于仓复充单位mv。
#define PRECHG_TIM_SET PRECHG_TMR_EN_1H //配置涓流充超时时间。
#define FASTCHG_TMR_SET FASTCHG_TMR_SET_5H //配置恒流和恒压超时时间。
#define VFLOAT_JEITA_HOT CHG_VFLOAT_4_000V //配置JEITA标准中NTC过热充电浮充电压。
#define BAT_RECHARG_THD 150 //电池复充电压4200mv - 150mv = 4050mv单位mv。
/* Vox Config Setting. */
#define VOX_ADT_CUR_SET VOX_ADT_CUR_4_5UA //配置VOX负载识别电流阈值。
#define VOX_IOFF_CUR_SET ( VOX_IOFF_3MA << 6 ) //配置VOX IOFF检测阈值。
#define VOX_LIGHT_TO_HAVEY_DEB VOX_LIGHT_TO_HAVEY_128MS //配置VOX 轻载转重载滤波时间。
#define VOX_HAVEY_TO_LIGHT_DEB VOX_HAVEY_TO_LIGHT_8MS //配置VOX 重载转轻载滤波时间。
#define VOX_COMM_VOLTAGE_SET Vox_COMM_PULL_Vol_3_0 //配置VOX 通讯电平(1.8v/2.5V/3.0V/5.0)。
#define VOX_COMM_PULL_UP_SET Vox_Pull_Up_50k //配置VOX 通讯上拉电阻。
#define VOX_CHG_FULL_5V_LEAST_CNT 40 //配置关盖条件下VOX 耳机充满后VOX输出5V持续时间100ms * 40
#define HALL_EVENT_VOX_5V_DEBOUNCE 5 //配置开盖动作后VOX 输出5V持续时间100ms * 5单位100ms。
#define VOX_OCP_HICUUP_DEBOUNCE 5 //配置关盖条件下VOX 打嗝时间100ms * 5单位100ms。
#define HALL_CLOSE_VOX_5V_HOLD_CNT 3 //配置关盖动作后VOX 输出5V持续时间100ms * 3单位100ms。
#define VOX_0V_WAKEUP_EAR 0 //VOX持续输出0V以唤醒耳机
#if VOX_0V_WAKEUP_EAR
#define HALL_CLOSE_VOX_0V_DEBOUNCE 5 //配置关盖动作后VOX 输出0V持续时间100ms * 3单位100ms。
#define HALL_OPEN_VOX_0V_DEBOUNCE 5 //配置开盖动作后VOX 输出0V持续时间100ms * 5单位100ms。
#define Key_VOLTAGE_HOLD_CNT 5 //配置长按或超长按动作后VOX 输出0V持续时间15ms * 5单位15ms。
#endif
/* 双向通讯协议选择 */
#define JIELI 1 //杰理耳机芯片
#define ZHONGKE 0 //中科蓝讯耳机芯片
#define XUANHENG 0 //玄恒耳机芯片
/* 主副耳机选择:双向通讯耳机配对时使用 */
#define MASTER_TYPE VOR_TYPE //主通道
#define MASTER_SIDE VOR_CHAN //主耳机
#define SLAVE_TYPE VOL_TYPE //副通道
#define SLAVE_SIDE VOL_CHAN //主耳机
/* Vox跟随充参数设置。(100ms调用周期) */
#define FOLLOW_CHG_EFFICIENCY //配置跟随充类型0、效率优先1、速度优先。
#define VOX_CV_TC_CURRENT 20 //耳机充电处于CV/TC阶段的电流值单位mA。
#define Vox_FOLLOW_CHG_PTM_THD 200 //PTM模式启动阈值VOUT - VBAT单位mV。
#define VOX_FOLLOW_CHG_INIT_CNT 10 //启动跟随充VOX VOUT输出最高电压持续时间1s单位100ms。
#define VOX_FOLLOW_CHG_PMID_UP_STEPS 2 //VOX VOUT上升调节档位数。
#define VOX_FOLLOW_CHG_PMID_DOWN_STEPS 2 //VOX VOUT下降调节档位数。
#define VOX_FOLLOW_CHG_PMID_UP_CNT 20 //VOX VOUT上升调节周期2s单位100ms。
#define VOUT_MAX_THD Boost_Vout_5_225V //VOX VOUT输出最大阈值。
#define VOUT_MIN_THD Boost_Vout_3_65V //VOX VOUT输出最小阈值。
#define IVOL_Threshold_Neg(Ivol) ( ( Ivol / 5 ) << 2 ) //VOL 调压下限阈值电流80% * IvolIVOL≥这个值则降压。
#define IVOR_Threshold_Neg(Ivor) ( ( Ivor / 5 ) << 2 ) //VOR 调压下限阈值电流80% * IvorIVOR≥这个值则降压。
#define IVOL_Threshold_Pos(Ivol) ( ( Ivol ) << 1 ) //VOL 调压上限阈值电流2倍 * Ivol当Ivol大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
#define IVOR_Threshold_Pos(Ivor) ( ( Ivor ) << 1 ) //VOR 调压上限阈值电流2倍 * Ivor当Ivor大于THP阈值电流则说明耳机状态发生改变TC跳转到CC或Recharge复充需要重启跟随充。
/* PWM Module Setting */
/*PWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 11.0592M / n^PWM_PRE = 11.0592M / 8 = 1.38MHz,
PWM_REL = 255 - 1.38M / 10K = 255-138 = 117
nPWM_CMP = 117 + 150 * (1-50%) = 192。
*/
#define PWM_CLKFRE_SET 3 //配置PWM计数时钟频率对应寄存器PWM_PREPWM计数器时钟Fre(pwm) = Fre(sys)/PWM_PRE = 12M / n^PWM_PRE = 12M / 8 = 1.5MHz,
#define PWM_RELOAD_SET PWM_REL_VALUE //配置PWM输出占空比对应寄存器PWM_REL需和PWM_CMP配合使用。
/*Sleep Module Setting*/
/*Enter Sleep Time Debounce*/
#define ENTER_STANDBYMODE_CNT 15 //进入Standby Mode 延迟时间,单位:秒
#define STANDBY_TIM_SET STB_TMR_SET_8S //配置Standby定时唤醒时间2s、4s、8s、16s单位
/******************************************************************************\
Variables definitions
\******************************************************************************/
/* 标志位和状态位。 */
/* NTC充放电保护标志位 */
extern bit CHG_NTC_Pro_Flag; //充电NTC保护标志位TRUE有NTC保护:FAULSE:无NTC保护
extern bit Boost_NTC_Pro_Flag; //放电电NTC保护标志位TRUE有NTC保护:FAULSE:无NTC保护
/* Charger状态定义 */
// 充电状态定义
typedef enum
{
CHG_NONE = 0x00,
CHG_PROTECT,
CHG_STA_ING, // 充电中
CHG_STA_COMPLETED, // 充电完成
} TE_CHG_STA;
extern idata TE_CHG_STA ChgStatus; // Charger状态定义
/* Boost相关标志位 */
extern bit gBoost_Prepared_Flag; //Boost满足开启条件TRUE:Boost无保护可以开启FAULSE:Boost有保护无法正常开启。
/* LED UI显示相关标志位 */
extern bit CoverEvent_Flg_led; //Hall开关盖动作标志位用于LED UI显示TRUE:有开关盖动作。
extern bit Earphone_Chg_Flag_led; //耳机出入盒标志位用于LED UI显示TRUE:有耳机入盒动作。
extern bit Key_Press_short_irq_led; //按键短按动作标志位用于LED UI显示TRUE:有按键短按动作。
extern bit LED_On_Flag; //led显示复位标志位TRUE:灯效复位。
/******************************************************************************\
UserCfg.Functions definitions
\******************************************************************************/
#endif