修复播放音乐空调会停的问题

This commit is contained in:
flym 2026-06-06 17:40:39 +08:00
parent a94bdd6943
commit f5c20d527a
14 changed files with 44431 additions and 44318 deletions

Binary file not shown.

BIN
FW/jl_isd.fw Normal file

Binary file not shown.

BIN
FW/update_HTFAN03_0466.ufw Normal file

Binary file not shown.

View File

@ -34,8 +34,11 @@ const char *lr_fan_level_tone[7] = {TONE_CFAN_L0, TONE_CFAN_L1, TONE_CFAN_L2, TO
const char *ac_level_tone[3] = {TONE_AC_L0, TONE_AC_L1, TONE_AC_L2};
extern void mcpwm_init(struct pwm_platform_data *arg);
extern void mcpwm_set_frequency(pwm_timer_num_type ch, pwm_aligned_mode_type align, u32 frequency);
extern void mcpwm_set_duty(pwm_ch_num_type pwm_ch, pwm_timer_num_type timer_ch, u16 duty);
static u8 kt_pwm_ready;
static void kt_ac_burst_stop(void)
{
if (ac_burst_timer) {
@ -59,6 +62,37 @@ static void kt_ac_burst_cb(void *priv)
kt_ac_pwm_output(ac_burst_pwm_on ? KT_AC_RUN_DUTY : 0);
}
void kt_fan_ac_pwm_refresh(void)
{
if (!kt_pwm_ready) {
return;
}
mcpwm_set_frequency(pwm_timer0, pwm_edge_aligned, KT_FAN_PWM_FREQ);
mcpwm_set_frequency(pwm_timer2, pwm_edge_aligned, KT_FAN_PWM_FREQ);
mcpwm_set_frequency(pwm_timer4, pwm_edge_aligned, KT_FAN_PWM_FREQ);
mcpwm_set_frequency(pwm_timer3, pwm_edge_aligned, KT_AC_PWM_FREQ);
mcpwm_set_duty(pwm_ch0, pwm_timer0, fan_level_duty[__this->front_fan_level]);
mcpwm_set_duty(pwm_ch2, pwm_timer2, fan_level_duty[__this->rear_fan_level]);
mcpwm_set_duty(pwm_ch4, pwm_timer4, fan_level_duty[__this->lr_fan_level]);
if (__this->ac_level == ac_level_0) {
kt_ac_pwm_output(0);
} else if (__this->ac_level == ac_level_1) {
kt_ac_pwm_output(ac_burst_pwm_on ? KT_AC_RUN_DUTY : 0);
} else if (__this->ac_level == ac_level_2) {
kt_ac_pwm_output(KT_AC_RUN_DUTY);
} else {
kt_ac_pwm_output(0);
}
}
void clock_set_cur_hook(void)
{
kt_fan_ac_pwm_refresh();
}
static void kt_ac_apply_mode(void)
{
kt_ac_burst_stop();
@ -151,6 +185,7 @@ void kt_fan_ac_init(void)
pwm_p_data.l_pin = -1;
pwm_p_data.complementary_en = 0;
mcpwm_init(&pwm_p_data);
kt_pwm_ready = 1;
kt_ac_apply_mode();
#if KT_PWM_BOOT_TEST_EN

View File

@ -31,6 +31,7 @@ typedef enum {
void kt_fan_ac_init(void);
void kt_fan_ac_pwm_refresh(void);
void kt_fan_level_change(kt_fan_type fan);

View File

@ -36,8 +36,12 @@ void clock_remove_set(u32 type)
*****/
//// clock_fix 非 0 时固定系统时钟(MHz),避免 BT 播歌 clock_set_cur 影响 MCPWM
//// clock_fix 非 0 时固定系统时钟(MHz)。固定 240 会使 MCPWM 实际频率偏离 init 计算值
#if (SOUNDCARD_ENABLE) || (TCFG_MIC_EFFECT_ENABLE)
#define CLOCK_FIX 240
#else
#define CLOCK_FIX 0
#endif
#if (TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_FRONT_LR_REAR_LR) && TCFG_EQ_DIVIDE_ENABLE
#define EQ4_CLK (24) //20段eq double eq
@ -174,6 +178,16 @@ const u8 clock_tb[] = {
static u8 ext_clk_tb[10];
static u32 idle_type = 0;
__attribute__((weak)) void clock_set_cur_hook(void)
{
}
static void clock_set_sys(u32 cur_clk_mhz)
{
clk_set("sys", cur_clk_mhz * 1000000L);
clock_set_cur_hook();
}
static void clock_ext_dump()
{
u8 i, j;
@ -316,11 +330,11 @@ void clock_pause_play(u8 mode)
}
#endif
idle_clk = clock_match(idle_clk);
clk_set("sys", idle_clk * 1000000L);
clock_set_sys(idle_clk);
} else {
clock_ext_dump();
cur_clk = clock_cur_cal();
clk_set("sys", cur_clk * 1000000L);
clock_set_sys(cur_clk);
}
}
@ -332,7 +346,7 @@ void clock_idle(u32 type)
cur_clk = clock_cur_cal();
local_irq_enable();
clock_ext_dump();
clk_set("sys", cur_clk * 1000000L);
clock_set_sys(cur_clk);
}
//////把时钟设置加入到ext中但是不是立刻设置时钟
@ -360,7 +374,7 @@ void clock_set_cur(void)
u32 cur_clk ;
clock_ext_dump();
cur_clk = clock_cur_cal();
clk_set("sys", cur_clk * 1000000L);
clock_set_sys(cur_clk);
}
//////把时钟设置加入到ext中立刻设置时钟
@ -373,7 +387,7 @@ void clock_add_set(u32 type)
}
clock_ext_dump();
cur_clk = clock_cur_cal();
clk_set("sys", cur_clk * 1000000L);
clock_set_sys(cur_clk);
}
void clock_remove_set(u32 type)
@ -387,5 +401,5 @@ void clock_remove_set(u32 type)
clock_ext_dump();
cur_clk = clock_cur_cal();
clk_set("sys", cur_clk * 1000000L);
clock_set_sys(cur_clk);
}

