主题中讨论的其他器件: TPS65910
您好、查姆斯、
客户遇到 AM3715和 TPS65910的主要问题、并提出以下问题:
1) 平台 HAST 可在 OPP1G 中运行。 是否可以在未启用 AVS/SmartReflex 的情况下在 OPP1G 中运行 AM3715?
勘误表(http://www.ti.com/lit/er/sprz318f/sprz318f.pdf)使用说明3.4在解决方案2中指出、引导时应允许在 las 时执行此操作。
如果是、TI 是否保证此工作模式稳定?
2) 如果我们更需要用于 OPP1G 的 SmartReflex、我们如何对其进行测试?
由于 SmartReflex 似乎只是控制 VDD,我们假设我们必须这样做
触发压降。 相关信息非常少。 您能否为我们提供有关控制操作的更多背景信息? TI 如何对其进行测试?
3) Linux 实现(无论哪个内核版本)似乎已经中断和过时、并且似乎依赖于 TWL4030/6030和兼容的 PMIC。
此外、OPP (例如通过 DVFS)更改似乎不会使用新的目标电压重新触发 SmartReflex。 是否有更近期的实施
适用于 AM3715 <-> TPS65910?
同时、我们尝试了解有关 SmartReflex 算法的更多信息。
- 在 OPP1G 中:Linux 驱动程序似乎将 CONTROL.CONTROL_FUSE_OPP1G 复制到 NVALUERECIPROCAL。 因此、我们假设两个寄存器共享相同的格式/含义。
- 根据 AM3715参考手册、NVALUERECIPROCAL 是错误发生器的参考值。
- 我们在以下位置找到了 AM33xx 的 NVALUERECIPROCAL 和传感器 N 以及传感器 P 电压之间的转换计算: https://github.com/Angstrom-distribution/meta-ti/blob/master/recipes-kernel/linux/linux-am335x-3.2.0-psp04.06.00.08/0001-am33xx-Add-SmartReflex-support.patch ,SR_ADJUST_efuse_value (…)。
这种计算来自哪里? 是否有任何信息?
该计算是否也适用于 DM3715?
我在我的采样(0xAAC7B6)上使用 JTAG 调试器读取 control.control_fuse OPP1G、并尝试了上述计算:
#include
int main (int argc、char * argv[])
{
/*我只需读取 control.control_fuse OPP1G
Lauterbach 调试器的 AM3715示例中的*
unsigned int orig_opp_nvalue = 0xAAC7B6;
unsigned int SENP_GAIN、SENn_GAIN、rnsenp、rnsenn;
unsigned int senn、SENP、UV_senn、UV_SENP;
/*根据 efuse 值计算 SENn 和 SENP */
SENP_GAIN =((orig_opp_nvalue >> 20)& 0xF);
SENn_GAIN =((orig_opp_nvalue >> 16)& 0xF);
rnsenp =((orig_opp_nvalue >> 8)& 0xff);
rnsenn =(orig_opp_nvalue & 0xff);
SENP =((1<<(SENP_GAIN+8))/(rnsenp));
SENn =((1<<(SENn_GAIN+8))/(rnSENn));
UV_SENP = (10 * SENP)/26;
uV_senn =(senn/3);
printf ("SENP:%d uV\n"、uV_SENP);
printf ("SENn:%d uV\n"、uV_senn);
返回0;
}
输出:
SENP:506uV
SENn:480uV
I 预期值 arround 1375uV。
这些值是否合理? 这些值将如何在误差发生器中使用?