Incomplete library for configuration of a DRV8301 pre-driver through a SPI interface.

DRV8301 is 3-Phase Brushless Motor Pre-Driver with Dual Current Sense Amps and Buck Converter (PWM Ctrl w/ SPI). Please find more information on Texas Instruments web pages and datasheet.

DRV8301.cpp

Committer:
pantunovi
Date:
2015-11-21
Revision:
0:2825ac4882fd
Child:
2:bdca7d22b783

File content as of revision 0:2825ac4882fd:

#include "DRV8301.h"

DRV8301::DRV8301(PinName mosi, PinName miso, PinName sck) : MOSI(mosi), MISO(miso), SCK(sck){
    startup();
    input = 0;
    }

//funkcija za ograničernje struje


void DRV8301::setCurrentLimit(uint8_t input){
    uint16_t register1;
    maskCurrentLimit = 0xF83F;
    register1 &= maskCurrentLimit;
    register1 |= input << 6;
    }
 
//funkcija za input PWM ulaza

void DRV8301::setPWMNumber(uint8_t input){
    uint16_t register1;
    maskPWM = 0xFFF7;
    register1 &= maskPWM;
    register1 |= input << 3;
    }
    
//funkcija za input mod OCP-a

void DRV8301::setOCPMode(uint8_t input){
    uint16_t register1;
    maskOCP = 0xFFCF;
    register1 &= maskOCP;
    register1 |= input << 4;
    }

//funkcija za input mod OCTW-a 


void DRV8301::setOCTW(uint8_t input){
    uint16_t register2;
    maskOCTW = 0xFFFC;
    register2 &= maskOCTW;
    register2 |= input;
    }
    
//funkcija za pojačanje

void DRV8301::setGain(uint8_t input){
    uint16_t register2;
    maskGain = 0xFFF3;
    register2 &= maskGain;
    register2 |= input << 2;
    }

//funkcija za dobivanje stanja u registru 1

uint16_t getRegister1(){
    uint16_t register1;
    return register1;
    }
   
// funkcija za dobivanje stanja u registru 2

uint16_t getRegister2(){
    uint16_t register2;
    return register2;
    }

//funkcija za pokretanje (reboot) DRV-a
    
void DRV8301::startup(){
    EN_GATE = 0;
    wait_us (25);
    EN_GATE = 1;
    }