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.

Revision:
5:57bbd3728fd0
Parent:
4:98c76c7b8020
Child:
6:f245fce762f6
--- a/DRV8301.h	Tue Nov 24 13:50:20 2015 +0000
+++ b/DRV8301.h	Sat Nov 28 10:59:46 2015 +0000
@@ -3,41 +3,104 @@
 
 #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 input;
-        
-        void startup(); 
-        void setCurrentLimit(uint8_t input);
-        void setGain(uint8_t input);
-        void setPWMNumber(uint8_t input);
-        void setOCPMode(uint8_t input);
-        void setOCTW(uint8_t input);
-        uint16_t getRegister1();
-        uint16_t getRegister2();
-        uint16_t readStatReg1();
-        uint16_t readStatReg2();
-    private:
-//varijable
-        DigitalOut cs;
-        DigitalOut mosi;
-        DigitalIn miso;
-        DigitalOut sck;
-        DigitalOut en_gate;
-        uint16_t register1;
-        uint16_t register2;
-        int maskPWM;
-        int maskOCP;
-        int maskOCTW;
-        int maskGain;
-        int maskCurrentLimit;
-        uint16_t statReg1;
-        uint16_t statReg2;
-        uint16_t registerStatus1;
-        uint16_t registerStatus2;
-//funkcije       
         
         
+        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
\ No newline at end of file