case PM660_SUBTYPE: chip->chg.chg_param.smb_version = PM660_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | OTG_WA | OV_IRQ_WA_BIT | TYPEC_PBS_WA_BIT; chg->param.freq_buck = pm660_params.freq_buck; chg->param.freq_boost = pm660_params.freq_boost; chg->chg_freq.freq_5V = 650; chg->chg_freq.freq_6V_8V = 850; chg->chg_freq.freq_9V = 1050; chg->chg_freq.freq_12V = 1200; chg->chg_freq.freq_removal = 1050; chg->chg_freq.freq_below_otg_threshold = 1600; chg->chg_freq.freq_above_otg_threshold = 800; break;代码分析
时间: 2024-04-06 21:33:15 浏览: 105
这段代码是在处理 PM660 芯片类型的充电参数。具体来说,它完成了以下操作:
1. 将 SMB 版本号设置为 PM660_SUBTYPE。
2. 开启一些工作模式和异常保护标志,包括 BOOST_BACK_WA、OTG_WA、OV_IRQ_WA_BIT 和 TYPEC_PBS_WA_BIT。
3. 设置一些频率参数,包括充电时的不同电压下的频率(chg_freq.freq_5V、chg_freq.freq_6V_8V、chg_freq.freq_9V、chg_freq.freq_12V),以及移除充电器时的频率(chg_freq.freq_removal)等。
4. 设置 chg_param.freq_buck 和 chg_param.freq_boost 参数,这些参数在 PM660 芯片类型中都是固定的。
这些参数的设置将影响 PM660 芯片的充电行为,从而保证充电的效率和安全性。
相关问题
DULE_LDO_512_LV_P1200_100 : case PM_HW_MODULE_LDO_512_LV_P50_160 : case PM_HW_MODULE_LDO_512_LV_P150_160 : case PM_HW_MODULE_LDO_512_LV_P300_160 : case PM_HW_MODULE_LDO_512_LV_P600_160 : case PM_HW_MODULE_LDO_512_LV_P1200_160 : case PM_HW_MODULE_LDO_512_MV_P50_500 : case PM_HW_MODULE_LDO_512_MV_P150_500 : case PM_HW_MODULE_LDO_512_MV_P300_500 : case PM_HW_MODULE_LDO_512_MV_P600_500 : case PM_HW_MODULE_LDO_515_MV_P1200_200 : *pmos_force_soft_start = TRUE; break; default: volt_info = NULL; break; } break; case PM_HW_MODULE_ULT_LDO: switch(peripheral_info->peripheral_subtype) { case PM_HW_MODULE_ULT_LDO_N300_STEPPER: case PM_HW_MODULE_ULT_LDO_N600_STEPPER: case PM_HW_MODULE_ULT_LDO_N900_STEPPER: case PM_HW_MODULE_ULT_LDO_N1200_STEPPER: *is_stepper = TRUE; break; default: volt_info = NULL; break; } break; default: volt_info = NULL; break; } return volt_info; } __attribute__((section("rinit_code_sec_pool1"))) uint8 pm_ldo_get_num_peripherals(uint8 pmic_index) { if((pmic_index < PM_MAX_NUM_PMICS) && (pm_ldo_data_arr[pmic_index] !=NULL)) { return pm_ldo_data_arr[pmic_index]->pm_pwr_data.num_of_peripherals; } return NULL; }
这段代码似乎是用于获取 LDO 稳压器的配置信息的。具体来说,这个函数可能被调用来选择 LDO 稳压器的输出电压,并配置 PMIC 寄存器以设置该电压。
函数的输入参数是一个结构体指针 `peripheral_info`,其中包含了要配置的 LDO 稳压器的类型和子类型等信息。函数首先根据这些信息选择一个 `volt_info` 结构体,该结构体包含了 LDO 稳压器的详细配置信息,例如输出电压和最大电流等。接下来,根据 LDO 稳压器的类型和子类型,函数可能会进行一些特殊处理,例如设置软启动标志或者启用步进模式等。最后,函数返回 `volt_info` 结构体指针,供其他函数使用。
需要注意的是,我只看到了这段代码的一部分,并不知道这个函数的完整实现和上下文。因此,以上分析仅供参考,具体实现可能因平台和应用而异。
private void UpdateSubTypeTag() { if (m_ItemData == null) { SetSubTypeTagState(false); return; } if (m_ItemData.ItemType == ItemType.Dan || m_ItemData.ItemType == ItemType.DanFormula) { SetSubTypeTagState(true); var subType = (ItemDanType)m_ItemData.SubType; m_FightTagTag.gameObject.SetActive(subType == ItemDanType.Fight); m_CultivationTag.gameObject.SetActive(subType == ItemDanType.Cultivation); var isShow = subType == ItemDanType.Fight || subType == ItemDanType.Cultivation; m_SubTypeTagText.text = isShow ? Constant.Dan.GetDanTypeName(subType) : ""; } else { SetSubTypeTagState(false); } }
这段代码是一个私有方法,用于更新次类型标签。它首先检查m_ItemData是否为空,如果为空,则调用SetSubTypeTagState(false)方法并返回。
如果m_ItemData的ItemType为ItemType.Dan或ItemType.DanFormula,则调用SetSubTypeTagState(true)方法,表示次类型标签可见。
接着,根据m_ItemData的SubType来设置具体的次类型标签。如果SubType是ItemDanType.Fight,则将m_FightTagTag激活显示;如果是ItemDanType.Cultivation,则将m_CultivationTag激活显示。同时,根据subType是否是ItemDanType.Fight或ItemDanType.Cultivation来确定是否显示次类型标签的文本。如果是,则将m_SubTypeTagText的文本设置为Constant.Dan.GetDanTypeName(subType),否则将文本设置为空字符串。
如果m_ItemData的ItemType不是ItemType.Dan或ItemType.DanFormula,则调用SetSubTypeTagState(false)方法,表示次类型标签不可见。
阅读全文