主题中讨论的其他器件:INA228、 BQSTUDIO、、、、 ISO1641
您好!
在我的电路中、我使用 BQ7694202PFBR IC 来测量8节电池的电芯电压。
问题是我的 I2C 扫描仪在0x08地址上找到它、但根据我的理解、它应该是0x10? 有什么想法吗?
非常感谢、
此致、
Dejan。
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.
您好!
在我的电路中、我使用 BQ7694202PFBR IC 来测量8节电池的电芯电压。
问题是我的 I2C 扫描仪在0x08地址上找到它、但根据我的理解、它应该是0x10? 有什么想法吗?
非常感谢、
此致、
Dejan。
您好!
我还有一个问题。 在同一 I2C 总线上、我有三个 INA228A IC 和一个 BQ7694202 IC。 INA228器件具有7位地址:0x44、0x45、0x47、wheras BQ 具有7位地址:0x08。
看起来存在一些"共存问题"、因为我使用的 I2C 扫描仪在没有任何问题的情况下找到总线上的所有 INA 地址、而对于 BQ 则不是很容易-我收到一条消息:地址0x08错误处存在未知器件。
如果我从 PCB 中卸载所有 INA、I2C 扫描仪会在0x08地址找到器件、而不会出现任何错误。 我看到的唯一区别是 INA IC 不具有 CRC、而 BQ IC 具有 CRC。 不确定是否可以为默认具有 CRC 的 BQ7694202PBFR 器件禁用 CRC?
非常感谢、此致、Dejan。
Dejan、您好!
您可以更改 设置:配置:通信类型 对于 I2C 100kHz、设置为0x07;对于 I2C 400kHz、设置为0x08、两者都没有 CRC。
我建议阅读 第9.2节 的 TRM以了解有关操作方法的更多详细信息。
您还可以考虑将该信息保存在 OTP 中(指向与之相关的常见问题解答的链接)、因为通信类型将在器件复位时重置为默认值。
此致、
马克斯·韦博肯
您好!
我购买了 BQ76942EVM 板、因为我认为对安装在板上的 BQ7694202 IC (具有启用的 CRC 和3.3V REG1 LDO)进行编程会更容易、但看起来 BQSTUDIO 无法识别启用了 CRC 的 IC?
我还购买了一些禁用了 CRC 的基本 BQ76942 IC、但默认情况下也禁用了 REG1 LDO。 我正在搜索命令列表、但在 BQSTUDIO 中没有看到任何旨在启用寄存器中 REG1 LDO 的命令? 我是否需要手动写入命令? 另外、我还要搜索命令来更改器件的 I2C 地址。 我想我还需要手动写它吗?
首先、我要更改 I2C 地址并在寄存器中启用 REG1、在确保一切正常后、我要对 OTP 进行编程。
编辑//
我在"数据存储器"部分找到了更改 I2C 地址和 REG 值的可能性。
看起来大多数值(包括 I2C 地址)在数据存储器中默认为零。 不过、我试图更改 I2C 地址、然后点击了 Write_All 按钮、但似乎 I2C 地址没有更改。 是否仅在点击"Program OTP"按钮后才发生更改? 在编程 OTP 之前、我是否需要填写所有字段(例如 CFETOFF Pin Config、DCHG Pin Config ...)、或者我是否可以仅对所需字段进行编程? 我之所以问这个问题、是因为大多数字段都是零、我不确定如果在对 OTP 进行编程之前未更改它们的值会发生什么情况。
非常感谢、
此致、
Dejan。
Dejan、您好!
bqStudio 应能与 I2C CRC 配合使用。 您能否仔细查看此常见问题解答中的步骤: (+)[FAQ] BQ76952EVM:为什么我的 BQ769x2器件无法与 BQStudio 连接? -电源管理论坛-电源管理- TI E2E 支持论坛
bqStudio 需要注意的一点是、每个窗口会异步运行。 因此、我们建议在写入数据存储器时关闭寄存器窗口中的扫描功能、以防止 I2C 总线上的任何冲突。 您应该不需要将地址写入 OTP、您应该能够发送 SWAP_COMM_MODE 子命令以更改地址。 请注意、如果器件复位、该地址将恢复为默认值。
您能向我介绍一下您要更改地址的步骤吗?
此致、
马克斯·韦博肯
您好、Max:
我解决了一个问题,看起来在后台有另一个同时运行的程序实例,正在引起一个问题。
在"数据存储器"部分放入新的 I2C 地址后、在依次按 Write_All 和 SWAP_COMM_MODE 按钮后更改地址。 我还尝试了更改 REG12和 REG0寄存器值、并且可以确认我只需按 Write_All 按钮即可更改 LDO 稳压器的输出。
这个问题仍然悬而未决–在我对所选的 I2C 地址、REG12和 REG0值感到满意后...-我可以仅将所需寄存器的值编程到 OTP、还是需要正确填写所有寄存器的字段(甚至不会使用所有功能) 例如 DFETOFF pin config、TS3 pin config、...,然后写入 OTP?
在写入 OTP 之前或在对设置感到满意时、是否需要执行任何特殊的程序、我只需按"Program OTP"按钮、就这么简单吗? BQ76942 IC 由8S 电池供电、因此 BAT 引脚上存在大约30-32V 的电压。
有什么想法、为什么 I2C 以100kHz 运行、I2C 以更高频率运行?
非常感谢、此致、Dejan。
Dejan、您好!
很高兴听到问题得到解决!
您可以对特定寄存器的 OTP 进行编程。 除了我之前链接的几个回复中详细介绍的 OTP 常见问题解答外、不应有任何特殊过程、最值得注意的是 BAT 引脚应处于12V。 如果您尚未阅读、建议快速阅读。
至此、您应该只需点击"Program OTP"按钮、UI 便会告知您是否需要执行任何操作。
如果系统无法满足400kHz 时序要求(上升时间、高电平时间等)、则可以使用100kHz I2C 速度设置。
此致、
马克斯·韦博肯
您好、Max:
我在寄存器中进行了更改:
REG12配置:00 (默认值)-> 0D (新值)
REG0配置:00 (默认值)-> 01 (新值)
I2C 地址::00 (默认值)-> 60 (新值)
ALERT Pin Config::00 (默认值)-> 29 (新值)
TS1配置:07 (默认值)-> 0b (新值)
一切都按配置运行、这真的很棒!
此外、我只想禁用关断和睡眠模式、在为 BQ76942的 BAT/LD 引脚供电后、器件会直接进入正常模式并保持该模式、直到电池断开。 这是通过12进行配置的。 位(SHUT_TS2)和8。 寄存器 Settings:Configuration:Power Config?的位(睡眠) 我假设该值为12。 该寄存器的位必须为1 (而不是默认的0)和8。 位必须为0 (而不是默认为1)才能实现预期操作。
我现在要解决的最大问题是、BQ76942似乎与放在同一 I2C 总线上的 INA228器件或 LT3960 (I2C 到 CAN 物理收发器)不"兼容"。
方框图(器件的 I2C 地址用红色显示):
如果我将 I2C 扫描器连接到 MCU 的 I2C 侧(显示为蓝色的数字1)或 LT3960从属的 I2C 侧(显示为蓝色的数字2)、则没有区别、我每次从 I2C 扫描器获得相同的输出:
正在扫描...
地址0x30上的未知错误
在地址0x44中找到 I2C 器件 !
在地址0x45中找到 I2C 器件 !
在地址0x47中找到 I2C 器件 !
完成
您可以看到、器件0x30 (BQ76942)已检测到、但该地址存在未知错误。 我还尝试从 MCU 的 I2C 端与 BQ76942器件进行通信、但通信无法正常运行- BQSTUDIO 未检测到任何器件。
仅当我在 BQ752 I2C 侧运行 I2C 扫描仪时(以蓝色显示的数字3)、我得到了下一个结果:
正在扫描...
在地址0x30找到 I2C 器件 !
完成
在这种情况下、可以正确检测到器件、并且在该地址没有任何错误。 顺便说一下、不能从 I2C 总线的这一侧检测到其他 I2C 器件是完全正确的、因为 ISO1641隔离器将时钟仅从1侧传递到2侧、而不是相反。 当 EVM 板连接到 I2C 总线的这一侧时、BQSTUDIO 会检测到 BQ76942、而不会出现任何问题。
说实话、我不确定 BQ76942是否与同一总线上的 INA228不兼容(由隔离器分隔)、或者与 LT3960 I2C 至 CAN 收发器不兼容。 我还尝试消除放置在 BQ76942的 I2C 侧和 INA228的 I2C 侧(0x44和0x45)之间的 I2C 隔离器、但结果是相同的-在地址0x30检测到错误。 这意味着隔离器不是问题的根源。 我还使用了示波器来检查 I2C 波形上是否有异常、但 SDA 和 SCL 波形看起来都很好。
我还尝试将 BQ 的 Comm Type 设置从默认值(0x00)更改为(0x07)和(0x08)、以检查更高的速度是否会有所帮助、但没有区别、仍然是相同的输出、在0x30地址检测到错误。
LT3960数据表中 提及的(第16页)发送显性超时功能可通过增加 SCL 频率来解决。 正如我提到过的-我曾尝试增加 SCL 频率、但问题仍然存在。
您是否有任何想法会导致此类问题?
//添加::: 2023年22月11日18:30 UTC
我将深入探究 ISO1641隔离器和 LT3960 I2C 至 CAN 收发器的数据表。 虽然文中提到这两个 IC 都不支持时钟拉伸、但 BQ76942器件似乎偶尔会进行时钟拉伸。 我现在想,这可能是一个问题,但它不是完全确定,因为地址上的错误也被检测到,当隔离器被拆除和 I2C 扫描器连接到从 LT3960设备的 I2C 侧...
BQ76942在读取电池电压期间是否执行时钟延展? BQ76942的数据表中提到了 Settings:Configuration:Comm Idle Time ...设置会降低时钟延展频率、该设置会怎样?
非常感谢、
此致、
Dejan。
Dejan、您好!
禁用 SLEEP 模式与设置 Settings:Configuration:Power Config [SLEEP]= 0一样简单。 SHUT_TS2位不会禁用 SHUTDOWN 模式、而只是禁用将 TS2用作唤醒信号。 禁用 SHUTDOWN 模式更为深入。 我建议浏览此常见问题解答( 链接)、了解可将设备置于 SHUTDOWN 模式、然后在设置中禁用每个故障的不同故障列表。
当器件正在获取数据或处于忙碌状态时、该器件可能会进行时钟延展。 这可能是这种行为的根源。 我不知道增加 Comm Idle 时间是否会解决此问题、因为这只会允许 HFO 继续运行更长时间、但在第一个事务(在总线上检测到器件)中、 由于 I2C 可能已经处于空闲状态、可能不会产生影响。
您可能需要尝试同时读取 MCU 和 bq76942上的 I2C 总线波形、以便比较并查看在任一方向是否有任何损失。
在边注中、我们通常要求 将与原始问题不直接相关的任何问题放入新帖子中、以便我们进行跟踪、并为遇到类似问题的任何人提供更好的可见性。 我已经回答过这个问题、无需这么做、但将来、请在自己的主题中提出任何新的/相关问题。
此致、
马克斯·韦博肯