Binary file not shown.

View File

@ -1724,6 +1724,10 @@ objs/apps/kaotings/kt_led7.c.o
-r=objs/apps/kaotings/kt_led7.c.o,led7_pin,pl
-r=objs/apps/kaotings/kt_led7.c.o,app_var,l
objs/apps/kaotings/kt_fan_ac.c.o
-r=objs/apps/kaotings/kt_fan_ac.c.o,kt_fan_ac_pwm_refresh,pl
-r=objs/apps/kaotings/kt_fan_ac.c.o,mcpwm_set_frequency,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,mcpwm_set_duty,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,clock_set_cur_hook,pl
-r=objs/apps/kaotings/kt_fan_ac.c.o,kt_fan_ac_init,pl
-r=objs/apps/kaotings/kt_fan_ac.c.o,mcpwm_init,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,kt_fan_level_tone_play,pl
@ -1731,7 +1735,6 @@ objs/apps/kaotings/kt_fan_ac.c.o
-r=objs/apps/kaotings/kt_fan_ac.c.o,kt_led7_show_string,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,tone_play,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,kt_fan_level_change,pl
-r=objs/apps/kaotings/kt_fan_ac.c.o,mcpwm_set_duty,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,sys_timer_add,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,sys_timer_del,l
-r=objs/apps/kaotings/kt_fan_ac.c.o,fan_level_duty,pl
@ -4723,22 +4726,23 @@ objs/cpu/br23/chargestore.c.o
-r=objs/cpu/br23/chargestore.c.o,uart_dma_buf,pl
-r=objs/cpu/br23/chargestore.c.o,clock_chargestore,pl
objs/cpu/br23/clock_manager.c.o
-r=objs/cpu/br23/clock_manager.c.o,clock_set_cur_hook,l
-r=objs/cpu/br23/clock_manager.c.o,clock_idle_selet,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_ext_push,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_ext_pop,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_match,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_ext_cal,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_cur_cal,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_pause_play,pl
-r=objs/cpu/br23/clock_manager.c.o,clk_set,l
-r=objs/cpu/br23/clock_manager.c.o,clock_idle,pl
-r=objs/cpu/br23/clock_manager.c.o,local_irq_disable,l
-r=objs/cpu/br23/clock_manager.c.o,local_irq_enable,l
-r=objs/cpu/br23/clock_manager.c.o,clock_pause_play,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_idle,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_add,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_remove,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_set_cur,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_add_set,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_remove_set,pl
-r=objs/cpu/br23/clock_manager.c.o,clk_set,l
-r=objs/cpu/br23/clock_manager.c.o,clock_enum,pl
-r=objs/cpu/br23/clock_manager.c.o,clock_tb,pl
objs/cpu/br23/ctmu.c.o

File diff suppressed because it is too large Load Diff