This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TPS6.5982万:TPS6.5982万多个配置问题

Guru**** 2451970 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/580421/tps65982-tps65982-multiple-configuration-problems

部件号:TPS6.5982万

我正在尝试通过多个配置节省时间(在我的系统中,每个配置下载大约需要1分钟)。 所以我使用GPIO0和GPIO1加载多个配置。 由于内存限制,TPS6.5982万只能将0x400字节用于闪存中的配置(0x2800-0x2BFF),尽管0x2800-0x2FFF可用。 不知道为什么不能使用另一个0x400。

我使用ApplCustomization工具的版本2.15 来有3个配置集,使用虚拟地址(DBG1)0,(DBG2)0,1 (93.1kOhm),0,2 (156k)和0,3 (220k)。 然后,我只更改SinkCapabilities,以便在GPIO0或1下降时请求单个5V PDO,在GPIO0上升时请求5V/12V 2 PDO设置,在GPIO1上升时请求5V/20V PDO设置。 这将占用0x400空间的0x3F0,因此我不能拥有4个配置集。

在杂项配置页面上,我将应用配置组1设置为GPIO低转换为0x1,GPIO高转换为0x2。 我将应用程序配置组2设置为GPIO低转换为0x1,GPIO高转换为0x3。 我在两个应用程序配置中都将命令通道设置为CMD3。 然后我将上升边缘和下降边缘的4CC命令设置为'ANeg'。 我在每个应用程序配置中的所有4个插槽中填充了'ANeg',以查看它是否可以解决我的问题。

最后,在GPIO事件映射寄存器下,我将GPIO0设置为'加载应用配置集1'作为映射事件,将GPIO1设置为加载应用配置集2。

我将项目和二进制文件都保存到低/全部,然后下载到带有TPS6.5982万 IC的主板上。 然后,我连接到TP6.5982万 EVM板,开关设置为0110(6),这样它将通告5V,12V和20V的源功能,并为该板供电。 我有一台PD分析器在查看CC线。

结果:
当我切换GPIO0时,它在5V和12V之间切换,因为它加载不同的配置,然后发送Aneg命令。 我在探头时看到GPIO0开关,我在分析仪上看到一条轨迹,显示请求,并在EVM板在5V和12V之间切换时显示PSRDY。
但是... 如果我在GPIO1中尝试相同的操作,则不起作用。 我探测球并看到GPIO1线的高低切换。 我还使用Aardvark和主机接口实用程序,并读取一个5V PDO和两个5V和20V PDO之间的汇容量寄存器(0x33)切换。 但是,我看不到PD流量,EVM板也不会更改指示灯。 我可以在切换GPIO1后使用HIT发送'ANeg'命令,然后我看到PD流量,它工作正常。 因此,出于某种原因,切换GPIO1不会发送命令,即使我看到配置更改?!? 我必须使用HIT手动发送命令。 GPIO0工作正常,没有此问题。

我将AppConfigGroup2 (GPIO1)上的命令通道更改为CMD1,而不是CMD3,但这没有帮助,我仍然看不到任何PD流量。

