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.

[参考译文] BQ20Z95:如何通过 SMBus (I2C)的 MCU 访问数据闪存?

Guru**** 2428020 points
Other Parts Discussed in Thread: BQ29330

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/663744/bq20z95-how-can-i-access-the-data-flash-through-mcu-by-smbus-i2c

器件型号:BQ20Z95
主题中讨论的其他部件:bq29330BQ20Z90

尊敬的所有人:

如何通过 SMBus (I2C)通过 MCU 访问数据闪存?

读取位序列:

START + 0x16 + ACK + 0x77 + ACK + 0x50 + ACK + 0x00 + ACK + STOP

START + 0x16 + ACK + 0x78 + ACK + RS + 0x17 + ACK +返回 LSB + ACK +返回 MSB + ACK +… 32字节… +停止

写入位序列:

START + 0x16 + ACK+ 0x77 + ACK + 0x50 + ACK + 0x00 + ACK +停止

START + 0x17 + ACK+ 0x78 + ACK + LSB + ACK +… 32字节… +停止

对吗?

谢谢!

 

 

《slu264a_bq20z90-v1.50 + bq29330、bq20z95》:page100 μ m

要将术语电压值写入8.7V、请使用以下序列。

将完整的电量监测-IT 配置子类(子类 ID = 80)读取到 RAM 中:

·写入子类 ID

–SMB 从机地址(0x16)

–SMB CMD 0x77、0x0050作为数据(十进制=80)

·读取子类(需要2个块、因为其长度超过32字节)

SMBSlave 地址(0x16)

–SMB CMD 0x78接收32字节数据

–SMB CMD 0x79接收32字节数据

使用8.7V 覆盖接收到的数据的偏移45:

·用0x21fc (=8700十进制)更新第二个块的偏移45

将完整的子类写回 bq20z90/bq20z95:

·写入子类 ID

–SMB 从机地址(0x16)

–SMB CMD 0x77、0x0050作为数据

·写入子类

–SMB 从机地址(0x17)

–SMB CMD 0x78,32字节数据

–SMB CMD 0x79、带32字节数据

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

    如附录 A:TRM 中的标准 SBS 命令(可在此处找到: http://www.ti.com/lit/sluu264 )所述,首先将子命令写入 Manufacturer Access,然后从 Manufacturer access 中读取结果。 我已写出以下步骤。

    使用 EVSW 时、请转至 Pro 屏幕。

    针对制造商访问(0x00)子命令器件类型(0x0001)

    写入 SMB 字:
    1) SMB:00
    2)字:0001
    3) 3)点击 Write

    阅读 SMB 字:
    1) SMB:00
    2) 2)点击 Read
    3) 3)查看结果

    对于制造商访问(0x00)子命令固件版本(0x0002)

    写入 SMB 字:
    1) SMB:00
    2)字:0002
    3) 3)点击 Write

    阅读 SMB 字:
    1) SMB:00
    2) 2)点击 Read
    3) 3)查看结果

    对于制造商访问(0x00)子命令硬件版本(0x0003)

    写入 SMB 字:
    1) SMB:00
    2)字:0003
    3) 3)点击 Write

    阅读 SMB 字:
    1) SMB 命令:00
    2) 2)点击 Read
    3) 3)查看结果

    读取 ManufacturerData (0x23)

    读取 SMB 块:
    1) SMB:23
    2) 2)点击 Read
    3) 3) ASCII 和十六进制结果将显示在结果字段中。

    写入 ManufacturerData (0x23)

    写入 SMB 块:
    1) SMB:23
    2)块数据:(十六进制的值、每个字节之间有一个空格、例如0123 4567 89AB CD)
    2) 2)点击 Write

    写入和读取数据闪存与使用上面显示的命令类似、但是、数据闪存被组织成子分类、其中每个数据闪存变量在其编号的子类内被分配一个偏移量。

    请确保您的器件未密封、否则数据闪存命令将被编辑

    读取和写入子类数据是每个32字节长的块操作、但数据可以用较短的块大小写入。 请确保您不会写入子类边界。

    使用上面的指令作为如何使用子类命令进行读取和写入的说明性示例、请按照这些步骤操作、但对于 DataFlash 子类 ID、请分别执行0x77和0x78到0x7F、对于 DataFlash 子类页面1-8。

    例如:

    要将术语电压值写入8.7V、请使用以下序列。
    将完整的电量监测-IT 配置子类(子类 ID = 80)读取到 RAM 中:
    •写入子类 ID
    –SMB 从机地址(0x16)
    –SMB CMD 0x77、0x0050作为数据(十进制=80)
    •读取子类(需要2个块、因为其长度超过32字节)
    SMBSlave 地址(0x16)
    –SMB CMD 0x78接收32字节数据
    –SMB CMD 0x79接收32字节数据

    有关更多示例、请参阅此处 http://www.ti.com/lit/sluu264的 TRM 附录 C

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

    您好!
    很抱歉、很显然我没有清楚地解释我的问题。
    我使用 MCU 通过 SMBus 读取 bq20z95的参数。 我没有 EVSW、只是通过 MCU 进行读写。
    我可以使用 SBS Command 和 ManufacturerAccess (0x00)从 bq20z95读取数据。 如 位序列:
    START + 0x16 + ACK+ 0x00 + ACK + Manufacturer Access 子命令 LSB + ACK + Manufacturer Access 子命令 MSB + ACK + Stop
    START + 0x16 + ACK+ 0x00 + ACK + 0x17 + ACK +返回 LSB + ACK +返回 MSB + ACK + STOP
    但我不知道如何将数据写入 bq20z95。 我不知道如何通过 MCU 读取或写入数据闪存。
    此致、

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

    您好、是的、

    请参阅应用手册 《对 bq20zxx 系列电量监测计进行数据闪存编程和校准》。