Quantcast
Channel: Motor drivers forum - Recent Threads
Viewing all articles
Browse latest Browse all 15497

CCS/DRV8711: DRV8711 with MSP430g2553

$
0
0

Part Number:DRV8711

Tool/software: Code Composer Studio

Hi all,

I am using DRV8711 for my stepper motor control project. First i tried with MSP430g2553 controller and DRV8711 evaluation kit, its working fine.

Based on that i developed new own board with MSP430G2553 28 pin package and DRV8711. I wrote code for that, my issue is Motor not run even single step.

SPI communication between DRV and MSP is working fine and other I/O's are also working good.

I attached my schematic and program also. I put pullup resistor for nSTALL and RESET pins and i removed all series resistor connected between MSP and DRV8711.

Help anyone to solve this.

Regards

Yuvaraj

int main(void)
{
    Initialize();

    unsigned int i=0,j=5500,x=0;

    P2OUT &= ~nSLEEP;
    P2OUT |= RESET;
    for(i=0;i<1000;i++);
    P2OUT |= nSLEEP;
    P2OUT &= ~RESET;

    P2DIR = (RESET | STEP_AIN1 | nSLEEP);
    P2DIR &= ~nFAULT;
    P3DIR = (CS | DIR_AIN2);//0xff;

    P2OUT |= (RESET | STEP_AIN1 | nSLEEP);
    P3OUT |= (CS | DIR_AIN2);

    P2OUT &= ~RESET;

    while(1)
    {
        if ((nFAULT & P2IN) == 0)
        {
            P2OUT &= ~nSLEEP;
            P2OUT |= RESET;
            for(i=0;i<1000;i++);
            for(i=0;i<1000;i++);
            P2OUT |= nSLEEP;
            for(i=0;i<1000;i++);
            ReadAllRegisters();
            P2OUT &= ~RESET;
        }

        ReadAllRegisters();

        for(i=0;i<j;i++);

        P2OUT |= STEP_AIN1;

        for(i=0;i<j;i++);

         P2OUT &= ~STEP_AIN1;

         if(j<1000)
             j=1000;

    }
}

void Initialize()
{

    WDTCTL = WDTPW | WDTHOLD;
    DCOCTL = 0x00;
    DCOCTL = CALDCO_16MHZ;
    BCSCTL1 = CALBC1_16MHZ;
    BCSCTL2 |= DIVS_3;
    BCSCTL3 |= LFXT1S_2;

    // Configure GPIO
    P2SEL  &= ~(POT | nSLEEP);
    P2SEL2 &= ~(POT | nSLEEP);

    P2DIR = RESET | STEP_AIN1 | nSLEEP;
    P2DIR &= ~nFAULT;
    P3DIR = CS | DIR_AIN2;//0xff;

    P2OUT |= RESET | STEP_AIN1 | nSLEEP;
    P3OUT |= CS | DIR_AIN2;

    UCB0CTL1 = UCSWRST;
    P3DIR |= CS;
    P3OUT &= ~CS;
    P1SEL |= SCLK | SDATO |  SDATI;
    P1SEL2 |= SCLK | SDATO |  SDATI;

    UCB0CTL0 |= UCCKPH | UCMSB | UCMST | UCSYNC;
    UCB0CTL1 |= UCSSEL_2;   // SMCLK
    UCB0CTL1 &= ~UCSWRST;
    // End SPI Configure

    __bis_SR_register(GIE);

    // GUI Composer Monitor Initialization
    ClearBufferRelatedParam();

    // CTRL Register
    G_CTRL_REG.Address     = 0x00;
    G_CTRL_REG.DTIME     = 0x03;
    G_CTRL_REG.ISGAIN     = 0x03;
    G_CTRL_REG.EXSTALL     = 0x00;
    G_CTRL_REG.MODE     = 0x01; //0x03;
    G_CTRL_REG.RSTEP     = 0x00;
    G_CTRL_REG.RDIR     = 0x00;
    G_CTRL_REG.ENBL     = 0x01;

    // TORQUE Register
    G_TORQUE_REG.Address = 0x01;
    G_TORQUE_REG.SIMPLTH = 0x00;
    G_TORQUE_REG.TORQUE  = 0x7f;

    // OFF Register
    G_OFF_REG.Address     = 0x02;
    G_OFF_REG.PWMMODE     = 0x00;
    G_OFF_REG.TOFF         = 0x30;

    // BLANK Register
    G_BLANK_REG.Address = 0x03;
    G_BLANK_REG.ABT     = 0x01;
    G_BLANK_REG.TBLANK     = 0x08;

    // DECAY Register.
    G_DECAY_REG.Address = 0x04;
    G_DECAY_REG.DECMOD  = 0x03;
    G_DECAY_REG.TDECAY     = 0x10;

    // STALL Register
    G_STALL_REG.Address = 0x05;
    G_STALL_REG.VDIV     = 0x03;
    G_STALL_REG.SDCNT     = 0x03;
    G_STALL_REG.SDTHR     = 0x40;

    // DRIVE Register
    G_DRIVE_REG.Address = 0x06;
    G_DRIVE_REG.IDRIVEP = 0x00;
    G_DRIVE_REG.IDRIVEN = 0x00;
    G_DRIVE_REG.TDRIVEP = 0x01;
    G_DRIVE_REG.TDRIVEN = 0x01;
    G_DRIVE_REG.OCPDEG     = 0x01;
    G_DRIVE_REG.OCPTH     = 0x01;

    // STATUS Register
    G_STATUS_REG.Address = 0x07;
    G_STATUS_REG.STDLAT  = 0x00;
    G_STATUS_REG.STD     = 0x00;
    G_STATUS_REG.UVLO    = 0x00;
    G_STATUS_REG.BPDF    = 0x00;
    G_STATUS_REG.APDF    = 0x00;
    G_STATUS_REG.BOCP    = 0x00;
    G_STATUS_REG.AOCP    = 0x00;
    G_STATUS_REG.OTS     = 0x00;

    WriteAllRegisters();
}

