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 06 20:07:38 2014 +0000
Revision:
3:37ec9ea72264
Parent:
1:19818c103c9c
Child:
5:1ce3ec1e5f8b
Appears to be working now!

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 3:37ec9ea72264 4 AD7390::AD7390(SPI& _spi, PinName resetpin, PinName latchpin) : //Mosi, sclk 2x digital out refV, previously missed scope operator.
cassar10 3:37ec9ea72264 5 spi(_spi),reset(resetpin), latch(latchpin){
cassar10 3:37ec9ea72264 6 }
cassar10 3:37ec9ea72264 7 void AD7390::Init()
cassar10 0:82cd70f9fc3f 8 {
cassar10 0:82cd70f9fc3f 9 //Vout = (Vref*D)/2^n
cassar10 0:82cd70f9fc3f 10 spi.format(12,0);
cassar10 1:19818c103c9c 11 latch = 1; //Pull low to pass shift register to DAC register
cassar10 1:19818c103c9c 12 reset = 1;
cassar10 0:82cd70f9fc3f 13 }
cassar10 0:82cd70f9fc3f 14
cassar10 1:19818c103c9c 15 void AD7390::Reset() //Reset ADC to 0V by pulling reset pin low
cassar10 0:82cd70f9fc3f 16 {
cassar10 0:82cd70f9fc3f 17 reset = 0;
cassar10 1:19818c103c9c 18 reset = 1; //Set back to high so it can be written to again
cassar10 0:82cd70f9fc3f 19 }
cassar10 1:19818c103c9c 20 void AD7390::Latch() //Latch data from shift register to DAC
cassar10 0:82cd70f9fc3f 21 {
cassar10 0:82cd70f9fc3f 22 latch = 0;
cassar10 0:82cd70f9fc3f 23 latch = 1;
cassar10 0:82cd70f9fc3f 24 }
cassar10 3:37ec9ea72264 25 void AD7390::Write(float Volts, float RefV) //write will require seperate latch after
cassar10 1:19818c103c9c 26 {
cassar10 1:19818c103c9c 27 unsigned int send = 0x0000;
cassar10 3:37ec9ea72264 28 send = (unsigned int) (4096/RefV)*Volts;
cassar10 1:19818c103c9c 29 spi.write(send);
cassar10 1:19818c103c9c 30 }
cassar10 3:37ec9ea72264 31 void AD7390::WriteL(float volts, float RefV) //Same as write but with latch attached
cassar10 1:19818c103c9c 32 {
cassar10 1:19818c103c9c 33 unsigned int Send = 0x0000;
cassar10 3:37ec9ea72264 34 Send = (unsigned int) (4096/RefV)*volts; //parse float into unsigned int to send to DAC
cassar10 1:19818c103c9c 35 spi.write(Send);
cassar10 1:19818c103c9c 36 latch = 0;
cassar10 1:19818c103c9c 37 latch = 1;
cassar10 1:19818c103c9c 38 }
cassar10 1:19818c103c9c 39
cassar10 1:19818c103c9c 40
cassar10 1:19818c103c9c 41
cassar10 0:82cd70f9fc3f 42