Libs for using Nucleo STM32F411 periphery
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Wed Jul 13 2022 17:06:12 by 1.7.2