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/DRV8308: i cant communition with drv8308 and tm4c1294ncpdti board using internal registor pwm mode

Part Number: DRV8308

Tool/software: Code Composer Studio

i cant communition with drv8308 and tm4c1294ncpdti board using internal registor pwm mode

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_ssi.h"
#include "inc/hw_types.h"
#include "driverlib/ssi.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"

uint32_t ui32SysClkFreq;

#define NUM_SSI_DATA 12
uint8_t pui8DataTx[NUM_SSI_DATA];
uint8_t pui8DataTxdataMSB[NUM_SSI_DATA];
uint8_t pui8DataTxdataLSB[NUM_SSI_DATA];


int main(void)
{
uint32_t ui32Index;
uint32_t ui32Data;

ui32SysClkFreq = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);

SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3);
GPIOPinConfigure(GPIO_PA2_SSI0CLK);
// GPIOPinConfigure(GPIO_PA3_SSI0FSS);
GPIOPinConfigure(GPIO_PA4_SSI0XDAT0);
GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_4|GPIO_PIN_2);

SSIConfigSetExpClk(SSI0_BASE, ui32SysClkFreq, SSI_FRF_MOTO_MODE_1, SSI_MODE_MASTER, 1000000, 8);
SSIEnable(SSI0_BASE);


//
// Initialize address byte0
//
pui8DataTx[0] = 0x00;
pui8DataTx[1] = 0x01;
pui8DataTx[2] = 0x02;
pui8DataTx[3] = 0x03;
pui8DataTx[4] = 0x04;
pui8DataTx[5] = 0x05;
pui8DataTx[6] = 0x06;
pui8DataTx[7] = 0x07;
pui8DataTx[8] = 0x08;
pui8DataTx[9] = 0x09;
pui8DataTx[10] = 0x0A;
pui8DataTx[11] = 0x0B;

//tx data for msb data byte1

pui8DataTxdataMSB[0] = 0x20;
pui8DataTxdataMSB[1] = 0x00;
pui8DataTxdataMSB[2] = 0x03;
pui8DataTxdataMSB[3] = 0x65;
pui8DataTxdataMSB[4] = 0x02;
pui8DataTxdataMSB[5] = 0x10;
pui8DataTxdataMSB[6] = 0x14;
pui8DataTxdataMSB[7] = 0x03;
pui8DataTxdataMSB[8] = 0x11;
pui8DataTxdataMSB[9] = 0x32;
pui8DataTxdataMSB[10] = 0xF4;
pui8DataTxdataMSB[11] = 0x0F;

//tx data for Lsb data byte2

pui8DataTxdataLSB[0] = 0x11;
pui8DataTxdataLSB[1] = 0x57;
pui8DataTxdataLSB[2] = 0xB4;
pui8DataTxdataLSB[3] = 0xDC;
pui8DataTxdataLSB[4] = 0x55;
pui8DataTxdataLSB[5] = 0x5B;
pui8DataTxdataLSB[6] = 0xB1;
pui8DataTxdataLSB[7] = 0xB6;
pui8DataTxdataLSB[8] = 0x2C;
pui8DataTxdataLSB[9] = 0x58;
pui8DataTxdataLSB[10] = 0x79;
pui8DataTxdataLSB[11] = 0xA0;

