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.

DRV8308: DRV8308 - SPI reading problem.

Part Number: DRV8308

At start I read 2A register - default value is 0x018 but I read 0x08.

For a test purpose I write to the register 0x07
write 0x07 - read 0x03
write 0x0F - read 0x07
write 0x09 - read 0x00

So I connected logic analizer and see all signals are good but data on SDATO pin is in phase with SCLK.
But data on the SDATO should be present on falling or rising edge of the SCLK.
This explains why the controller sees one bit less in case of 0111 (0x07) and 1111 (0x0F)
and dosen't see say 0x09 - separated bits.

I have a pull up 10K on SDATO pin.


How should I fix the problem?

  • Hi Evgeny7,

    Would you please provide the same transactions using a scope instead of a logic analyzer?
  • I'll try. I should get 4 channel scope.

    The first picture - reading from the register 0x2A.

    The second one - reading data 0x09 from the register 0x07

    As we see the clock signal is good but the SDATO pin returns a bad signal.

    It looks like some capacitance on the line. But it's a short conductor between pins and quite strong pull-up 10K.

  • Hi Evgeny7,

    Thank you for the scope captures. These provide more information.

    Can you confirm the SPI is operating at 2.5MHz? If this is the case, the pullup resistor may be too large to allow the SDO signal to reach a valid high. Although the SPI clock can operate at a high rate, the system can only operate as fast as the pullup resistor will charge the SDATAO line.

    Please try either slowing the SPI clock to 1MHz, changing the pullup resistor to 3.3k, or both. Slowing the SPI is the easiest.
  • Thank you.