命令通道是否存在定时问题? 您是否在我的编程中看到任何设置不正确的内容? 为什么闪存部件的0x400/0x800仅用于配置?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的设置似乎正确,但我想详细测试/查看您的配置-您可以共享配置文件(*。pjt)吗?

    -/Praneet

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我会的,但我不知道如何发送给您。 我会一直寻找一种方式...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将转递Praneet。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Warren,我无法加载您共享的项目-您使用的是哪个版本的工具?

    -/Praneet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我升级到了2.15 ,认为我遇到问题的原因是因为版本较旧。 现在我使用的是2.15。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已验证使用2.12 时是否出现相同问题。 我不得不从另一个2.12 映像开始,但我用3个配置集创建了一个非常相似的映像。 我遇到同样的问题,GPIO0将切换并发送ANEG命令,但GPIO1不会发送ANEG命令。
    我发现2.12 和2.15 之间还有其他差异。 具有3个配置集的2.15 映像大小为0x3F0 (超出0x400),2.12 映像大小为0x3DC。 因此,如果它继续随着每个新版本的增加而增长,则这种切换方法将受到限制,因为3个配置集可能不再适合。
    我将继续尝试切换GPIO线路,但我不确定这是否是加载新配置的可行方式,因为它有些受限。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经尝试了我能想到的一切。 我有3个GPIO进入TPS6.5982万,GPIO0,1和2。 所以我尝试切换使用哪些GPIO。 我确定的是,它仅在最低GPIO上的应用配置组设置中运行'GPIO High 4CC Command'或'GPIO Low 4CC Command',而不是在第二个GPIO上运行。 我在每种情况下都为命令设置了ANEG。 如果我在GPIO事件图中设置为:
    GPIO0 =加载应用程序配置设置1
    GPIO1 =加载应用程序配置集2
    然后,当GPIO0变高时,加载High Transition配置并发送ANEG命令;如果我将其转换为low (低),则加载Low Transition配置并发送ANEG命令。
    但如果我切换GPIO1,则会加载配置,但不会发送ANEG命令。 如果我读了下沉容量寄存器,我就会看到它没有任何问题。 我知道ANEG命令没有发送,因为我正在对PD流量进行触发。
    如果我使用GPIO0和GPIO2,则只有GPIO0切换将发送ANEG命令。
    如果我使用GPIO1和GPIO2 (GPIO0设置为禁用),则只有GPIO1切换将发送ANEG命令。
    在所有情况下,配置都会更改,但不会为较高的GPIO发送命令。
    我还尝试移动配置选项,以便应用程序配置组1在1和3之间切换,组2在1和2之间切换。 没关系。 无论分配给哪个选项卡,分配给最低GPIO的配置组都是接收命令发送的配置组。
    因此,使用2.12 和2.15 配置时,我似乎只能期望一个GPIO自动发送命令。

    我可以通过在配置更改后的GPIOS开关之后单独发送命令来解决问题,但再次强调,命令不是由最低GPIO发送的。
    我还尝试了两个GPIO的不同命令,但这没有帮助,第二个GPIO不发送任何命令,即使它们与第一个不同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯,这是令人失望的。 我之前还记得这件事,所以我回到了使用2.10 软件创建的版本。 我更改了所有寄存器,以匹配2.12 和2.15 的项目。 然后我把它下载到我的主板上。 嗯,它是有效的。 我现在可以更改GPIO,我看到ANEG发生。 GPIO0高->来自EVM板的12V;低,回至5V。 GPIO1高->来自EVM板的20V;低,回至5V。
    因此,2.12 & 2.15 软件存在问题,或者我误解了所有这些。 我现在只使用我的2.10 创建的文件,尽管2.10 软件存在其他问题,使其更难使用。
    我将发送由2.10 软件创建的.pjt文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    沃伦,我看到您在2.12 v工具上提到的问题-我们将调查此问题,并随时向您发布进度。

    谢谢,此致,
    Praneet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Warren。  此问题是由配置工具中寄存器的未初始化部分引起的。  固件将'Command Channel to Use for Command (Not Task) Slot'(用于命令(非任务)插槽的命令通道)和'Command Channel to use for Command or Task Slot'(用于命令或任务插槽的命令通道)字段视为8位值,但配置工具将其视为2位值,并使上六位未初始化。

    这将在配置工具模板的下一版本中修复。 此外,固件将被更新以屏蔽上六位。 只需两个更改中的一个即可解决问题,但这两个更改都将应用以提高可靠性。

    有解决此问题的方法和修复方法。  Warren --我将对您发送使用的项目文件应用此修复程序并将其返回给您。  我将为遇到相同问题的其他人发布变通办法和修补程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    解决方法(请注意,只需要应用解决方法或修复方法,不需要同时执行这两项操作。) :
    -----------------------

    当前工具/项目中此问题的解决方法是进入原始视图,找到寄存器0x5E,然后通过将'0x0'写入寄存器的原始值手动将其归零。 这将从寄存器中将uniinitialized段置零。

    然后,用户将需要转到寄存器的字段视图(在左窗格中标记为'杂项配置'),然后手动重新输入每个字段。 请注意,命令/任务插槽现在将显示为"未知(0x0)"。 建议用户从下拉列表中将其中的每一项替换为'!CMD'。 这是向固件发出此插槽中没有命令的正确方式。 '0x0'将产生与提交时相同的效果,但随后被拒绝为无法识别的命令,但最好使用'!CMD'

    进行这些更改后,应保存项目,使用新设置重新刷新系统时,应消除此问题。 请注意,未初始化的字段可能会在以后损坏,例如,如果使用了"从项目导入设置"或"从设备导入设置"操作,则此变通办法不是永久性修复。 永久修复程序也将发布,但涉及的内容更多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    修复(请注意,只需要应用错误或修复,不需要同时执行这两项操作。):

    配置工具的下一个版本(版本高于v.3.05)将更新模板以修复此问题。 为了解决固定配置工具版本的问题,请使用新工具中适用于所用设备的任何模板启动新项目,然后使用“项目-- >从项目导入设置”,将设置从上一个项目导入新项目。 (请注意,仅在新工具中打开旧项目不会解决问题。 项目的设计在工具版本中的行为相同,因此只有更新到最新的模板才能解决问题。)

    为了修复从当前配置工具生成的.pjt文件(这将使此单个项目在该工具的任何版本中都能正常工作),需要将以下行添加到.pjt文件中。 建议使用python编辑器,因为.pjt文件被植入为python模块。 可以使用标准文本编辑器进行编辑,但如果使用标准文本编辑器,则必须使用空格(而不是制表符)实现所有缩进,并且必须小心地精确对齐缩进。

    要修复当前项目,请在项目中找到以下代码段:

    cmdOnlyChannel = register_class.cListDMTerminator (self.register,
    {'name':'Command Channel to Use for Command (Not Task) Slot',
    '偏移':16,
    '位长度':2})

    cmdOnlyChannel.setMaxValue(2)
    cmdOnlyChannel.setReportList(['CMD1 (0x08)','CMD2 (0x09)','CMD3 (0x1E)'])

    self.addChild(cmdOnlyChannel)

    此代码段应保持不变,但直接在下面,请添加以下代码:

    保留= register_class.cForceSetDMTerminal( self.register,{'name':'Reserved',
    '偏移':18,
    '位长度':6,
    'force value'(强制值):int(0),
    '强制显示':'保留,设置0'})

    self.addChild (保留)
    reserved.setFromInt(0)
    reserved.hide()

    然后找到下一个代码段(应该是项目中的下一个代码)

    TaskcmdChannel = register_class.cListDMTerminator (self.register,
    {'name':'Command Channel to use for Command or Task Slot',
    '偏移':24,
    '位长度':2})

    cmdTaskChannel.setMaxValue(2)
    cmdTaskChannel.setReportList(['CMD1 (0x08)','CMD2 (0x09)','CMD3 (0x1E)'])

    self.addChild(cmdTaskChannel)

    同样,此代码段未更改,但正位于其下方,请添加以下内容。 请注意,这与上面添加的代码略有不同,因为它具有不同的偏移量。

    保留= register_class.cForceSetDMTerminal( self.register,{'name':'Reserved',
    '偏移':26,
    '位长度':6,
    'force value'(强制值):int(0),
    '强制显示':'保留,设置0'})

    self.addChild (保留)
    reserved.setFromInt(0)
    reserved.hide()
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我终于回到这个地方,创建了一个使用2个GPIO线路的映像,它是基于3.05 软件的。 我从零开始,它仍然存在无法识别第二个GPIO的问题。 然后清除寄存器0x53,更新所有其他配置字段,并使用!CMD。 当我使用此校正图像时,它工作正常,我可以切换主板上的第一个GPIO,看到它在5V和12V之间切换(具有EVM设置=6),然后切换第二个GPIO,看到EVM在5V和20V之间切换。
    感谢您的回答;配置工具的版本3.05 仍需要此功能。