while(1)
{
for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
{
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,0x00);
ui32Data =ui32Index;
// SSIDataPut(SSI0_BASE, 0x00);
SSIDataPut(SSI0_BASE, pui8DataTx[ui32Data]);
SSIDataPut(SSI0_BASE, pui8DataTxdataMSB[ui32Data]);
SSIDataPut(SSI0_BASE, pui8DataTxdataLSB[ui32Data]);

/* for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
{
ui32Data =ui32Index;
SSIDataPut(SSI0_BASE, *pui8DataTxdataMSB[ui32Data]);

for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
{
ui32Data =ui32Index;
SSIDataPut(SSI0_BASE, *pui8DataTxdataLSB[ui32Data]);
}
}
*/
GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,GPIO_PIN_3);
// SSIBusy(SSI0_BASE)
while(SSIBusy(SSI0_BASE))
{
}
}
}
}

  • Govind,

    Please post a scope image of your SPI transaction showing SCLK, SDI, SDO, and nSCS.

    Regards,

    -Adam

  • i am few changes in my  code after that i got that type of signal.

    #include <stdint.h>
    #include <stdbool.h>
    #include "inc/hw_memmap.h"
    #include "inc/hw_ssi.h"
    #include "inc/hw_types.h"
    #include "driverlib/ssi.h"
    #include "driverlib/gpio.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/sysctl.h"

    uint32_t ui32SysClkFreq;

    #define NUM_SSI_DATA 12
    uint8_t pui8DataTx[NUM_SSI_DATA];
    uint8_t pui8DataTxdataMSB[NUM_SSI_DATA];
    uint8_t pui8DataTxdataLSB[NUM_SSI_DATA];


    int main(void)
    {
    uint32_t ui32Index;
    uint32_t ui32Data;

    ui32SysClkFreq = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 120000000);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_3);
    GPIOPinConfigure(GPIO_PA2_SSI0CLK);
    // GPIOPinConfigure(GPIO_PA3_SSI0FSS);
    GPIOPinConfigure(GPIO_PA4_SSI0XDAT0);
    GPIOPinTypeSSI(GPIO_PORTA_BASE,GPIO_PIN_4|GPIO_PIN_2);

    SSIConfigSetExpClk(SSI0_BASE, ui32SysClkFreq, SSI_FRF_MOTO_MODE_1, SSI_MODE_MASTER, 1000000, 8);
    SSIEnable(SSI0_BASE);


    //
    // Initialize address byte0
    //
    pui8DataTx[0] = 0x00;
    pui8DataTx[1] = 0x01;
    pui8DataTx[2] = 0x02;
    pui8DataTx[3] = 0x03;
    pui8DataTx[4] = 0x04;
    pui8DataTx[5] = 0x05;
    pui8DataTx[6] = 0x06;
    pui8DataTx[7] = 0x07;
    pui8DataTx[8] = 0x08;
    pui8DataTx[9] = 0x09;
    pui8DataTx[10] = 0x0A;
    pui8DataTx[11] = 0x0B;

    //tx data for msb data byte1

    pui8DataTxdataMSB[0] = 0x20;
    pui8DataTxdataMSB[1] = 0x00;
    pui8DataTxdataMSB[2] = 0x03;
    pui8DataTxdataMSB[3] = 0x65;
    pui8DataTxdataMSB[4] = 0x02;
    pui8DataTxdataMSB[5] = 0x10;
    pui8DataTxdataMSB[6] = 0x14;
    pui8DataTxdataMSB[7] = 0x03;
    pui8DataTxdataMSB[8] = 0x11;
    pui8DataTxdataMSB[9] = 0x32;
    pui8DataTxdataMSB[10] = 0xF4;
    pui8DataTxdataMSB[11] = 0x0F;

    //tx data for Lsb data byte2

    pui8DataTxdataLSB[0] = 0xA3;
    pui8DataTxdataLSB[1] = 0x57;
    pui8DataTxdataLSB[2] = 0xB4;
    pui8DataTxdataLSB[3] = 0xDC;
    pui8DataTxdataLSB[4] = 0x55;
    pui8DataTxdataLSB[5] = 0x5B;
    pui8DataTxdataLSB[6] = 0xB1;
    pui8DataTxdataLSB[7] = 0xB6;
    pui8DataTxdataLSB[8] = 0x2C;
    pui8DataTxdataLSB[9] = 0x58;
    pui8DataTxdataLSB[10] = 0x79;
    pui8DataTxdataLSB[11] = 0xA0;

    while(1)
    {
    for(ui32Index = 0; ui32Index < NUM_SSI_DATA; ui32Index++)
    {
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,GPIO_PIN_3);
    ui32Data =ui32Index;
    // SSIDataPut(SSI0_BASE, 0x00);
    SSIDataPut(SSI0_BASE, pui8DataTx[ui32Data]);
    while(SSIBusy(SSI0_BASE));
    SSIDataPut(SSI0_BASE, pui8DataTxdataMSB[ui32Data]);
    while(SSIBusy(SSI0_BASE));
    SSIDataPut(SSI0_BASE, pui8DataTxdataLSB[ui32Data]);

    while(SSIBusy(SSI0_BASE));
    GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,0x00);
    // SSIBusy(SSI0_BASE)
    // while(SSIBusy(SSI0_BASE)) { }
    }
    }
    }

  • Thank you for helping me out; I really appreciate your kindness and support.