Because of the holidays, TI E2E™ design support forum responses will be delayed from Dec. 25 through Jan. 2. Thank you for your patience.

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.

CCS: DRV8301 SPI Communication, MISO is not working.

Other Parts Discussed in Thread: DRV8301, TMS320F28377D

Tool/software: Code Composer Studio

we try to use the DRV8301 and do the spi communication, but we can not receive the message from MISO.

mcu : TMS320F28377D

CLk : 2.5MHz

EN_GATE is set to high.

Yellow : MISO

Green : MOSI

BLUE : CLK

LED : CS

SPI Setup Code is 

void SPI_init()
{
SPI_disableModule(SPIB_BASE);
SPI_setConfig(SPIB_BASE, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0,
SPI_MODE_MASTER, 2500000, 16);
SPI_enableFIFO(SPIB_BASE);
SPI_resetTxFIFO(SPIB_BASE);

SPI_enableTalk(SPIB_BASE);
SPI_disableLoopback(SPIB_BASE);
SPI_setEmulationMode(SPIB_BASE, SPI_EMULATION_FREE_RUN);
SPI_enableModule(SPIB_BASE);

}

and our schematics of DRV8301

What is the problem?. Could you plz help us for reading the registers.

Thanks for a quick reply.

Best regards.

  • I find out the following: 

    This is the DVDD Pin. according to the datasheet, DVDD pin should be output 3.3V.

    but the signal is not stable and so strange.

    This pin is the AVDD. I think this pin should be output 6V. but this pin is also strange.

  • You might take a look at the link below that has reference hardware design files and implementation codes for DRV8301.

    https://www.ti.com/tool/BOOSTXL-DRV8301

    The following code is for your reference if you are using the driverlib based configuration.

    // Must put SPI into reset before configuring it
    SPI_disableModule(obj->spiHandle);

    // SPI configuration. Use a 500kHz SPICLK and 16-bit word size, 25MHz LSPCLK
    SPI_setConfig(obj->spiHandle, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0,
    SPI_MODE_MASTER, 400000, 16);

    SPI_disableLoopback(obj->spiHandle);

    SPI_setEmulationMode(obj->spiHandle, SPI_EMULATION_FREE_RUN);

    SPI_enableFIFO(obj->spiHandle);
    SPI_setTxFifoTransmitDelay(obj->spiHandle, 0x10);

    SPI_clearInterruptStatus(obj->spiHandle, SPI_INT_TXFF);

    // Configuration complete. Enable the module.
    SPI_enableModule(obj->spiHandle);

  • Hi Yanming Luo

    thanks for your reply. 

    I have questions

    as you seen my reply about DVDD AVDD, is that right? 

    DVDD voltage are look like sine wave and Vrms is almost 3.714v. is that right?

    Thank you for your reply.

    -Garam Park

  • we've tried to your code, but still miso is not working.

    - Garam Park-

  • You might take a look at the reference schematic and the datasheet of the DRV8301, make sure the DRV8301 works well first. I forward your thread to the expert of the DRV device. 

  • Hello Garam,

    Yes, these waveforms for AVDD and DVDD are the root cause. Unfortunately, these are generated internally so there's not a whole lot to check. Most of the time, its because of:

    1. Assembly issues
      1. Specifically with bad pin contact and the power pad not making good contact
    2. Bad layout
      1. Specifically, the GND for the pins are long, skinny, or jump through a lot of vias and capacitors are far away from the pin
    3. Incorrect capacitor values, or ones that have been derated

    That is in order of likelihood.

    Assembly Issues:

    This one is very tough to prove and mostly systematic to check. I would recommend:

    • Replace the DRV8301 and seeing if the issue disappears
    • Using a known good board, and swapping the device to a known good board to see if the issue follows the part. Then swapping the device back to the original board to see if assembly was the issue (assuming it works well on the 2nd board). This is known as an ABA swap
    • Comparing the waveforms to an EVM (as I assume you're using your own board) and checking your FW on the EVM

    Once you have tried some of these, we can review your layout and see if we can make some improvements.

    Best,

    -Cole

  • thanks for your reply.

    we have solved that.

    we exchanged the capacitors of AVDD, DVDD, GVDD to more higher capacitor.

    then, we got the result of stable AVDD, DVDD, GVDD. 

    But we still had remained the problem. 

    GH_X output was nothing. so, we've changed the bootstrap cap to lower than before.

    we solved all problems.

    Thank you.