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
--- /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
--- /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