Class for AD7390, a 12 bit SPI driven external DAC from Analog Devices.
Datasheet - http://www.analog.com/static/imported-files/data_sheets/AD7390_7391.pdf
Diff: AD7390.cpp
- Revision:
- 1:19818c103c9c
- Parent:
- 0:82cd70f9fc3f
- Child:
- 3:37ec9ea72264
--- a/AD7390.cpp Sat Apr 05 19:08:44 2014 +0000 +++ b/AD7390.cpp Sat Apr 05 20:45:08 2014 +0000 @@ -1,24 +1,43 @@ # include "AD7390.h" -AD7390::AD7390(PinName data, PinName clock, PinName resetpin, PinName latchpin, float RefV) : //Mosi, sclk 2x digital out refV +AD7390::AD7390(PinName data, PinName clock, PinName resetpin, PinName latchpin, float RefV, unsigned int freq) : //Mosi, sclk 2x digital out refV, previously missed scope operator. reset(resetpin), latch(latchpin), spi(data, NC, clock) { //Vout = (Vref*D)/2^n spi.format(12,0); - latch = 1; //Pull low to pass shift register to DAC register - reset = 1; //Pull low to reset + spi.frequency(freq); + latch = 1; //Pull low to pass shift register to DAC register + reset = 1; } - void AD7390::Reset() //Reset ADC to 0V by pulling reset pin low + void AD7390::Reset() //Reset ADC to 0V by pulling reset pin low { reset = 0; wait_us(25); - reset = 1; //Set back to high so it can be written to again + reset = 1; //Set back to high so it can be written to again } - void AD7390::Latch() //Latch data from shift register to DAC + void AD7390::Latch() //Latch data from shift register to DAC { latch = 0; wait_us(25); latch = 1; } + void AD7390::Write(float Volts) //write will require seperate latch after + { + unsigned int send = 0x0000; + send = (unsigned int) ((4096/RefV)*Volts); + spi.write(send); + } + void AD7390::WriteL(float volts) //Same as write but with latch attached + { + unsigned int Send = 0x0000; + Send = (unsigned int) ((4096/RefV)*volts); //parse float into unsigned int to send to DAC + spi.write(Send); + latch = 0; + wait_us(25); + latch = 1; + } + + + \ No newline at end of file