工具与软件:
大家好!
我目前正在使用 BQ79600开发 BMS、因此使用评估板。 我 n´t 通过 SPI 唤醒它、并根据软件设计参考正确构建帧、但当我尝试读取自动寻址的虚拟读取时、由于 SPI 就绪引脚被拉至高电平、我的编程被卡住。 附件是我发送的第一个读取帧的图片。
提前感谢
此致
卢卡斯
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.
工具与软件:
大家好!
我目前正在使用 BQ79600开发 BMS、因此使用评估板。 我 n´t 通过 SPI 唤醒它、并根据软件设计参考正确构建帧、但当我尝试读取自动寻址的虚拟读取时、由于 SPI 就绪引脚被拉至高电平、我的编程被卡住。 附件是我发送的第一个读取帧的图片。
提前感谢
此致
卢卡斯
嘿 Ben、这是自动寻址过程的一部分、我们将按照《软件设计参考》的说明操作。 由于 SPI_Rdy 引脚变高、我们还在自行开发的硬件上测试了软件、测试过程似乎不存在问题。 因此、我认为这必须与硬件相关。
我们的发送订单为:
BQ_SendFrame (BQ_STACK_WRITE、1、0、0x2030、0xFF);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN1、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN2、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN3、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN4、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN5、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN6、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN7、0);
BQ_SendFrame (BQ_STACK_WRITE、1、0、OTP_ECC_DATAIN8、0);
BQ_SendFrame (BQ_broadcast_write、1、0、control1、1);
for (int i = 0;i <= BQ_NBR_OF_DEVICES;I++){
BQ_SendFrame (BQ_BROADCAST_WRITE、1、0、DIR0_ADDR、I);
}
BQ_SendFrame (BQ_broadcast_write、1、0、COMM_CTRL、2);
BQ_SendFrame (BQ_single_device_write、1、BQ_NBR_of_devices、COMM_CTRL、3);
int8_t buffer [BQ_NBR_of_devices + 1];
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN1、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN2、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN3、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN4、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN5、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN6、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN7、0、缓冲器);
BQ_ReciveFrame (BQ_STACK_READ、0、OTP_ECC_DATAIN8、0、缓冲器);
BQ_ReciveFrame (BQ_SINGLE_DEVICE_READ、0、0x2001、0、缓冲器);
此致、
卢卡斯
Ben、
我们有一个采用 STM32F407VGT6的自开发 PCB、在该 PCB 上 SPI_RDY 引脚执行其应有的操作、但 MISO/SOMI 始终为高电平。 另一方面、我们有 BQ79600-EVM030、在其上可以看到所描述的在我们发送读取帧时 SPI_RDY 引脚出现故障的问题
因为我在将上传的文件上传到 Google Drive 时遇到了问题
EVAL 文件是您可以想象的来自评估板的文件、而主文件是我们的 PCB 设计文件之一。
我希望这有助于理解我们的问题。
此致、
卢卡斯
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的逻辑分析仪捕获图。
此致、
本
Lukas,
唤醒 ping 来自 nCS 线路、而不是 MOSI 线路。 在您的日志中、nCS 处于低电平的时间过长、以至于它无法唤醒器件。 如果您使用的是 EVM、则在成功唤醒器件时、绿色和红色 LED 应亮起。 此外、您必须等待 3.5ms 让桥接器件唤醒、然后才能向其发送命令。 此外、您需要在将 WAKE 命令发送到堆栈后等待堆栈器件唤醒、然后才能向堆栈器件发送命令。 每个堆栈器件至少必须等待10ms。 最后、此日志中不清楚哪个通道是 SPI_RDY。 通道7与通道3是重复的、所有其他通道均为空或已考虑在内。
此致、
本
Lukas,
在您发送给我的日志中、我们可以清楚地看到单个器件读取到桥接器件(器件0)后按预期工作:
当 SPI_RDY 线路接收到读取命令的 INIT 字节时被拉至低电平、一段时间后、当桥接器件指示它已准备好发送响应帧时、SPI_RDY 线路会被拉至高电平。
不过、一旦 SPI_RDY 为高电平、BQ79600会期望下拉 nCS 并发送时钟以发送响应。 当再次尝试器件1单次读取时、已完成此操作:
但出于某种原因、器件0没有启用该功能。
此外、器件1的读取命令将在自动寻址后才起作用。 请在从器件0读取数据后发送时钟、并更改器件1读取、直到尝试自动寻址。
此致、
本