void WriteAllRegisters()
{
    unsigned char dataHi = 0x00;
    unsigned char dataLo = 0x00;

    // Write CTRL Register
    dataHi = REGWRITE | (G_CTRL_REG.Address << 4) | (G_CTRL_REG.DTIME << 2) | (G_CTRL_REG.ISGAIN);
    dataLo = (G_CTRL_REG.EXSTALL << 7) | (G_CTRL_REG.MODE << 3) | (G_CTRL_REG.RSTEP << 2) | (G_CTRL_REG.RDIR << 1) | (G_CTRL_REG.ENBL);
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write TORQUE Register
    dataHi = REGWRITE | (G_TORQUE_REG.Address << 4) | (G_TORQUE_REG.SIMPLTH);
    dataLo = G_TORQUE_REG.TORQUE;
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write OFF Register
    dataHi = REGWRITE | (G_OFF_REG.Address << 4) | (G_OFF_REG.PWMMODE);
    dataLo = G_OFF_REG.TOFF;
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write BLANK Register
    dataHi = REGWRITE | (G_BLANK_REG.Address << 4) | (G_BLANK_REG.ABT);
    dataLo = G_BLANK_REG.TBLANK;
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write DECAY Register
    dataHi = REGWRITE | (G_DECAY_REG.Address << 4) | (G_DECAY_REG.DECMOD);
    dataLo = G_DECAY_REG.TDECAY;
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write STALL Register
    dataHi = REGWRITE | (G_STALL_REG.Address << 4) | (G_STALL_REG.VDIV << 2) | (G_STALL_REG.SDCNT);
    dataLo = G_STALL_REG.SDTHR;
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write DRIVE Register
    dataHi = REGWRITE | (G_DRIVE_REG.Address << 4) | (G_DRIVE_REG.IDRIVEP << 2) | (G_DRIVE_REG.IDRIVEN);
    dataLo = (G_DRIVE_REG.TDRIVEP << 6) | (G_DRIVE_REG.TDRIVEN << 4) | (G_DRIVE_REG.OCPDEG << 2) | (G_DRIVE_REG.OCPTH);
    SPI_DRV8711_ReadWrite(dataHi, dataLo);

    // Write STATUS Register
    dataHi = REGWRITE | (G_STATUS_REG.Address << 4);
    dataLo = (G_STATUS_REG.STDLAT << 7) | (G_STATUS_REG.STD << 6) | (G_STATUS_REG.UVLO << 5) | (G_STATUS_REG.BPDF << 4) | (G_STATUS_REG.APDF << 3) | (G_STATUS_REG.BOCP << 2) | (G_STATUS_REG.AOCP << 1) | (G_STATUS_REG.OTS);
    SPI_DRV8711_ReadWrite(dataHi, dataLo);
}


Viewing all articles
Browse latest Browse all 15497

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>