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.

Committer:
tbjazic
Date:
Sat Nov 28 13:47:59 2015 +0000
Revision:
6:f245fce762f6
Parent:
5:57bbd3728fd0
Pogledajte prijedloge za pobolj?anja. Imali ste jo? uvijek zna?ajnih pogre?ki. Da lak?e vidite gdje sam ?to pisao, usporedite posljednje dvije revizije library-a.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pantunovi 0:2825ac4882fd 1 #ifndef DRV8301_H
pantunovi 0:2825ac4882fd 2 #define DRV8301_H
pantunovi 0:2825ac4882fd 3
pantunovi 0:2825ac4882fd 4 #include "mbed.h"
pantunovi 0:2825ac4882fd 5
pantunovi 5:57bbd3728fd0 6 /** DRV8301 klasa izrađena za potrebe završnog rada.
pantunovi 5:57bbd3728fd0 7 * Koristi se za pokretanje i podešavanje postavki predupravljača DRV8301 pisanjem pomoću SPI sučelja izravno u kontrolne registre predupravljača
pantunovi 5:57bbd3728fd0 8 * te čitajući podatke iz statusnih registara kako bi se detektirale pogreške. Ova biblioteka služi kao jednostavno sučelje između korisnika i sustava
tbjazic 6:f245fce762f6 9 * koji obuhvaća predupravljač DRV8301 i mbed mikroupravljač
pantunovi 5:57bbd3728fd0 10 */
pantunovi 0:2825ac4882fd 11 class DRV8301{
pantunovi 0:2825ac4882fd 12 public:
tbjazic 6:f245fce762f6 13 DRV8301();
tbjazic 6:f245fce762f6 14 /** Jasno je da je to konstruktor. Tu navedite opis parametara konstruktora */
pantunovi 3:227ecd07b9cd 15 DRV8301(PinName cs, PinName mosi, PinName miso, PinName sck, PinName en_gate);
pantunovi 4:98c76c7b8020 16
tbjazic 6:f245fce762f6 17 /* TB: potpuno nepotrebne varijable
pantunovi 5:57bbd3728fd0 18 uint8_t inputCL;
pantunovi 5:57bbd3728fd0 19 uint8_t inputGain;
pantunovi 5:57bbd3728fd0 20 uint8_t inputPWMNumber;
pantunovi 5:57bbd3728fd0 21 uint8_t inputOCPMode;
pantunovi 5:57bbd3728fd0 22 uint8_t inputOCTWMode;
pantunovi 5:57bbd3728fd0 23 uint8_t inputGateCurrent;
tbjazic 6:f245fce762f6 24 */
pantunovi 5:57bbd3728fd0 25
tbjazic 6:f245fce762f6 26 /* TB: maknuti//korištene funkcije */
pantunovi 5:57bbd3728fd0 27
pantunovi 5:57bbd3728fd0 28 /** Postavlja ograničenje struje u željenu vrijednost definirane prema tablici 13 u datasheetu DRV8301
tbjazic 6:f245fce762f6 29 @param inputCL Broj od 0 do 31 koji unosi korisnik kako bi odabrao koje ograničenje struje želi postaviti
pantunovi 5:57bbd3728fd0 30 definiran prema tablici 13 u datasheetu DRV8301 uzimajući drain-to-source napon i računajući iznos struje
pantunovi 5:57bbd3728fd0 31 */
pantunovi 5:57bbd3728fd0 32 void setCurrentLimit(uint8_t inputCL);
pantunovi 5:57bbd3728fd0 33
pantunovi 5:57bbd3728fd0 34 /** Postavlja pojačanje integriranih pojačala na 10, 20, 40 ili 80 V/V
pantunovi 5:57bbd3728fd0 35 @param inputGain Broj kojega korisnik unosi kako bi odabrao željeni
pantunovi 5:57bbd3728fd0 36 iznos pojačanja prema tablici 12 u datasheetu DRV8301
pantunovi 5:57bbd3728fd0 37 */
pantunovi 5:57bbd3728fd0 38 void setGain(uint8_t inputGain);
pantunovi 5:57bbd3728fd0 39
pantunovi 5:57bbd3728fd0 40 /** Postavlja željeni broj PWM signala (6 ili 3)
pantunovi 5:57bbd3728fd0 41 @param inputPWMNumber Broj koji korisnik unosi na osnovu kojega se
pantunovi 5:57bbd3728fd0 42 prema tablici 11 u datasheetu DRV8301 odabire broj PWM signala
pantunovi 5:57bbd3728fd0 43 */
pantunovi 5:57bbd3728fd0 44 void setPWMNumber(uint8_t inputPWMNumber);
pantunovi 5:57bbd3728fd0 45
pantunovi 5:57bbd3728fd0 46 /** Postavlja prekostrujnu zaštitu predupravljača na jedan od četiri moguća moda:
pantunovi 5:57bbd3728fd0 47 Current limit, OC latch shutdown, Report only, OC disabled prema tablici 11 u datasheetu DRV8301
pantunovi 5:57bbd3728fd0 48 @param inputOCPMode Broj kojega korisnik unosi koji određuje koji mod prekostrujne zaštite
pantunovi 5:57bbd3728fd0 49 aktivirati prema tablici 11 u datasheetu DRV8301
pantunovi 5:57bbd3728fd0 50 */
pantunovi 5:57bbd3728fd0 51 void setOCPMode(uint8_t inputOCPMode);
pantunovi 5:57bbd3728fd0 52
pantunovi 5:57bbd3728fd0 53 /** Postavlja što će OCTW pin javljati u slučaju detektirane pogreške:
pantunovi 5:57bbd3728fd0 54 prekomjernu struju i temperaturu, prekomjernu struju ili prekomjernu temperaturu,
pantunovi 5:57bbd3728fd0 55 @param inputOCTWMode Broj kojega korisnik unosi koji određuje koji od
pantunovi 5:57bbd3728fd0 56 četiri moda dojave na OCTW pinu će biti aktivan. Četvrti mod je rezerviran za kasnije nadogradnje i zasad nije upotrebljiv
pantunovi 5:57bbd3728fd0 57 */
pantunovi 5:57bbd3728fd0 58 void setOCTW(uint8_t inputOCTWMode);
pantunovi 5:57bbd3728fd0 59
pantunovi 5:57bbd3728fd0 60 /** Dohvaća vrijednost spremljenu u kontrolni registar 1
pantunovi 5:57bbd3728fd0 61 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu controlRegister1 koja se može dalje koristiti
pantunovi 5:57bbd3728fd0 62 */
pantunovi 5:57bbd3728fd0 63 uint16_t getControlRegister1();
pantunovi 5:57bbd3728fd0 64
pantunovi 5:57bbd3728fd0 65 /** Dohvaća vrijednost spremljenu u kontrolni registar 2
pantunovi 5:57bbd3728fd0 66 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu controlRegister2 koja se može dalje koristiti
pantunovi 5:57bbd3728fd0 67 */
pantunovi 5:57bbd3728fd0 68 uint16_t getControlRegister2();
pantunovi 5:57bbd3728fd0 69
pantunovi 5:57bbd3728fd0 70 /** Dohvaća vrijednost spremljenu u statusni registar 1
pantunovi 5:57bbd3728fd0 71 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu statusRegister1 koja se može dalje koristiti
pantunovi 5:57bbd3728fd0 72 */
pantunovi 5:57bbd3728fd0 73 uint16_t getStatusRegister1();
pantunovi 5:57bbd3728fd0 74
pantunovi 5:57bbd3728fd0 75 /** Dohvaća vrijednost spremljenu u statusni registar 2
pantunovi 5:57bbd3728fd0 76 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu statusRegister2 koja se može dalje koristiti
pantunovi 5:57bbd3728fd0 77 */
pantunovi 5:57bbd3728fd0 78 uint16_t getStatusRegister2();
pantunovi 5:57bbd3728fd0 79
pantunovi 5:57bbd3728fd0 80 /** Postavlja ograničenje struje gatea
pantunovi 5:57bbd3728fd0 81 @param inputGateCurrent Broj kojega korisnik unosi koji odrađuje iznos ograničenja
pantunovi 5:57bbd3728fd0 82 struje gatea prema tablici 11 DRV8301 datasheeta. Četvrti mod je rezerviran za kasnije nadogradnje i zasad nije upotrebljiv
pantunovi 5:57bbd3728fd0 83 */
pantunovi 5:57bbd3728fd0 84 void setGateCurrent(uint8_t inputGateCurrent);
pantunovi 5:57bbd3728fd0 85
pantunovi 5:57bbd3728fd0 86 private:
pantunovi 5:57bbd3728fd0 87 SPI spi;
pantunovi 5:57bbd3728fd0 88
pantunovi 5:57bbd3728fd0 89 //korištene varijable
pantunovi 5:57bbd3728fd0 90
pantunovi 5:57bbd3728fd0 91 DigitalOut cs; //"chip select" digital out line which selects the SPI slave
tbjazic 6:f245fce762f6 92 /* TB: nepotrebno jer je to dio spi-a
pantunovi 5:57bbd3728fd0 93 DigitalOut mosi; //"master output slave input" digital out line through which SPI master sends data to the slave
pantunovi 5:57bbd3728fd0 94 DigitalIn miso; //"master input slave output" digital in line through which SPI master receives data from SPI slave
tbjazic 6:f245fce762f6 95 DigitalOut sck; //"SPI clock" digital out line, used for synchronizing SPI communication */
pantunovi 5:57bbd3728fd0 96 DigitalOut en_gate; //"enable gate" digital out line used to reset the DRV8301 if necessary
pantunovi 5:57bbd3728fd0 97
pantunovi 5:57bbd3728fd0 98 uint16_t controlRegister1; //control register 1 data is saved here
pantunovi 5:57bbd3728fd0 99 uint16_t controlRegister2; //control register 2 data is saved here
pantunovi 5:57bbd3728fd0 100 uint16_t statusRegister1; //status register 1 data is saved here
pantunovi 5:57bbd3728fd0 101 uint16_t statusRegister2; //status register 2 data is saved here
pantunovi 5:57bbd3728fd0 102
pantunovi 5:57bbd3728fd0 103 /** reboots the entire DRV8301, shutting down then starting up the pre-driver unlatching faults which will remain unlatched if no fault is still present
pantunovi 5:57bbd3728fd0 104 */
pantunovi 5:57bbd3728fd0 105 void startup();
pantunovi 0:2825ac4882fd 106 };
pantunovi 0:2825ac4882fd 107 #endif