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
- Committer:
- pantunovi
- Date:
- 2015-11-28
- Revision:
- 5:57bbd3728fd0
- Parent:
- 4:98c76c7b8020
- Child:
- 6:f245fce762f6
File content as of revision 5:57bbd3728fd0:
#ifndef DRV8301_H #define DRV8301_H #include "mbed.h" /** DRV8301 klasa izrađena za potrebe završnog rada. * Koristi se za pokretanje i podešavanje postavki predupravljača DRV8301 pisanjem pomoću SPI sučelja izravno u kontrolne registre predupravljača * 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 * koji obuhvaća predupravljač DRV8301 i mbed LPC1768 */ class DRV8301{ public: /** instancira DRV8301 */ DRV8301(PinName cs, PinName mosi, PinName miso, PinName sck, PinName en_gate); uint8_t inputCL; uint8_t inputGain; uint8_t inputPWMNumber; uint8_t inputOCPMode; uint8_t inputOCTWMode; uint8_t inputGateCurrent; //korištene funkcije /** Postavlja ograničenje struje u željenu vrijednost definirane prema tablici 13 u datasheetu DRV8301 @param inputCL Broj koji unese korisnik kako bi odabrao koje ograničenje struje želi postaviti definiran prema tablici 13 u datasheetu DRV8301 uzimajući drain-to-source napon i računajući iznos struje */ void setCurrentLimit(uint8_t inputCL); /** Postavlja pojačanje integriranih pojačala na 10, 20, 40 ili 80 V/V @param inputGain Broj kojega korisnik unosi kako bi odabrao željeni iznos pojačanja prema tablici 12 u datasheetu DRV8301 */ void setGain(uint8_t inputGain); /** Postavlja željeni broj PWM signala (6 ili 3) @param inputPWMNumber Broj koji korisnik unosi na osnovu kojega se prema tablici 11 u datasheetu DRV8301 odabire broj PWM signala */ void setPWMNumber(uint8_t inputPWMNumber); /** Postavlja prekostrujnu zaštitu predupravljača na jedan od četiri moguća moda: Current limit, OC latch shutdown, Report only, OC disabled prema tablici 11 u datasheetu DRV8301 @param inputOCPMode Broj kojega korisnik unosi koji određuje koji mod prekostrujne zaštite aktivirati prema tablici 11 u datasheetu DRV8301 */ void setOCPMode(uint8_t inputOCPMode); /** Postavlja što će OCTW pin javljati u slučaju detektirane pogreške: prekomjernu struju i temperaturu, prekomjernu struju ili prekomjernu temperaturu, @param inputOCTWMode Broj kojega korisnik unosi koji određuje koji od četiri moda dojave na OCTW pinu će biti aktivan. Četvrti mod je rezerviran za kasnije nadogradnje i zasad nije upotrebljiv */ void setOCTW(uint8_t inputOCTWMode); /** Dohvaća vrijednost spremljenu u kontrolni registar 1 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu controlRegister1 koja se može dalje koristiti */ uint16_t getControlRegister1(); /** Dohvaća vrijednost spremljenu u kontrolni registar 2 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu controlRegister2 koja se može dalje koristiti */ uint16_t getControlRegister2(); /** Dohvaća vrijednost spremljenu u statusni registar 1 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu statusRegister1 koja se može dalje koristiti */ uint16_t getStatusRegister1(); /** Dohvaća vrijednost spremljenu u statusni registar 2 @return vraća kroz SPI 16-bitnu riječ koja se sprema u varijablu statusRegister2 koja se može dalje koristiti */ uint16_t getStatusRegister2(); /** Postavlja ograničenje struje gatea @param inputGateCurrent Broj kojega korisnik unosi koji odrađuje iznos ograničenja struje gatea prema tablici 11 DRV8301 datasheeta. Četvrti mod je rezerviran za kasnije nadogradnje i zasad nije upotrebljiv */ void setGateCurrent(uint8_t inputGateCurrent); private: SPI spi; //korištene varijable DigitalOut cs; //"chip select" digital out line which selects the SPI slave DigitalOut mosi; //"master output slave input" digital out line through which SPI master sends data to the slave DigitalIn miso; //"master input slave output" digital in line through which SPI master receives data from SPI slave DigitalOut sck; //"SPI clock" digital out line, used for synchronizing SPI communication DigitalOut en_gate; //"enable gate" digital out line used to reset the DRV8301 if necessary uint16_t controlRegister1; //control register 1 data is saved here uint16_t controlRegister2; //control register 2 data is saved here uint16_t statusRegister1; //status register 1 data is saved here uint16_t statusRegister2; //status register 2 data is saved here /** reboots the entire DRV8301, shutting down then starting up the pre-driver unlatching faults which will remain unlatched if no fault is still present */ void startup(); }; #endif