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