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.

[参考译文] BQ79600EVM:读取帧后 SPI_RDY 不会变为高电平

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

https://e2e.ti.com/support/logic-group/logic/f/logic-forum/1367391/bq79600evm-spi_rdy-does-not-get-high-after-a-read-frame

器件型号:BQ79600EVM

工具与软件:

大家好!

我目前正在使用 BQ79600开发 BMS、因此使用评估板。 我 n´t 通过 SPI 唤醒它、并根据软件设计参考正确构建帧、但当我尝试读取自动寻址的虚拟读取时、由于 SPI 就绪引脚被拉至高电平、我的编程被卡住。 附件是我发送的第一个读取帧的图片。

提前感谢

此致

卢卡斯

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

    由于恶劣的天气干扰了达拉斯地区的电力和电信、因此响应速度至少将推迟到明天。  

    很抱歉给您带来不便。

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

    Lukas,

    此读取命令之前要发送什么内容? 此外、寄存器0x343是一个用于同步 DLL 的内部寄存器、不提供任何有用信息。

    此致、

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

    嘿 Ben、这是自动寻址过程的一部分、我们将按照《软件设计参考》的说明操作。 由于 SPI_Rdy 引脚变高、我们还在自行开发的硬件上测试了软件、测试过程似乎不存在问题。 因此、我认为这必须与硬件相关。
    我们的发送订单为:

    BQ_SendFrame (BQ_STACK_WRITE10、0x2030、0xFF)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN1、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN2、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN3、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN4、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN5、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN6、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN7、0)

    BQ_SendFrame (BQ_STACK_WRITE10、OTP_ECC_DATAIN8、0)

    BQ_SendFrame (BQ_broadcast_write10、control1、1)

    for (int i = 0i <= BQ_NBR_OF_DEVICESI++){

    BQ_SendFrame (BQ_BROADCAST_WRITE、1、0、DIR0_ADDR、I)

    BQ_SendFrame (BQ_broadcast_write10、COMM_CTRL、2)

    BQ_SendFrame (BQ_single_device_write1BQ_NBR_of_devicesCOMM_CTRL、3)

    int8_t buffer [BQ_NBR_of_devices + 1]

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN10缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN20、缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN30缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN4、0、缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN50缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN60缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN70缓冲器)

    BQ_ReciveFrame (BQ_STACK_READ0OTP_ECC_DATAIN80缓冲器)

    BQ_ReciveFrame (BQ_SINGLE_DEVICE_READ0、0x2001、0、缓冲器)

    此致、  

    卢卡斯

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

    Lukas,

    您使用了哪两种硬件设置? 哪一个成功了、哪一个失败了? 您是否可以发送整个逻辑分析仪日志(您可以使用文本框下方的插入按钮将其附加到响应中)?

    此致、

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

    Ben、  
    我们有一个采用 STM32F407VGT6的自开发 PCB、在该 PCB 上 SPI_RDY 引脚执行其应有的操作、但 MISO/SOMI 始终为高电平。 另一方面、我们有 BQ79600-EVM030、在其上可以看到所描述的在我们发送读取帧时 SPI_RDY 引脚出现故障的问题

    因为我在将上传的文件上传到 Google Drive 时遇到了问题  

    EVAL 文件是您可以想象的来自评估板的文件、而主文件是我们的 PCB 设计文件之一。

    我希望这有助于理解我们的问题。

    此致、

    卢卡斯

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

    e2e.ti.com/.../Session-4.sal

    Lukas,

    我发现此日志中存在许多可能导致通信故障的问题:

    1)时钟速度太慢。 根据数据表(链接)的第7.3.2.1.2.2节、您必须具有2 MHz 和6 MHz 之间的时钟速度。 两个日志显示的时钟速度低于1 MHz。

    2)我看不到启动 BQ79600所需的唤醒 ping 的证据、也看不到使其唤醒所需的时间。 所有这些时序信息都可以在数据表的第6.6节中找到。

    3) 3)您还需要在允许 BQ79600唤醒后通过发送命令0x90 00 03 09 20 13 95来唤醒任何堆栈器件。 然后、您需要等待堆栈器件完成唤醒。

    您可以找到连接了一个堆栈器件的 BQ79600的逻辑分析仪捕获图。  

    此致、

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

    Ben、

    我更新脚本根据你的评论,但我仍然没有得到任何答案。 我已经将另一个逻辑分析仪文件上传到我的驱动器中。 也许您看到它的任何其他问题、这可以解决我的问题。 在其中、我用一个标记将注释区域标记为

    此致、

    卢卡斯

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

    Lukas,

    唤醒 ping 来自 nCS 线路、而不是 MOSI 线路。 在您的日志中、nCS 处于低电平的时间过长、以至于它无法唤醒器件。 如果您使用的是 EVM、则在成功唤醒器件时、绿色和红色 LED 应亮起。 此外、您必须等待 3.5ms 让桥接器件唤醒、然后才能向其发送命令。 此外、您需要在将 WAKE 命令发送到堆栈后等待堆栈器件唤醒、然后才能向堆栈器件发送命令。 每个堆栈器件至少必须等待10ms。 最后、此日志中不清楚哪个通道是 SPI_RDY。 通道7与通道3是重复的、所有其他通道均为空或已考虑在内。

    此致、

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

    Ben、

    我修复了您的反馈、并在另一个逻辑分析仪文件中为您注释了通道、在该文件中、您可以清楚地看到、一旦我点击第一个读取命令、SPI rdy 就会被拉低并因未知原因保持在该处。
    我希望您有一些想法、为什么会这样。
    提前感谢

    此致、

    卢卡斯

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

    Lukas,

    您是否可以从器件0和器件1执行单个器件读取、并查看是否存在其他通信故障?

    此致、

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

    尊敬的 Ben:

    我已经对器件0和器件1执行了单个器件读取、并将其上传到驱动器中。

    此致、

    卢卡斯

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

    Lukas,

    在您发送给我的日志中、我们可以清楚地看到单个器件读取到桥接器件(器件0)后按预期工作:

    当 SPI_RDY 线路接收到读取命令的 INIT 字节时被拉至低电平、一段时间后、当桥接器件指示它已准备好发送响应帧时、SPI_RDY 线路会被拉至高电平。  

    不过、一旦 SPI_RDY 为高电平、BQ79600会期望下拉 nCS 并发送时钟以发送响应。 当再次尝试器件1单次读取时、已完成此操作:

    但出于某种原因、器件0没有启用该功能。  

    此外、器件1的读取命令将在自动寻址后才起作用。 请在从器件0读取数据后发送时钟、并更改器件1读取、直到尝试自动寻址。

    此致、

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

    尊敬的 Ben:
    我们解决了这个问题、我首先遇到的问题是、当我更改后、从连接出现故障、我可以在我们自己的 PCB 上执行堆栈读取、而对于评估板、我想在我连接电源时 MISO 线突然跳变、从而导致评估板出现故障。

    感谢您的巨大帮助

    此致、

    卢卡斯