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.

[参考译文] TPS65987D:首次使用产品中的主机 I2C 为 PD 控制器刷新空白专用 SPI 内存

Guru**** 2611705 points
Other Parts Discussed in Thread: TPS65988

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1088185/tps65987d-flashing-blank-dedicated-spi-memory-for-pd-controller-for-the-first-time-using-host-i2c-in-product

部件号:TPS65987D
“线程”中讨论的其它部件:TPS65987TPS65988

您好,Team,

我们正在努力使用基于 SoC 的主机验证 TPS65987 PD 控制器。

我们知道,我们可以使用更新 SPI 闪存上的区域(0和1)

(基于 I2C 的 TPS65987和 TPS65988 SPI 闪存固件更新) SLVAE21A.pdf。

但我们在这里发现,SPI 闪存应使用 Fullflash.bin 进行预闪存,以获得正确的区域指针和标题。

但我们的情况是,我们将在与 TPS65987相连的生产板上放置空白 SPI。 我们希望在系统启动后通过程序向 fullflash.bin 刷新 SPI。 我们将实施功能,以检查 SPI 是否在后续启动期间闪存。

现在,如果 SPI 闪存中没有配置,TPS 控制器的状态将是什么。 当我遇到问题时,它是否允许读/写4CC 寄存器。 当我尝试使用主板在整个 SPI 范围内写入0xFF 时。

下面是我尝试将 Fullflash.bin 写入 SPI 时的状态,当 SPI 闪存中没有配置时,我在寄存器0x08中写入和读取4CC 命令时遇到问题。

=========================================================

#### 以前的状态#####

IIC 读取 Regadrs = 0x0F

旧版本号(0xDD.MM.mm.BB)= 0xf7.07.10.08。

IIC 读取 Regadrs = 0x2D

PatchHeaderErr (位0):0
《蜘蛛侠》(第3位):1.
尝试 Region0 (位4):1.
Region1尝试(位5):0

#### 通过写入0xFF ##########擦除 SPI 闪存后的状态

IIC 读取 Regadrs = 0x0F

旧版本号(0xDD.MM.mm.BB)= 0xf7.07.10.00。

IIC 读取 Regadrs = 0x2D

PatchHeaderErr (位0):0
《蜘蛛侠》(第3位):1.
尝试 Region0 (位4):1.
Region1已尝试(位5):1.

=========================================================

现在无法再次刷新 SPI,因为“FLr”“FLem”“FLad”“FLwd”没有响应。

因此,问题简单

  • 在生产阶段,通过主机 I2C 从 TPS65987通过 full-flash.bin 闪存空白 SPI 闪存是否有影响? (我们没有计划使用单独的闪烁方法)
  • 如果是,请建议正确的文档,代码片段并提供建议(如果有)?  

谢谢

吉里什·夏尔马

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

    吉里什,您好!

    执行 FLad 时,您是否设置了正确的地址?

    我认为该命令应该可行,但您可能需要输入正确的数据。 地址是32位小端点值。

    您可以检查0x08寄存器和0x09寄存器的回读字节。 如果该字节为0x00,则表示该命令成功执行。

    谢谢。

    必应

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

    谢谢必应,

    是的,您是正确的,在发布此标签后,我发现由于从地址在擦除 SPI 闪存后发生更改。

    由于 Slaveadddress 在一些函数调用中是硬代码,所以我面临这个问题。

    好的,现在请通过查看我的以下步骤(主题为“本主题”),让我知道我是否正在使用 fullflash.bin 刷新 SPI

    -将地址0x00000000传递到 FLad,然后将  字节传递到 FLwd,以64字节为单位写入 fullflash_array.c 字节,直到 fullflash_array.c 的大小达到 SPI。

    ——这种方法对我用 fullflash.bin 闪存 SPI 是否有效?

    由于 SPI 闪存为空白,并且没有可用的区域指针。

    谢谢

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

    您好,Chirag,

    我理解您的要求。 您想一次刷新闪存,不想一次又一次更改低地址/高地址吗?

    我认为可以按你的要求行事。 但是,我们设置的高/低区域闪烁规则是在闪烁期间降低失败率。 我们可以确保在一个地区成功实现闪存后,我们可以开始闪存另一个地区。

    谢谢。

    必应