Libs for using Nucleo STM32F411 periphery

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AD5664.h Source File

AD5664.h

00001 #include "mbed.h"
00002 
00003 #ifndef AD5664_h
00004 #define AD5664_h
00005 
00006 /*! Diese Klasse dient zur Ansteuerung des Digital-Analog-Wandlers AD5664 der Firma Analog Devices. Der DAC ist ein 16-Bit Wandler mit 4 Kanälen, Versorgungsspannung von 2,7V bis 5,5V. 
00007 Die Maximale Settling Time beträgt 7µs (AD5664), und die Genauigkeit liegt bei +-12 LSBs maximum. Angesteuert wird er mittels SCLK, CS und MOSI mit maximal 50 MHz. Zuvor muss die SPI-Schnittstelle definiert werden. Die 
00008 Chip Select Schnittstelle kann durch die Initialisierung mit Übergeben werden. Es ist darauf zu achten das der Chip bzw die Library nur den SPI-Modus "1" (CLK Standart auf 0 und übernahme mit fallender Flanke) mit einer Datenbreite von 8-Bit unterstützt.
00009  
00010  * @code
00011  * #include "mbed.h"
00012  * #include "AD5664.h"
00013  *
00014  * SPI interface(PB_5, PB_4, PB_3);         // SPI Interface und Pins (MISO PB.5 , MOSI PB.4, SCLK PB.3) festlegen
00015  *
00016  * int main() {
00017  *    
00018  *     interface.format(8,1);               // Interface Format festlegen: 8-Bit, SPI-Modus 1
00019  *     interface.frequency(1000000);        // Übertragungsgeschwindigkeit 1MHz 
00020  *      
00021  *     AD5664 device(interface, PB_2);     // Eine Instanz des DACs erzeugen, Chipselect ist PB.2
00022  *            
00023  *     device.loadDAC('D', 0x11FF);         // Den Wert 0x11FF in den Kanal D laden
00024  *  
00025  *     device.updateDAC('D');               // Den geladenen Wert am Kanal D ausgeben
00026  *
00027  *     device.writeDAC('A', 0x89BD);        // Den Wert 0x89BD an dem Kanal A direkt ausgeben
00028  *   
00029  *      }
00030  *
00031  * @endcode
00032  */
00033  
00034 class AD5664      
00035 {   
00036     public:
00037     
00038      /*! Konstruktor zum Erstellen einer Instanz für einen vorher spezifizierten SPI-Port und Chip Select-Pin. Nach dem Erstellen dieser Instanz werden alle Ausgänge des DACs auf 0 gesetzt. */
00039      /*!
00040         \param spi Entsprechner SPI-Port (Datenbreite 8 Bit, SPI Modus 1)
00041         \param daccs Pin für Chipselect
00042      */                   
00043     AD5664 (SPI _spi, PinName _daccs);
00044      
00045      
00046         
00047      /*! Funktion zum Beschreiben des Chips mit je 8-Bit. Für genauere Details bitte das Datenblatt lesen*/
00048      /*!
00049         \param instruction <b>Direkte Anweisungen für den AD5664</b><br>
00050                             Die 8 Instruction-Bits sind wie folgt aufgebaut:<br> <br>
00051                             <CENTER> X X C C C A A A </CENTER><br>
00052                             - Die ersten zwei Bits sind don't cares<br> 
00053                             - Die <EM>Befehle C</EM> sind wie fogt aufgebaut<br>
00054                             <ul>  
00055                             <li> 000   Schreibe Input register N</li> 
00056                             <li> 001   Update DAC Register N</li>
00057                             <li> 010   Schreibe Inputregister N und Update alle DAC Register</li>
00058                             <li> 011   Schreibe Inputregister N und Update DAC Register N</li>
00059                             <li> 100   Power Down DAC (siehe Datenblatt)</li>
00060                             <li> 101   Reset (siehe Datenblatt)</li>
00061                             <li> 110   Funktionsregister LDAC (siehe Datenblatt)</li>
00062                             </ul>
00063                             - Die <EM>Adresse A</EM> zum Register N sind wie fogt aufgebaut<br>
00064                             <ul>  
00065                             <li> 000   DAC A</li> 
00066                             <li> 001   DAC B</li>
00067                             <li> 010   DAC C</li>
00068                             <li> 011   DAC B</li>
00069                             <li> 111   All DACs</li>
00070                             </ul>
00071                             
00072         \param data1 <b>Datenbits</b><br>
00073                             ersten 8 Datenbits, bzw. oberen zwei Nibble
00074         \param data2 <b>Datenbits</b><br>
00075                             zweiten 8 Datenbits, bzw. unteren zwei Nibble        
00076      */         
00077     void sendDAC (int instruction, int data1, int data2); 
00078     
00079     /*! Destruktor der Klasse */        
00080     virtual ~AD5664 (){};
00081     
00082     /*! Setzt den Chipselect-Pin des Wandlers auf "select" bzw. wählt diesen aus. */
00083     void SelectCS ();
00084     
00085     /*! Setzt den Chipselect-Pin des Wandlers auf "deselect" bzw. wählt diesen ab. */
00086     void DeselectCS ();
00087     
00088     
00089     
00090     /*! Schreibt ein 16-Bit Wert in den eingestellten Kanal. Der Wert wird direkt in das DAC Register geschrieben und der Wert wird direkt ausgegen. */
00091     /*!
00092         \param channel <b>Einstellung des Ausgewählten Kanals</b><br>
00093                             <ul>  
00094                             <li> A   Beschreibt Kanal A</li> 
00095                             <li> B   Beschreibt Kanal B</li>
00096                             <li> C   Beschreibt Kanal C</li>
00097                             <li> D   Beschreibt Kanal D</li>
00098                             <li> F   Beschreibt alle DACs </li>
00099                             </ul>
00100                             Standartwert, falls ein falscher Kanal angegeben wird ist "F" 
00101         \param value <b>16-Bit Wert</b><br>  Wird Automatisch in zwei 8 Bit Werte angepasst.  
00102      */        
00103     void writeDAC (char channel, int value);    
00104  
00105  
00106  
00107      /*! Lädt ein 16-Bit Wert in den eingestellten Kanal. Der Wert wird direkt in das Inputregister geschrieben und kann mit der updateDAC-Funktion in das DAC-Register geschrieben werden */
00108     /*!
00109         \param channel <b>Einstellung des Ausgewählten Kanals</b><br>
00110                             <ul>  
00111                             <li> A   Lädt Kanal A</li> 
00112                             <li> B   Lädt Kanal B</li>
00113                             <li> C   Lädt Kanal C</li>
00114                             <li> D   Lädt Kanal D</li>
00115                             <li> F   Lädt alle DACs </li>
00116                             </ul>
00117                             Standartwert, falls ein falscher Kanal angegeben wird ist "F" 
00118         \param value <b>16-Bit Wert</b><br>  Wird Automatisch in zwei 8 Bit Werte angepasst.  
00119      */        
00120     void loadDAC (char channel, int value); 
00121     
00122     
00123     /*! Schreibt zuvor eingestellten Wert in das DAC Register (Laden mittels loadDAC-Funktion). Dieser Wert ist dann am Ausgang des entsprechenden DAC-Kanals zu messen. */
00124     /*!
00125         \param channel <b>Einstellung des Ausgewählten Kanals</b><br>
00126                             <ul>  
00127                             <li> A   Beschreibt Kanal A</li> 
00128                             <li> B   Beschreibt Kanal B</li>
00129                             <li> C   Beschreibt Kanal C</li>
00130                             <li> D   Beschreibt Kanal D</li>
00131                             <li> F   Beschreibt alle DACs </li>
00132                             </ul>
00133                             Standartwert, falls ein falscher Kanal angegeben wird ist "F"   
00134      */        
00135     void updateDAC (char channel);     
00136                
00137     protected:      
00138         //! SPI Schnittstelle
00139         SPI spi;    
00140         //! Chipselect Pin     
00141         DigitalOut daccs;                                  
00142    
00143     };
00144 
00145 #endif