6965E-SD卡和USB的DM脚复用的问题修改
📎 原始文档:https://www.kdocs.cn/l/cf7dLCRD5ceO 6965E-SD卡和USB的DM脚复用的问题修改
1.//2023-修复适配使能U盘和SD卡复用后部分U盘挂载不上的问题
- SD卡和USB复用挂载,暂停SDio

2.//20230301-修复使能U盘和SD卡复用后,适配由于部分SD卡存在下拉导致的U盘挂载失败的问题
- 应用层添加下方函数。添加在dev_status.c

void sdpg_config(int enable)
{
if (enable) {
JL_PORTA->OUT |= BIT(0);
JL_PORTA->DIR &= ~BIT(0);
if (enable == 1) {
p33_tx_1byte(P3_SDPG_CON, 0);
JL_PORTA->HD &= ~BIT(0);
JL_PORTA->HD0 &= ~BIT(0);
} else if (enable == 2) {
p33_tx_1byte(P3_SDPG_CON, 0);
JL_PORTA->HD |= BIT(0);
delay(1000);
JL_PORTA->HD0 |= BIT(0);
delay(1000);
} else if (enable == 3) {
JL_PORTA->HD |= BIT(0);
delay(1000);
JL_PORTA->HD0 |= BIT(0);
delay(1000);
p33_tx_1byte(P3_SDPG_CON, 0b0001);
} else if (enable == 4) {
JL_PORTA->HD |= BIT(0);
os_time_dly(1);
JL_PORTA->HD0 |= BIT(0);
os_time_dly(1);
p33_tx_1byte(P3_SDPG_CON, 0b0001);
} else {
p33_tx_1byte(P3_SDPG_CON, 0);
JL_PORTA->HD &= ~BIT(0);
JL_PORTA->HD0 &= ~BIT(0);
JL_PORTA->OUT &= ~BIT(0);
}
} else {
p33_tx_1byte(P3_SDPG_CON, 0);
JL_PORTA->DIR |= BIT(0);
JL_PORTA->PU &= ~BIT(0);
JL_PORTA->PD &= ~BIT(0);
JL_PORTA->HD &= ~BIT(0);
JL_PORTA->HD0 &= ~BIT(0);
JL_PORTA->DIE &= ~BIT(0);
}
}
void sd_set_power(u8 enable)
{
static sd_power_lock = 0xfb;
static sd_power_old = 0xff;
u8 sd_power_status = !(JL_PORTA->DIR & BIT(0)); //1:有电 0:没电
if(sd_power_old == enable){
return;
}
switch (enable) {
case 0:
if (sd_power_lock == 0xfb) { //sd_power 是解锁状态
sdpg_config(0);
}
sd_power_old = enable;
break;
case 0xfa:
sd_power_lock = 0xfa;
sdpg_config(4);
break;
case 0xfb:
sd_power_lock = 0xfb;
sdpg_config(sd_power_old);
// printf("--------sd_power_old %d\n", sd_power_old);
break;
default:
if (sd_power_lock == 0xfb) { //sd_power 是解锁状态
sdpg_config(enable);
}
sd_power_old = enable;
break;
}
}
3.下方调用以下接口
4.添加以下修改:定时挂起USB检测
static void usb_otg_xxx(void *priv){
usb_detect_timer_add();
}
usb_detect_timer_del();
sys_timeout_add(NULL, usb_otg_xxx, 1000);
3.//20230531-修复适配部分U盘使能复用和mic混响后出现挂载失败的问题
