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.h@5:57bbd3728fd0, 2015-11-28 (annotated)
- Committer:
- pantunovi
- Date:
- Sat Nov 28 10:59:46 2015 +0000
- Revision:
- 5:57bbd3728fd0
- Parent:
- 4:98c76c7b8020
- Child:
- 6:f245fce762f6
Who changed what in which revision?
User | Revision | Line number | New 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 |
pantunovi | 5:57bbd3728fd0 | 9 | * koji obuhvaća predupravljač DRV8301 i mbed LPC1768 |
pantunovi | 5:57bbd3728fd0 | 10 | */ |
pantunovi | 0:2825ac4882fd | 11 | class DRV8301{ |
pantunovi | 0:2825ac4882fd | 12 | public: |
pantunovi | 5:57bbd3728fd0 | 13 | /** instancira DRV8301 |
pantunovi | 5:57bbd3728fd0 | 14 | */ |
pantunovi | 3:227ecd07b9cd | 15 | DRV8301(PinName cs, PinName mosi, PinName miso, PinName sck, PinName en_gate); |
pantunovi | 4:98c76c7b8020 | 16 | |
pantunovi | 3:227ecd07b9cd | 17 | |
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; |
pantunovi | 5:57bbd3728fd0 | 24 | |
pantunovi | 5:57bbd3728fd0 | 25 | |
pantunovi | 5:57bbd3728fd0 | 26 | //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 |
pantunovi | 5:57bbd3728fd0 | 29 | @param inputCL Broj koji unese 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 |
pantunovi | 5:57bbd3728fd0 | 92 | DigitalOut mosi; //"master output slave input" digital out line through which SPI master sends data to the slave |
pantunovi | 5:57bbd3728fd0 | 93 | DigitalIn miso; //"master input slave output" digital in line through which SPI master receives data from SPI slave |
pantunovi | 5:57bbd3728fd0 | 94 | DigitalOut sck; //"SPI clock" digital out line, used for synchronizing SPI communication |
pantunovi | 5:57bbd3728fd0 | 95 | DigitalOut en_gate; //"enable gate" digital out line used to reset the DRV8301 if necessary |
pantunovi | 5:57bbd3728fd0 | 96 | |
pantunovi | 5:57bbd3728fd0 | 97 | uint16_t controlRegister1; //control register 1 data is saved here |
pantunovi | 5:57bbd3728fd0 | 98 | uint16_t controlRegister2; //control register 2 data is saved here |
pantunovi | 5:57bbd3728fd0 | 99 | uint16_t statusRegister1; //status register 1 data is saved here |
pantunovi | 5:57bbd3728fd0 | 100 | uint16_t statusRegister2; //status register 2 data is saved here |
pantunovi | 5:57bbd3728fd0 | 101 | |
pantunovi | 5:57bbd3728fd0 | 102 | /** 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 | 103 | */ |
pantunovi | 5:57bbd3728fd0 | 104 | void startup(); |
pantunovi | 0:2825ac4882fd | 105 | }; |
pantunovi | 0:2825ac4882fd | 106 | #endif |