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.

[参考译文] MSPM0G3507-Q1:基于 ARM 的微控制器论坛

Guru**** 2393725 points
Other Parts Discussed in Thread: BQ79600-Q1, MSPM0G3507, BQ79600EVM, BQ78706

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1511461/mspm0g3507-q1-arm-based-microcontrollers-forum

器件型号:MSPM0G3507-Q1
主题中讨论的其他器件:MSPM0G3507、BQ79600-Q1、 BQ78706

工具/软件:

我在 BMS 项目中遇到了菊花链通信问题!

BMS 系统配置

整个 BMS 系统包含 MCU (MSPM0G3507)、BQ79600和 BQ79758芯片。MCU 通过 SPI 与 BQ79600通信。BQ79600通过变压器通过 COMHP/COMHN 引脚连接到 BQ79758、而 BQ79758的 COMLP 和 COMLN 引脚保持断开状态。--

编程程序

上电后、根据 BQ79600-Q1软件设计参考手册执行唤醒和自动地址分配:
1. 唤醒 BQ79600 :验证 DVDDand AVDD 电压是否上升到指定的范围、确认是否成功唤醒。
2. 发送音调信号 :使用图1中的波形唤醒 BQ79758。监视其 DVDD/AVDD 电压以确认唤醒。
3. 执行自动寻址功能

//*************************
//自动寻址序列
//*************************
空 SpiAutoAddress (空)

//虚拟写入 SNCHRONIZEALL 菊花链器件 DLL (如果发生器件复位)
SpiWriteReg (0、OTP_ECC_DATAIN1、0x00、1、FRMWRT_STK_W);
...[类似的写入 DATAIN2-DATAIN8]

//启用自动寻址模式
SpiWriteReg (0、CONTROL1、0x01、1、FRMWRT_ALL_W);

//为每个板设置地址
for (currentBoard=0;currentBoard<TOTALBOARDS;currentBoard++)

SpiWriteReg (0、DIR0_ADDR、currentBoard、1、FRMWRT_ALL_W);
}

//广播写入以将 ALLDEVICES 设置为堆栈器件
SpiWriteReg (0、COMM_CTRL、0x02、1、FRMWRT_ALL_W);

//将栈中最高的器件设置为栈顶和栈顶
SpiWriteReg (TOTALBOARDS-1、COMM_CTRL、0x03、1、FRMWRT_SGL_W);

//SYNCRHONIZE 带一个抛出读取的 DLL
SpiReadReg (0、OTP_ECC_DATAIN1、autoaddr_Response_frame、1、0、 FRMWRT_STK_R);
[DATAIN2-DATAIN8]

//可选:读回所有设备地址
for (currentBoard=0;currentBoard<TOTALBOARDS;currentBoard++)

SpiReadReg (currentBoard、DIR0_ADDR、autoaddr_response_frame_Base、1、0 FRMWRT_SGL_R);
}

//可选:验证寄存器0x2001 = 0x14
SpiReadReg (0、0x2001、autoaddr_Response_frame、1、0、 FRMWRT_SGL_R);
返回;
}
执行该函数后、将发送以下命令:
WriteReg (0、0x2005、0x0、1、FRMWRT_SGL_W);
WriteReg (0、0x700、0xA5、1、FRMWRT_ALL_W);
延迟(20);
WriteReg (0、0x701、0x20、1、FRMWRT_ALL_W);
WriteReg (0、FAULT_MSK2、0x40、1、WriteType);

发现问题

执行上述函数后、BQ79758意外进入 关断模式 2秒后(DVDD/AVDD 电压降至0)。

故障排除步骤

  1. SPI 通信测试 :通过写入/读取寄存器验证 BQ79600-Q1 MCU SPI 通信。 确认了通过 Tone 信号唤醒 BQ79758。
  2. 禁用超时命令 :在 BQ79758唤醒后立即尝试发送关闭超时禁用命令:
    WriteReg (0、0x2005、0x0、1、FRMWRT_SGL_W);
    WriteReg (0、0x700、0xA5、1、FRMWRT_ALL_W);
    延迟(20);
    WriteReg (0、0x701、0x20、1、FRMWRT_ALL_W);
    WriteReg (0、FAULT_MSK2、0x40、1、WriteType);
    结果 : BQ79758在2秒后仍然关闭。
  3. 寄存器读回
    • BQ79600EVM 的 DIR0_ADDR 和0x2001寄存器可读。
    • BQ79758的 DIR0_ADDR 寄存器 不可读

      关键问题

      1. 唤醒确认 : DVDD/AVDD 电压是否足以确认 BQ79758唤醒? 尽管存在有效电压、芯片能否保持无响应?
      2. 超时禁用时序 :根据数据表、在唤醒后立即发送超时禁用命令是否有效? 如果是、为什么仍然会发生关机?
      3. 有效命令定义 :什么构成重置2秒超时的"有效命令"? 虚拟写入(例如时钟同步)是否被视为有效?
      4. 菊花链行为
        • 如果链中的最后一个 BQ79758接收到命令、这是否意味着上游器件正常工作?
        • BQ79758可以在不处理命令的情况下转发命令(例如、由于 CRC 错误)吗?
      5. SPI RDY 引脚问题 :在自动寻址期间、SPI RDY 引脚保持低电平、直到 COMM-CLEAR。 虚拟寄存器读取是否会在下游传播导致这种情况?
      6. MCU SPI FIFO 清除 :如何在发送虚拟数据之前清除 MSPM0G3507的 SPI FIFO? 函数名称/文件位置?
      7. 菊花链波形 :请求详细的差分信号波形(阈值、字节/位时序)。


                                                                                   

      其他帮助

      请就上述几点提供指导。

      谢谢!

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

    来自 MSPM0侧的输入:

    您可以从此页面下载 BQ78706示例代码: https://www.ti.com/product/BQ78706

    https://www.ti.com/tool/download/TIDA-HVBMS-ESS-PLTFRM-FW

    MSPM0使用 UART 与 BQ78706底部器件通信。

    您可以参考唤醒步骤。

    [引述 userid="616436" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1511461/mspm0g3507-q1-arm-based-microcontrollers-forum MCU SPI FIFO 清除 :如何在发送虚拟数据之前清除 MSPM0G3507的 SPI FIFO? 函数名称/文件位置?

    在 spi.h 中使用此 API:DL_SPI_drainRXFIFO8

    C:\ti\mspm0_sdk_2_04_00_06\source\ti\driverlib

    ----------------------------

    对于另一个问题、我会将此票证循环给 BMS。

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

    尊敬的 Hu:

    问题是以下之一:

    1. BQ79600 COMH 和 BQ79758 COML 之间的隔离原理图不正确。

    2. BQ79600与 BQ79758之间的一个隔离元件未完全焊接

    3. BQ79758电源存在电流限制。 因此、BQ79758可以唤醒、但 BQ79758无法响应。

    4.发送通信时、BAT 低于9V 或 NPN 的集电极引脚低于8V。

    您是否可以使用示波器为我提供 BQ7758在通信期间的 COMLP 电压屏幕截图? 如果您可以看到 BQ79600向 BQ79758发送数据、您能否放大并显示菊花链字节是什么样子的?  

    此致、

    David Ray

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

    您好、David:


            非常感谢! 根据您的指导、菊花链上已经有通信。 如您所述、BQ79758芯片的 COMH 连接到 BQ79600芯片的 COMH。

    此致、
    Hu Liao