Class for AD7390, a 12 bit SPI driven external DAC from Analog Devices.

Dependencies:   mbed

Datasheet - http://www.analog.com/static/imported-files/data_sheets/AD7390_7391.pdf

Committer:
cassar10
Date:
Sun Apr 13 19:45:35 2014 +0000
Revision:
5:1ce3ec1e5f8b
Parent:
3:37ec9ea72264
Set SPI Frequency during initialization. Test program includes for loop to ramp up to reference voltage.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cassar10 0:82cd70f9fc3f 1 # include "AD7390.h"
cassar10 3:37ec9ea72264 2 #include "mbed.h"
cassar10 0:82cd70f9fc3f 3
cassar10 5:1ce3ec1e5f8b 4 AD7390::AD7390(SPI& _spi, PinName resetpin, PinName latchpin) : //Mosi, sclk 2x digital out refV
cassar10 3:37ec9ea72264 5 spi(_spi),reset(resetpin), latch(latchpin){
cassar10 3:37ec9ea72264 6 }
cassar10 5:1ce3ec1e5f8b 7 void AD7390::Init(int Frequency)
cassar10 0:82cd70f9fc3f 8 {
cassar10 0:82cd70f9fc3f 9 //Vout = (Vref*D)/2^n
cassar10 5:1ce3ec1e5f8b 10 spi.frequency(Frequency);
cassar10 0:82cd70f9fc3f 11 spi.format(12,0);
cassar10 5:1ce3ec1e5f8b 12 latch = 1;
cassar10 5:1ce3ec1e5f8b 13 reset = 0;
cassar10 1:19818c103c9c 14 reset = 1;
cassar10 0:82cd70f9fc3f 15 }
cassar10 0:82cd70f9fc3f 16
cassar10 5:1ce3ec1e5f8b 17 void AD7390::Reset()
cassar10 0:82cd70f9fc3f 18 {
cassar10 0:82cd70f9fc3f 19 reset = 0;
cassar10 5:1ce3ec1e5f8b 20 reset = 1;
cassar10 0:82cd70f9fc3f 21 }
cassar10 5:1ce3ec1e5f8b 22 void AD7390::Latch()
cassar10 0:82cd70f9fc3f 23 {
cassar10 0:82cd70f9fc3f 24 latch = 0;
cassar10 0:82cd70f9fc3f 25 latch = 1;
cassar10 0:82cd70f9fc3f 26 }
cassar10 5:1ce3ec1e5f8b 27 void AD7390::Write(float Volts, float RefV) //write will require seperate latch after
cassar10 1:19818c103c9c 28 {
cassar10 1:19818c103c9c 29 unsigned int send = 0x0000;
cassar10 3:37ec9ea72264 30 send = (unsigned int) (4096/RefV)*Volts;
cassar10 1:19818c103c9c 31 spi.write(send);
cassar10 1:19818c103c9c 32 }
cassar10 5:1ce3ec1e5f8b 33 void AD7390::WriteL(float volts, float RefV) //Same as write but with latch attached
cassar10 1:19818c103c9c 34 {
cassar10 1:19818c103c9c 35 unsigned int Send = 0x0000;
cassar10 5:1ce3ec1e5f8b 36 Send = (unsigned int) (4096/RefV)*volts; //parse float into unsigned int to send to DAC
cassar10 1:19818c103c9c 37 spi.write(Send);
cassar10 1:19818c103c9c 38 latch = 0;
cassar10 1:19818c103c9c 39 latch = 1;
cassar10 1:19818c103c9c 40 }
cassar10 1:19818c103c9c 41
cassar10 1:19818c103c9c 42
cassar10 1:19818c103c9c 43
cassar10 0:82cd70f9fc3f 44