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.

[参考译文] BQ27Z561:RSOC 更改中断(和固件版本 MESS)的中断配置

Guru**** 1561515 points
Other Parts Discussed in Thread: BQ27Z561-R2, BQ27Z561, EV2400, BQ27Z561-R1
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1312029/bq27z561-interrupt-configuration-for-rsoc-change-interrupts-and-firmware-version-mess

器件型号:BQ27Z561
主题中讨论的其他器件:EV2400

您好!

我正在开发用于 BZ27Z561的驱动程序、并且我会尝试在 RSOC 发生变化时获取中断。 根据 sluubo7、我应该仅将"IO Config"和"SOC delta"中的"INT_EN"设置为非0值。 我同时执行这两项操作("NT_EN"为1、"SOC Delta"设置为1)、 但我从不会收到中断、即使 RSOC 发生了变化(我已通过读取 RelativeStateOfCharge ()进行了验证) 、但我应该解释说我在尝试读取和写入 IC 上的数据闪存时遇到了问题、可以在 https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1310382/bq27z561-issue-with-reading-data-flash/4981582中看到该问题。 长话短说、我所使用的闪存映射我知道的任何数据表中都没有介绍(slubo7中的数据闪存偏移不适用于我的 IC 上的特定固件版本)。 此外、在此闪存映射中、数据闪存中的"IO Config"位置显示为具有以下结构:

