Librairie de l'IOGS nécessaire pour utiliser le CNA AD7303
Revision 0:30a6c5c8c8eb, committed 2017-06-22
- 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