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.

DRV8301: SPI Communications Problems

Part Number: DRV8301

Hello,

I am currently working on a BLDC motor controller project using the DRV8301. The chip works great, except I can quite seem to be able to correctly communicate with DRV8301 via SPI. While I am receiving data back on the MISO line, the data does not make much sense to me. Figure 1 below shows a screen capture of the communications.

Two Frames of SPI Data

The MISO reply from the DRV8301 is 0x7E00. One part of this response is promising, no frame error bit (bit 15)! However, the reply states the address (contained within bits 14:11)  is 0x0F. This doesnt seem to be possible since the DRV8301 only has 4 registers (addresses 0x00 to 0x03). What is equally worrying is that no matter what address I request in the previous MOSI frame, the DRV8301 replies with same confusing message.

I have read other posts on the forums related to SPI connection issues when interfacing with the DRV8301. As far as I can tell, I am not having the same issues as they are. I have also read the datasheet top to bottom a number of times, but found nothing related to my problem.

Any advice would be appreciated! 

  • Hi Tommydag,

    Would you please try to read control register 1 (Address 0x02) twice? The last 11 bits should be 10000000000. If it is not, would you please slow the SCLK to determine if there could be a problem with the read timing?
  • Rick,

    Thanks for taking the time to address my question. Sorry I am getting back to you so late. 

    When I first encountered this issue, I also slowed down the SPI bus. The results were no different. However, I figured it would not hurt to slow it down again to help rule out timing issues. Below is a screen capture of what I am getting when I slow the clock down to 100kHz (instead of 5MHz) and only request control register 1 (Address 0x02). 

    As you can see, the results are the same. Instead of the last 11 bits being 100 0000 0000, they are 110 0000 0000. 

    In looking for the cause of the problem, I found that the first two frames I receive back from the DRV8301 after startup both read all zeros. At first believed that I was trying to talk to the chip before it had fully booted. However, I tried delaying the first message sent to the DRV8301 until 2 seconds after power-on and found that the first 2 frames were still zero.

    Please let me know if you have any other ideas which I should try. Tomorrow, I will hopefully be getting in another populated board. I plan to test the communications on that board to see if I am experiencing the same problem.

    Thanks, 
    Tom

  • Hi Tom,

    There is one more item to try. Please zoom in to see the rising and falling edges of the SCLK and other signals at the DRV8301. Do the rising and falling edges rise then dip or fall then rise before reaching the final logic level?

    Please let us know the results from the second populated board.
  • Rick, 

    Below are two different screen captures of the rising and falling edges of the signal. These screen captures were taken on one of the new boards I assembled. The signals do not seem to rise or dip in any significant way, but maybe you might be able to catch something I am not seeing. I have also reduced the slew rate of the microcontroller pins to limit the effects of overshoot on the lines. There was no change.

    While at first I thought this might be a software problem, I am beginning to think that the problem must be occurring in hardware. If you would like, I can upload a copy of the schematic and a pdf of the board. 

    Thanks, 

    Tom

  • Hi Tom,

    Do you have access to any version of a DRV8301 EVM (Boosterpack or regular EVM)? If you do, please look for differences.

    If that does not work, you can upload a copy of the schematic. Ideally the layout would be preferred over the pdf of the board.