Other Parts Discussed in Thread: BQ79616, USB2ANY
Hello,
We are using a BQ79600 as a bridge device betweeen our MCU and multiple BQ79616 devices in a stack to read out cell voltages and temperatures. We use a STM32G431C8T6 as our MCU.
We have followed the datasheet of the BQ79600 for the wake-up, shutdown and auto-adressing sequences. We were succesfull in turning on the BQ79600 with a wake-up ping and turning on the BQ79616 by setting the CONTROL1 register. We were also able to shut down the BQ79616 by setting the CONTROL1 register.
The problems start with the auto-adressing sequence. All stack and individual (dummy) writes seem to be working. The (dummy) reads however do not work. I have included a picture (Read command frame) showing our wave forms when sending the read command frame. This waveform is the result of following function: SpiReadReg(0, OTP_ECC_DATAIN1, response_frame2, 1, STACK_READ);
Within the SpiReadReg function a read command frame write is performed. As seen in the wavefrom the SPI_RDY line goes low 5µs after the first byte (0xA0 = Stack Read) as expected. After this we wait for SPI_RDY to go high with a timeout. SPI_RDY however never goes high and we are forced to perform a COMM_CLEAR which resets the SPI_RDY line correctly.
We have used the TI USB2ANY device to send commands via the BQAutoEval software in which we mirror every spi message send from code. When using the USB2ANY connection we are able to successfully send a read command frame and receive data. In the attached image (TI Eval Board SPI_RDY going High) we see the SPI_RDY line go high after a while. In the attached image (Difference IN Read Command Message) the wavefroms created by our STM32 when performing the read command frame and the waveforms created by the USB2ANY device are shown side by side.
The only difference is that with the USB2ANY the SPI_RDY line eventually goes high while with the STM32 it stays low indefinetly. All previous SPI commands are the same and this is the first read performed.
We are using the motorola SPI mode within the STM32 and are not using NSS but rather setting and resetting the chip select manually in the code. We are using a bit rate of 4.6Mbit/s which is in the 2-6Mbit/s range required by the BQ79600. We are using a custom PCB, we are sure that the BQ79600 turns on by measuring 1.8V on the DVDD pin once the wake-up ping is send. Attached there is a screenshot of our pcb schematic, note that the resistors connecting SIMO,MISO,nCS and SCLK were all changed to 10K in accoradance with the datasheet.
Do you have any idea how to tackle this problem?
We look forward to you answer.