GPIO_LEVEL_EN|GPIO_POL|INT_TYPE|INT_PUP|INT_POL|INT_EN|BTP_SRC|BTP_EN
因此、我认为 我出现问题的可能原因有两种:
1.我提供的 Flash 映射与我的固件版本不完全兼容(如上面的原始主题所暗示)
和/或:
2.此闪存映射中"IO Config"的位字段定义中包含某些字段、slubo7中甚至未提及。 什么是"BTP_EN"、"BTP_SRC"、"INT_PUP"或"INT_TYPE_"?  我没能找到的某些 TI 文档中是否对它们进行了介绍?
此时、我对这样一项任务感到非常沮丧、如果 TI 提供的文档不是很好、该任务本来会简单得多。 TI 是否仅支持此 IC 上的部分固件版本? 如果是、是哪些? 如果没有、在哪里可以找到 sluubo7中显然未涵盖的固件版本的更多信息?
谢谢。
博格丹
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bogdan:

    下面是 bq27z561-R2 TRM 中 IO Config 的闪存映射、其结构与您在位说明中描述的结构相同:

    我正在阅读之前的主题、我对您是否能够将 bq27z561升级至 bq27z561-R2感到有点困惑。 您能做到这一点吗?

    此致、

    安东尼·巴尔迪诺

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

    尊敬的 Anthony:

    我无法下载您附加的 Flash 地图、我的浏览器显示一个损坏的链接图标、而不是下载链接。

    也不、我甚至没有尝试升级 BQ 上的固件、因为我没有 EV2400或任何类似的工具。

    谢谢。
    博格丹

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

    尊敬的 Bogdan:

    很抱歉混淆不清、下面的链接是 bq27z561 TRM。 上述闪存映射可在第6.4节"主机中断配置"中找到。

    https://www.ti.com/lit/pdf/sluuc54 

    此致、

    安东尼·巴尔迪诺

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

    尊敬的 Anthony:

    谢谢、我能够进一步使用-R2 RM 中的位字段定义。 一些后续问题:

    -我正在尝试每次 RSOC 变化1%得到一个中断。 为此、我将数据闪存位置"SOC delta threshold"设置为1、并将"IO config"中的 INT_EN 设置为1。 现在、我会在第一次 RSOC 更改时收到一个中断、但进一步更改时没有中断。 在中断处理程序中,我将1写入 SOCDeltaSetThreshold (),但显然这不能清除中断(如-R2 RM 中暗示的那样),或者那里可能发生了其他情况?   RM 第6节("主机中断")中 SOCDeltaSetThreshold ()的文档不明:"可以通过 SOC Delta 初始值配置阈值设置、稍后通过写入标准命令 SOCSetDeltaThreshold ()配置阈值设置。"  这到底意味着什么?

    -在我的 IC 中,从 AltManufacturerAccess ()读取"Device name"会返回"bq27z561",我认为这是指我在器件上有"原始"固件(不是-r1或-r2,至少这是我从 sluubo7中理解的)。 但是、我将使用-R2 RM 的位域(您在上文中发布)、但我在上一期打开的(https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1310382/bq27z561-issue-with-reading-data-flash/4981582)中在.csv 中为我提供了数据闪存偏移、 它们与 sluubo7 (用于原始版本)或 sluuc54b (用于-R2)中的不相似! 我想您会同意我的观点、这是一个完全一团糟的问题。 这让我担忧,因为我不知道会发生什么进一步。 如果 TI 为此 IC 发布了新的固件版本、而我们甚至不知道何时购买了新版本、该怎么办? 我假设数据闪存偏移量在此新固件中会再次发生变化、因此即使我们可能不需要此新固件版本中的功能、我们也必须再次修改驱动程序? 除非我遗漏了一些东西、否则这是一种做事的非常低效的方法。

    谢谢。
    博格丹

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

    尊敬的 Bogdan:

    对于我们的文档给您带来的不便、我深表歉意、我将立即向我们的团队提出这一问题、以使文档更清晰。

    关于 RSOC 中断、我认为将 INT_EN 设置为1并将 SOC 差值阈值设置为1是正确的。 但是、当在中断结束时清除 SOC_Delta 时、我认为应根据 IO 配置中的设置自行清除该位。 我将收到外部理事会关于清除这一位的意见。

    如果可能、您能否告诉我您当前为 IO 配置位设置了哪些内容?

    器件名称通常基于器件的硬件名称、bq27z561和 bq27z561-R2具有相同的硬件。 如果可能、您能否告诉我器件上的固件版本?

    此致、

    安东尼·巴尔迪诺

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

    尊敬的 Anthony:

    感谢您的答复。

    - 我在"IO 配置"中设置以下位:INT_EN、INT_PUP 和 INT_TYPE、其他位清零。
    -在中断处理程序(触发一次)中,我读取 InterrupStatus()(为0x10,确认中断原因确实是 RSOC 的变化),然后我读取 SOCSetDeltaThreshold,并在我读取 SOCDeltaThreshold 后将其设置为1。 这不会使中断再次触发。
    -查询  AltManufacturerAccess() 0x0002得到这个结果(逐字节):

    [0]= 0x15
    [1]= 0x61
    [2]= 0x02
    [3]= 0x01
    [4]= 0x00
    [5]= 0x15
    [6]= 0x02
    [7]= 0x04
    [8]= 0x75
    [9]= 0x02
    [10]= 0x00

    RM 没有解释如何以太多失效方式解释这些内容(例如、我不知道"器件型号"、"版本"或"固件类型"应该是什么意思、  

    谢谢。
    博格丹

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

    尊敬的 Bogdan:

    感谢您的澄清。

    我已经开始通读固件、以了解该中断的功能以及如何设置和清除 SOC_Delta。 我明天会向你介绍我的调查结果。

    关于0x0002读取、数据细分如下、其中最重要的方面是器件编号和版本:

       

    对于器件型号、这会分配该固件用于哪个器件。 读取返回了15 61、这是正确的。 bq27z561和 bq27z561-R2的这一点也是一样的、因为它们共享相同的硬件。

    version 是设备上的固件版本。 读取后返回02 01、即固件的 V2.01。 这是 bq27z561、bq27z561-R1和 bq27z561-R2器件的最新固件版本。 这也是您的闪存映射遵循 bq27z561-R2 TRM 的原因。

    此致、

    安东尼·巴尔迪诺

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

    尊敬的 Anthony:

    再次感谢您的帮助。

    关于器件标识、我仍然感到困惑。 您说:

    >上面的读返回15 61 ,这是正确的。 bq27z561和 bq27z561-R2的这一点也是一样的、因为它们共享相同的硬件。

    我了解到我的器件是 bq27z561或 bq27z561-R2、 然后您说:

    > 这是 bq27z561、bq27z561-R1和 bq27z561-R2器件的最新固件版本

    那么、如果所有3个版本的固件编号相同、我怎么知道我的器件实际上是 bq27z561-R2而不是 bq27z561?

    谢谢。
    博格丹

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

    尊敬的 Bogdan:

    可根据固件版本找到器件。 由于您将 V2.01读取为固件版本、这意味着您使用的是 bq27z561-R2。 很抱歉令人困惑的措辞。

    关于 RSOC 中断、我已经联系固件团队以获得有关如何清除 SOC_Delta 位的说明、我认为这会导致中断问题不再触发。 我将更新他们的答复。

    此致、

    安东尼·巴尔迪诺