Tool/software:
Hello team,
We are working DRV8711 stepper motor driver with STM32F429IGT6 controller for our application. When we work with the driver, it automatically stopped after running few minutes. We are configured all registers as per driver's datasheet. There is no fault indication in driver when motor not run. So we are using oscilloscope to see the data in driver's SDATI and SCLK lines. We see the data what we send. Then we send register address for to read the our already configured data, BUT in the SDATO line there is no data available in the waveform. Here we added configuration registers of driver and waveforms for your reference.
Our PCB design with Driver for your reference.
Our configuration in DRV8711 registers,
// CTRL REGISTER (Address = 0x00)
CTRLn.DTIME = 0x11; // Dead time 850ns
CTRLn.ISGAIN = 0x01; // gain 10
CTRLn.EXSTALL = 0x00; // Internal stall detect
CTRLn.MODE = 0x0100; // 16 Steps
CTRLn.RSTEP = 0x00; // No Action
CTRLn.RDIR = 0x00; // Direction set by DIR Pin
CTRLn.ENBL = 0x01; // Enable Motor
// TORQUE REGISTER (Address = 0x01)
TORQUEn.TORQUE = 0xFF; // Sets full-scale output current for both H-bridges
TORQUEn.SMPLTH = 0x001; // Back EMF sample threshold 100 µs
// OFF REGISTER (Address = 0x02)
OFFn.TOFF = 0x30; // As per the data sheet Default value
OFFn.PWMMODE = 0x00; // Use internal indexer
// BLANK REGISTER (Address = 0x03)
BLANKn.TBLANK = 0x80; // As per the data sheet Default value
BLANKn.ABT = 0x00; // Disable adaptive blanking time
// DECAY REGISTER (Address = 0x04)
DECAYn.TDECAY = 0x10; // As per the data sheet Default value
DECAYn.DECMOD = 0x101; // Use auto mixed decay at all times
// STALL Register (Address = 0x05)
STALLn.SDTHR = 0x40; // As per the data sheet Default value
STALLn.SDCNT = 0x00; // Default value STALLn asserted on first step with back EMF below SDTHR
STALLn.VDIV = 0x00; // Default STALLn asserted on first step with back EMF below SDTHR
// DRIVE Register (Address = 0x06)
DRIVEn.OCPTH = 0X01; // ocp threshold 500 mv
DRIVEn.OCPDEG = 0x11; // 8 - us
DRIVEn.TDRIVEN = 0x01; // Low-side gate drive time 500 ns
DRIVEn.TDRIVEP = 0x01; // High-side gate drive time 500 ns
DRIVEn.IDRIVEN = 0x10;// 300 mA
DRIVEn.IDRIVEP = 0x10;// 150 mA
// STATUS Register (Address = 0x07)
// All are Normal Operation
STATUSn.OTS = 0x00;
STATUSn.AOCP = 0x00;
STATUSn.BOCP = 0x00;
STATUSn.APDF = 0x00;
STATUSn.BPDF = 0x00;
STATUSn.UVLO = 0x01;
STATUSn.STD = 0x00;
STATUSn.STDLAT = 0x00;
We send the command 0x8000 to read the configured register value. Here below waveform is SDATI and SCLK line. We configured SPI mode is CPHA=0 & CPOL=0. After one byte of transmission we receive one bit as High. Is this waveform is correct, Kindly check .
We send the command 0x8000 to read the configured register value. Here below waveform is SDATI and SCLK line. We configured SPI mode is CPHA=1 & CPOL=1. After one byte of transmission there is no High. Kindly check .
Here this waveform, we received when we read a register of 0x8000. All time we receive the same waveform in SDATO line. We configured SPI mode is CPHA=1 & CPOL=1.
Please Find the waveforms we have attached and what we made mistakes and help me to resolve the issue. Which type we need to set SPI mode in our master configuration. Can you please give me a guidance for to solve the issues. Our SCLK ,SDATI and SDATO lines are pulldown state.