Libs for using Nucleo STM32F411 periphery

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AD5664.cpp Source File

AD5664.cpp

00001 #include "mbed.h"
00002 #include "AD5664.h"
00003 
00004 //====================================================================================================================================
00005 //                              Grundlagen, DAC Schreiben und Initialisieren
00006 //====================================================================================================================================
00007 
00008 AD5664::AD5664 (SPI _spi, PinName _daccs): spi(_spi), daccs(_daccs)
00009 {                                 
00010         sendDAC (0x2F, 0x00, 0x00);                                         //Software Reset, alle Ausgänge auf 0                                                              
00011     } 
00012   
00013   
00014 void AD5664::sendDAC (int instruction = 0x00, int data1 = 0x00, int data2 = 0x00)
00015 {        
00016         daccs = 0;                                                          // Select Device      
00017                                                        
00018                 spi.write(instruction);                                     // Schreibt entsprechend die Anweisung und die Adresse                                     
00019                 spi.write(data1);                                           // Schreibt den ersten Byte an Daten 
00020                 spi.write(data2);                                           // Schreibt den zweiten Byte an Daten              
00021                  
00022         daccs = 1;                                                          // Deselect                                                                         
00023     }     
00024 
00025 //====================================================================================================================================
00026 //                              Setter-Funktionen
00027 //====================================================================================================================================
00028 
00029 void AD5664::SelectCS ()
00030 {         daccs = 0;                                                        // Select Device                              
00031     }
00032 
00033 void AD5664::DeselectCS ()
00034 {          daccs = 1;                                                       // Deselect  
00035     }  
00036     
00037 void AD5664::writeDAC (char channel, int value)
00038 {
00039         int choch = 0x00;                                                    //Temporäre Variable um die Instructions zu übernehmen
00040             
00041             switch(channel){
00042                     case 'A':                                                // DAC A
00043                         choch = 0x18;
00044                     break;
00045                     
00046                     case 'B':                                                // DAC B
00047                         choch = 0x19;
00048                     break;
00049                     
00050                     case 'C':                                                // DAC C
00051                         choch = 0x1A;
00052                     break;   
00053 
00054                     case 'D':                                                // DAC D
00055                         choch = 0x1B;
00056                     break;                
00057 
00058                     case 'F':                                                // Alle Dacs
00059                         choch = 0x1F;
00060                     break;
00061                     
00062                     default:
00063                         choch = 0x1F;                                       // Alle Dacs
00064                     }      
00065                                                                      
00066     sendDAC (choch, *((uint8_t*)&(value)+1), *((uint8_t*)&(value)+0));      //Schreibe via SPI: Anweisung mit Adresse, oberes Byte, unteres Byte)                                                                      
00067            
00068     }
00069       
00070 
00071 
00072 void AD5664::loadDAC (char channel, int value)
00073 {
00074         int choch = 0x00;                                                    //Temporäre Variable um die Instructions zu übernehmen
00075             
00076             switch(channel){
00077                     case 'A':                                                // DAC A
00078                         choch = 0x00;
00079                     break;
00080                     
00081                     case 'B':                                                // DAC B
00082                         choch = 0x01;
00083                     break;
00084                     
00085                     case 'C':                                                // DAC C
00086                         choch = 0x02;
00087                     break;   
00088 
00089                     case 'D':                                                // DAC D
00090                         choch = 0x03;
00091                     break;                
00092 
00093                     case 'F':                                                // Alle Dacs
00094                         choch = 0x07;
00095                     break;
00096                     
00097                     default:
00098                         choch = 0x07;                                       // Alle Dacs
00099                     }      
00100                                                                      
00101     sendDAC (choch, *((uint8_t*)&(value)+1), *((uint8_t*)&(value)+0));      //Schreibe via SPI: Anweisung mit Adresse, oberes Byte, unteres Byte)                                                                      
00102            
00103     }
00104     
00105     
00106 void AD5664::updateDAC (char channel)
00107 {
00108         int choch = 0x00;                                                    //Temporäre Variable um die Instructions zu übernehmen
00109             
00110             switch(channel){
00111                     case 'A':                                                // DAC A
00112                         choch = 0x08;
00113                     break;
00114                     
00115                     case 'B':                                                // DAC B
00116                         choch = 0x09;
00117                     break;
00118                     
00119                     case 'C':                                                // DAC C
00120                         choch = 0x0A;
00121                     break;   
00122 
00123                     case 'D':                                                // DAC D
00124                         choch = 0x0B;
00125                     break;                
00126 
00127                     case 'F':                                                // Alle Dacs
00128                         choch = 0x0F;
00129                     break;
00130                     
00131                     default:
00132                         choch = 0x0F;                                       // Alle Dacs
00133                     }      
00134                                                                      
00135     sendDAC (choch, 0x00 , 0x00);      //Schreibe via SPI: Anweisung mit Adresse, oberes Byte, unteres Byte)                                                                      
00136            
00137     }