主题中讨论的其他器件: TPS65217
您好!
SDK: ti-processor-sdk-linux-am335x-evm-03.03.00.04-Linux-x86-Install.bin
编译文件: AM335x_boneblack_defconfig
电源芯片: TPS65217DRSL
am3354硬件电压值: VDDS_DDR 1.35V, VDD_MPU 1.01V, VDD_CORE 1.101V, 时钟晶体:24MHZ
目的是在 Uboot 期间将 VDDS_DDR 配置为1.35V、1.01V 至 VDD_MPU、1.101V 至 VDD_CORE 配置为600M。
AM3354运行至以下位置卡将断电:
该测试发现 uboot 级断电芯片电源卡。
DPLL_MPU_opp100.m = AM335x_get_efuse_MPU_max_freq (cdev); //读取 DPLL_MPU_opp100.m 为1000MHz
DPLL_MPU_opp100.m = MPUPLL_M_600; // DPLL_MPU_opp100.m 为600MHz
do_setup_DPLL (&DPLL_MPU_regs、&DPLL_MPU_opp100);
DPLL_MPU_opp100.m = AM335x_get_efuse_MPU_max_freq (cdev); //设置后读取 DPLL_MPU_opp100.m 值仍然为1000MHz
如何将 MPU 频率设置为600M ??
代码显示如下(board/ti/AM335x/board.c)。 AM3354的名称是 board_is_Bone_lt () :
void am33xx_spl_board_init (void)
{
INT MPU_VDD;
/*获取频率*/
DPLL_MPU_opp100.m = AM335x_get_efuse_MPU_max_freq (cdev);
printf ("clk =%d\n"、DPLL_MPU_opp100.m); //printf clk = 1000
if (board_is_Bone ()|| board_is_Bon_lt ()){
/* BeagleBone PMIC 代码*/
int usb_cur_lim;
/*
*仅在电路板版本> A1时执行 PMIC 配置
BeagleBone White 上的*
*
if (board_is_Bone ()&&!strncmp (board_ti_get_rev ()、"00A1"、4))
返回;
IF (i2c_probe (TPS65217_chip_PM))
返回;
/*
*在 BeagleBone White 上、我们需要确保使用交流电源
*然后再增加频率。
*
if (board_is_Bone ()){
uchar PMIC_STATUS_reg;
IF (tps65217_reg_read (TPS65217_status、
PMIC_STATUS_reg))
返回;
if (!(PMIC_STATUS_REG 和 TPS65217_PWR_SRC_AC_BITMASK)){
放置("无交流电源、禁用频率开关\n");
返回;
}
}
/*
*覆盖自我们知道是否有检测到的内容
* BeagleBone Black 支持1GHz。
*
if (board_is_Bone_lt ())
DPLL_MPU_opp100.m = MPUPLL_M_600;
/*
*将 USB 电流限制增加到1300mA 或1800mA 并进行设置
*根据需要使用 MPU 电压控制器。
*
if (DPLL_MPU_opp100.m =MPUPLL_M_600){
USB_cur_lim = TPS65217_USB_input_CUR_limit_1800MA;
MPU_VDD = TPS65217_DCDC_VOLT_SEL_1125MV;
}否则{
USB_cur_lim = TPS65217_USB_input_CUR_limit_1300MA;
MPU_VDD = TPS65217_DCDC_VOLT_SEL_1125MV;
}
IF (tps65217_reg_write (TPS65217_PROT_level_none、
TPS65217_POWER_PATH、
USB_cur_lim、
TPS65217_USB_INPUT_CUR_LIMIT_MASK))
PUT ("tps65217_reg_write failure\n"\});
/*将 DCDC3 (内核)电压设置为1.125V */
IF (tps65217_VOLTAGE_UPDATE (TPS65217_DEFDCDC3、
TPS65217_DCDC_VOLT_SEL_1125MV){
PUT ("tps65217_VOLTAGE_UPDATE FAILENT\n");
返回;
}
/*将核心频率设置为 OPP100 */
do_setup_DPLL (&DPLL_CORE_reg、&DPLL_CORE_opp100);
/*设置 DCDC2 (MPU)电压*/
if (tps65217_VOLTAGE_UPDATE (TPS65217_DEFDCDC2、MPU_VDD)){
PUT ("tps65217_VOLTAGE_UPDATE FAILENT\n");
返回;
}
/*
*将 BeagleBone 的 LDO3、LDO4输出电压设置为3.3V。
*对于 BeagleBone Black、将 LDO3设置为1.8V、将 LDO4设置为3.3V。
*
if (board_is_Bone ()){
IF (tps65217_reg_write (TPS65217_PROT_LEVEL_2、
TPS65217_DEFLS1、
TPS65217_LDO_VOLTGE_OUT_3_3、
TPS65217_LDO_MASK))
PUT ("tps65217_reg_write failure\n"\});
}否则{
IF (tps65217_reg_write (TPS65217_PROT_LEVEL_2、
TPS65217_DEFLS1、
TPS65217_LDO_VOLTGE_OUT_1_8、
TPS65217_LDO_MASK))
PUT ("tps65217_reg_write failure\n"\});
}
IF (tps65217_reg_write (TPS65217_PROT_LEVEL_2、
TPS65217_DEFLS2、
TPS65217_LDO_VOLTGE_OUT_3_3、
TPS65217_LDO_MASK))
PUT ("tps65217_reg_write failure\n"\});
}
printf ("写入 be clk =%d\n"、DPLL_MPU_opp100.m);
/*将 MPU 频率设置为我们现在检测到的值,此时电压已设置*/
do_setup_DPLL (&DPLL_MPU_regs、&DPLL_MPU_opp100);
DPLL_MPU_opp100.m = AM335x_get_efuse_MPU_max_freq (cdev);
printf ("clk =%d\n"、DPLL_MPU_opp100.m);
}
BR
