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.
Diff: DRV8301.cpp
- Revision:
- 3:227ecd07b9cd
- Parent:
- 2:bdca7d22b783
- Child:
- 4:98c76c7b8020
--- a/DRV8301.cpp Mon Nov 23 13:14:48 2015 +0000 +++ b/DRV8301.cpp Tue Nov 24 13:22:30 2015 +0000 @@ -1,11 +1,24 @@ #include "DRV8301.h" +#include "mbed.h" + +SPI spi(p11, p12, p13); -DRV8301::DRV8301(PinName mosi, PinName miso, PinName sck) : MOSI(mosi), MISO(miso), SCK(sck){ +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(); - input = 0; + register1 = spi.write(0x9000); + register2 = spi.write(0x9800); + } -//funkcija za ograničernje struje +//funkcija za ograničenje struje void DRV8301::setCurrentLimit(uint8_t input){ uint16_t register1; @@ -14,7 +27,7 @@ register1 |= input << 6; } -//funkcija za input PWM ulaza +//funkcija za broj PWM ulaza void DRV8301::setPWMNumber(uint8_t input){ uint16_t register1; @@ -23,7 +36,7 @@ register1 |= input << 3; } -//funkcija za input mod OCP-a +//funkcija za mod OCP-a void DRV8301::setOCPMode(uint8_t input){ uint16_t register1; @@ -32,7 +45,7 @@ register1 |= input << 4; } -//funkcija za input mod OCTW-a +//funkcija za mod OCTW-a void DRV8301::setOCTW(uint8_t input){ uint16_t register2; @@ -64,10 +77,25 @@ 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; + en_gate = 0; wait_us (25); - EN_GATE = 1; + en_gate = 1; + wait (1); } \ No newline at end of file