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-24
- Revision:
- 4:98c76c7b8020
- Parent:
- 3:227ecd07b9cd
- Child:
- 5:57bbd3728fd0
File content as of revision 4:98c76c7b8020:
#include "DRV8301.h" #include "mbed.h" SPI spi(p11, p12, p13); DRV8301::DRV8301(PinName pcs, PinName pmosi, PinName pmiso, PinName psck, PinName pen_gate) : cs(pcs), mosi(pmosi), miso(pmiso), sck(psck), en_gate(pen_gate){ SPI spi(pcs, pmosi, pmiso, psck); spi.format(16,1); spi.frequency(1000000); cs = 1; cs = 0; startup(); register1 = spi.write(0x9000); register2 = spi.write(0x9800); } //funkcija za ograničenje struje void DRV8301::setCurrentLimit(uint8_t input){ uint16_t register1; maskCurrentLimit = 0x783F; register1 &= maskCurrentLimit; register1 |= input << 6; } //funkcija za broj PWM ulaza void DRV8301::setPWMNumber(uint8_t input){ uint16_t register1; maskPWM = 0x7FF7; register1 &= maskPWM; register1 |= input << 3; } //funkcija za mod OCP-a void DRV8301::setOCPMode(uint8_t input){ uint16_t register1; maskOCP = 0x7FCF; register1 &= maskOCP; register1 |= input << 4; } //funkcija za mod OCTW-a void DRV8301::setOCTW(uint8_t input){ uint16_t register2; maskOCTW = 0x7FFC; register2 &= maskOCTW; register2 |= input; } //funkcija za pojačanje void DRV8301::setGain(uint8_t input){ uint16_t register2; maskGain = 0x7FF3; register2 &= maskGain; register2 |= input << 2; } //funkcija za dobivanje stanja u registru 1 uint16_t DRV8301::getRegister1(){ uint16_t register1; return register1; } // funkcija za dobivanje stanja u registru 2 uint16_t DRV8301::getRegister2(){ uint16_t register2; return register2; } //funkcija za čitanje statusnog registra 1 uint16_t DRV8301::readStatReg1(){ uint16_t statReg1 = spi.write(0x8000); return statReg1; } //funkcija za čitanje statusnog registra 2 uint16_t DRV8301::readStatReg2(){ uint16_t statReg2 = spi.write(0x8800); return statReg2; } //funkcija za pokretanje (reboot) DRV-a void DRV8301::startup(){ en_gate = 0; wait_us (25); en_gate = 1; wait (1); }