MT2503 External Buck问题

来源:互联网 发布:javascript入门经典pdf 编辑:程序博客网 时间:2024/06/07 01:51

公司项目使用SIM2_SCLK作为External Buck的Enable pin,Dws中配置为GPIO mode,output high;
但是开机却开不起来,量去Vcore以及Buck Enable pin的电压波形发现Vcore电压升至1.3V后,很短时间就降为0,而Buck Enable pin始终没有电压,感觉就是这个GPIO口拉不起来,因为之前也没有使用过SIM卡的CLOCK口作GPIO,但和硬件确认说MTK明确回复该口可以作GPIO使用。

问题卡在这边,接下来我们量了下其他使用External Buck的Vcore以及 Buck Enable pin的波形:
Vcore在从0升至1.3V后,大概维持了1.26s后,会有一个电压下降(ms级别),之后又恢复1.3V,从硬件原理上分析是在Vcore上电1.2s后基于功耗效率考虑降为0.75V输出,但同时GPIO使能External Buck,Buck输出1.3V,由于是和Vcore并联,又将Vcore抬高到1.3V。

上述主要过程对应code中如下:

/*below code is add for init external buck*/#if defined(__EXT_BUCK__)    DclPMU_Initialize();gpio_external_buck_set_in_normal_mode();pmu_vcore_voltage_set_in_normal_mode();#endif----------void gpio_external_buck_set_in_normal_mode(void){    gpio_external_buck_init();    gpio_external_buck_turn_on();}void pmu_vcore_voltage_set_in_normal_mode(void){    DCL_HANDLE handle;    PMU_CTRL_LDO_BUCK_SET_VOLTAGE val;     handle = DclPMU_Open(DCL_PMU, FLAGS_NONE);    val.voltage = PMU_VOLT_00_750000_V;    val.mod = VCORE;    DclPMU_Control(handle, LDO_BUCK_SET_VOLTAGE, (DCL_CTRL_DATA_T *)&val);    DclPMU_Close(handle);}----------

之后我们开始检查SIM部分的电源域,因之前项目GPIO使用的是2.8V的电源域,而这里的电压是1.8V,基带确认1.8V的输出是足够拉高的。最后没办法我们又测量了同属于同一电源域的VSIM2,结果竟然也是没有电压。。。只不过这次问题很明显了,SIM2的电源根本就没有打开!

Finally,我们在buck初始化时gpio_external_buck_init加入:

    /* Enable VSIM2 power and adjust VSIM2 to 1.8V */    handle = DclPMU_Open(DCL_PMU, FLAGS_NONE);    val.voltage = PMU_VOLT_01_800000_V;    val.mod = VSIM2;    DclPMU_Control(handle, LDO_BUCK_SET_VOLTAGE, (DCL_CTRL_DATA_T *)&val);    ldo_vsim_gpldo_en.enable = DCL_TRUE;    ldo_vsim_gpldo_en.mod = VSIM2;    DclPMU_Control(handle, LDO_BUCK_SET_VSIM2_GPLDO_EN, (DCL_CTRL_DATA_T *)&ldo_vsim_gpldo_en);    ldoSetEn.mod = VSIM2;    ldoSetEn.enable = DCL_TRUE;    DclPMU_Control(handle, LDO_BUCK_SET_EN, (DCL_CTRL_DATA_T *)&ldoSetEn);    DclPMU_Close(handle);

Problem Solved.

原创粉丝点击