Librairie de l'IOGS nécessaire pour utiliser le CNA AD7303

Files at this revision

API Documentation at this revision

Comitter:
Thur
Date:
Thu Jun 22 12:58:18 2017 +0000
Commit message:
Intial Publication AD7303;

Changed in this revision

AD7303.cpp Show annotated file Show diff for this revision Revisions of this file
AD7303.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 30a6c5c8c8eb AD7303.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AD7303.cpp	Thu Jun 22 12:58:18 2017 +0000
@@ -0,0 +1,96 @@
+#include "AD7303.h"
+#include "mbed.h"
+
+AD7303::AD7303(PinName Cs,PinName Mosi, PinName Miso, PinName Sck) : CS_DAC(Cs),ad7303(Mosi,Miso,Sck) {};
+/*
+ * Initialisation du CNA
+ *  Internal Vref / Power-Up on both DACA and DACB
+ *  Load DACA and DACB with VDD/2 on outputs
+ */
+void AD7303::initDAC(void)
+{
+    // CS DAC
+    CS_DAC = 1;
+    wait_ms(10);
+    CS_DAC = 0;
+    ad7303.write(INT_REF | UPDATE_DACA);
+    ad7303.write(0x80);
+    CS_DAC = 1;
+    wait_ms(10);
+    CS_DAC = 0;
+    ad7303.write(INT_REF | UPDATE_DACB);
+    ad7303.write(0x80);
+    CS_DAC = 1;
+    wait_ms(10);
+    return;
+}
+/*
+ * Changement mode de configuration
+ *  entrees :
+ *      mode : mode de fonctionnement souhaite
+ *      val : valeur en sortie (8 bits)
+ */
+void AD7303::changeModeDAC(char mode, char val)
+{
+    CS_DAC = 0;
+    ad7303.write(mode);
+    ad7303.write(val);
+    CS_DAC = 1;
+    return;
+}
+
+/*
+ * Modification de la tension de sortie du DACA - Reference interne
+ *  entree :
+ *      val : valeur sur 8 bits de la tension a appliquer
+ */
+void AD7303::changeDACA_IntRef(char val)
+{
+    CS_DAC = 0;
+    ad7303.write(INT_REF | UPDATE_DACA);
+    ad7303.write(val);
+    CS_DAC = 1;
+    return;
+}
+
+/*
+ * Modification de la tension de sortie du DACB - Reference interne
+ *  entree :
+ *      val : valeur sur 8 bits de la tension a appliquer
+ */
+void AD7303::changeDACB_IntRef(char val)
+{
+    CS_DAC = 0;
+    ad7303.write(INT_REF | UPDATE_DACB);
+    ad7303.write(val);
+    CS_DAC = 1;
+    return;
+}
+
+/*
+ * Modification de la tension de sortie du DACA - Reference externe
+ *  entree :
+ *      val : valeur sur 8 bits de la tension a appliquer
+ */
+void AD7303::changeDACA_ExtRef(char val)
+{
+    CS_DAC = 0;
+    ad7303.write(EXT_REF | UPDATE_DACA);
+    ad7303.write(val);
+    CS_DAC = 1;
+    return;
+}
+
+/*
+ * Modification de la tension de sortie du DACB - Reference externe
+ *  entree :
+ *      val : valeur sur 8 bits de la tension a appliquer
+ */
+void AD7303::changeDACB_ExtRef(char val)
+{
+    CS_DAC = 0;
+    ad7303.write(EXT_REF | UPDATE_DACB);
+    ad7303.write(val);
+    CS_DAC = 1;
+    return;
+}
\ No newline at end of file
diff -r 000000000000 -r 30a6c5c8c8eb AD7303.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AD7303.h	Thu Jun 22 12:58:18 2017 +0000
@@ -0,0 +1,90 @@
+#ifndef MBED_AD7303_H
+#define MBED_AD7303_H
+/** Classe AD7303.
+ *  Utilisée par l'IOGS pour le DAC AD7303.
+ *
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "AD7303.h"
+ * 
+ * AD7303 dac8b(D10,D11,D12,D13);
+ * char c;
+ * 
+ * int main()
+ * {
+ *     dac8b.initDAC();
+ *     while(1) {
+ *         c=' ';
+ *         for(c=0; c<255; c++) {
+ *             dac8b.changeDACA_IntRef(c);
+ *         }
+ *     }
+ * }
+ * @endcode
+ */
+#include "mbed.h"
+/* Modes de fonctionnement */
+#define     INT_REF         0x00        // Internal reference voltage Vref ? VDD/2
+#define     EXT_REF         0x80        // External reference voltage
+
+#define     POWER_DOWN_DACA 0b00001000  // Switch off DACA
+#define     POWER_DOWN_DACB 0b00010000  // Switch off DACB
+
+#define     UPDATE_DACA     0b00000011  // Update DACA from shift register
+#define     UPDATE_DACB     0b00100111  // Update DACB from shitf register
+
+class AD7303{
+public:
+    /** Déclare un CNA AD7303
+         *
+         * @param Cs Broche de la carte Nucleo L476RG reliée à la broche Cs du CNA AD7303
+         * @param Miso Broche de la carte Nucleo L476RG reliée à la broche Miso du CNA AD7303
+         * @param Mosi Broche de la carte Nucleo L476RG reliée à la broche Mosi du CNA AD7303
+         * @param Sck Broche de la carte Nucleo L476RG reliée à la broche Sck du CNA AD7303
+
+         */
+    AD7303(PinName Cs,PinName Mosi, PinName Miso, PinName Sck);
+    /** Fonction d'initialisation du CNA AD7303
+         * Internal Vref / Power-Up on both DACA and DACB
+         * Load DACA and DACB with VDD/2 on outputs
+         * @note l'appel de cette fonction est essentielle pour utiliser le CNA AD7303
+         */
+    void initDAC(void);
+    /** Changement mode de configuration
+         *
+         * @param mode mode de fonctionnement souhaite
+         * @param val valeur en sortie (8 bits)
+         * @returns rien
+         */
+    void changeModeDAC(char mode, char val);
+        /** Modification de la tension de sortie du DACA - Reference interne
+         *
+         * @param val valeur sur 8 bits de la tension a appliquer
+         * @returns rien
+         */
+    void changeDACA_IntRef(char val);
+        /** Modification de la tension de sortie du DACB - Reference interne
+         *
+         * @param val valeur sur 8 bits de la tension a appliquer
+         * @returns rien
+         */
+    void changeDACB_IntRef(char val);
+        /** Modification de la tension de sortie du DACA - Reference externe
+         *
+         * @param val valeur sur 8 bits de la tension a appliquer
+         * @returns rien
+         */
+    void changeDACA_ExtRef(char val);
+        /** Modification de la tension de sortie du DACB - Reference externe
+         *
+         * @param val valeur sur 8 bits de la tension a appliquer
+         * @returns rien
+         */
+    void changeDACB_ExtRef(char val);
+private:
+    DigitalOut CS_DAC; //CS
+    SPI ad7303; // mosi, miso, sclk
+};
+ 
+#endif
\ No newline at end of file