Other Parts Discussed in Thread: BQ79600EVM, MSPM0G3507, BQ79616
器件型号: LP-MSPM0G3507
Thread 中讨论的其他器件: MSPM0G3507、BQ79600EVM、 BQ79616
TI 团队大家好、
我正在使用的系统 MSPM0G3507 MCU 通过 SPI 连接到 A BQ79600EVM (桥)、它驱动 BQ79616 堆叠‑Q1 AFE 器件。
我目前在唤醒后的第一次写入过程中会看到 SPI 通信问题。 具体地说、 MOSI 线路 (MSPM0 SPI1_PICO) 在最后一个发送位之后‑Z 变为高电平 、结果为 慢速模拟 RC‑(类似上升) 而不是数字高电平。 由于 BQ79600 在空闲时要求 MOSI 保持逻辑高电平、因此桥接器会保持 不会 发送 WAKE 音调、第一个 BQ79616 保持关断状态 (DVDD/CVDD = 0V )。
这种效果是可见的 放置在 MCU 引脚上 (PB8)、‑这不是板级问题。
系统设置程序
MCU:MSPM0G3507
- SPI1
- PB9 = SCLK
- PB8 = MOSI/PICO
- PB7 = MISO/POCI
- PB6 = NCS/CS0
- PB1 = SPI_RDY 输入
- VIO = 3.3V
- SPI 配置:
- 4MHz
- Motorola 4‑导线
- CPOL = 0、CPHA = 0
- 8‑位
- MSB‑优先
桥接和堆栈
- BQ79600EVM(配置为桥接器)
- BQ79616‑Q1 菊花‑链
- 应用了正确的唤醒序列(两个 GPIO 唤醒脉冲)
问题描述
在两次手动唤醒 ping (PB8 + PB6 被驱动为 GPIO) 之后、电桥会正确唤醒并 SPI_RDY 变为高电平 。
接下来、我发送以下 SPI 写入:
WriteReg(0, CONTROL1, 0x20, 1, FRMWRT_SGL_W)
Bytes on MOSI: 90 00 03 09 20 CRC_L CRC_H
在此帧期间:
- SCLK 正确((4MHz、总共 56 个时钟)
- nCS 在整个帧内保持低电平
- 当 SCLK 处于有效状态时、MOSI 上的数据位正确
- 在最后一位之后 、PB8 上的 MOSI 变为 ‑Ω 阻抗持续数微秒
- 波形显示了 RC 斜升回 3.3V 、而不是主动驱动的数字‘1’
- ‑MOSI 没有保持有效逻辑 μ A 高电平、因此 BQ79600 忽略 SEND_WAKE 命令 并且未生成 WAKE 音调
我已确认:
- SCLK、nCS 和位时序正确
- 在启用 SPI 之前、唤醒后从 GPIO 恢复到 SPI 的引脚多路复用
- 调用 DL_SPI_ENABLE()
- 我等了
DL_SPI_isBusy() == false - 我在 DE‑将 nCS 置为有效之前添加了额外的基于 NOP 的延迟
- MOSI 上的内部拉电阻设置为“无电阻“
- 会对 PB8 执行手动 GPIO 切换 清晰锐利的数字边缘 仅当引脚→SPI 模式时才会发生 Δ V 问题
不会改变 MOSI 上升缓慢。
示波器捕获
紫色= nCS
黄色= MOSI/PB8

黄色波形清楚地显示了 SCLK 期间正确的位切换、然后是 慢速模拟上升 发送一个脉冲。
这强烈建议使用 MSPM0 SPI 外设 将 MOSI 线路 (PICO) 释放到高电平‑Z 传输完成后。
目标
我需要 MOSI 在 SPI 帧结束时保持定义的逻辑高电平、以便 BQ79600 成功执行CONTROL1.SEND_WAKE并发出 WAKE 音调、从而使第一个 BQ79616 退出 SHUTDOWN 模式。
乐意在需要时提供 SPI 代码、寄存器设置或其他波形。
感谢您的支持!
