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
AD7390.cpp@3:37ec9ea72264, 2014-04-06 (annotated)
- 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?
User | Revision | Line number | New 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 |