AD5384 DAC.

Fork of AD5384 by wimbeaumont Project

Committer:
wbeaumont
Date:
Thu Oct 02 06:30:46 2014 +0000
Revision:
0:33bb5081488a
Child:
1:d2d6341d3e97
inital version,  not checked for output,   problems with read back value

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:33bb5081488a 1 #ifndef AD5384_H
wbeaumont 0:33bb5081488a 2 #define AD5384_H
wbeaumont 0:33bb5081488a 3
wbeaumont 0:33bb5081488a 4 #include "solid_sctrl_def.h"
wbeaumont 0:33bb5081488a 5 #include "SWSPI.h"
wbeaumont 0:33bb5081488a 6
wbeaumont 0:33bb5081488a 7 #define VERSION_AD5384_HDR "1.01"
wbeaumont 0:33bb5081488a 8
wbeaumont 0:33bb5081488a 9
wbeaumont 0:33bb5081488a 10 /*
wbeaumont 0:33bb5081488a 11 * class to set and readback the AD5384
wbeaumont 0:33bb5081488a 12 * to minimize the access to the device there is a shadow of the DAC, GAIN and OFFSET values
wbeaumont 0:33bb5081488a 13
wbeaumont 0:33bb5081488a 14 * V 0.1 inital development to see if reading / writing is possible
wbeaumont 0:33bb5081488a 15 */
wbeaumont 0:33bb5081488a 16 class SWSPI;
wbeaumont 0:33bb5081488a 17 #include "mbed.h"
wbeaumont 0:33bb5081488a 18 //class DigitalOut;
wbeaumont 0:33bb5081488a 19
wbeaumont 0:33bb5081488a 20 class AD5384 {
wbeaumont 0:33bb5081488a 21 SWSPI *spi ;
wbeaumont 0:33bb5081488a 22 DigitalOut* cs;
wbeaumont 0:33bb5081488a 23 float vref;
wbeaumont 0:33bb5081488a 24
wbeaumont 0:33bb5081488a 25 void set_spi_mode();
wbeaumont 0:33bb5081488a 26 u16 calculate_dac_setting(u8 nr, float vout );
wbeaumont 0:33bb5081488a 27 u32 format_word(u8 mode,u8 ch,u8 rw,u16 data) ;
wbeaumont 0:33bb5081488a 28 u16 get_reg(u8 mode, u8 ch );
wbeaumont 0:33bb5081488a 29 u32 set_reg(u8 mode,u8 ch, u16 value );
wbeaumont 0:33bb5081488a 30 public:
wbeaumont 0:33bb5081488a 31 AD5384(SWSPI *spiinterface ,DigitalOut* chipselect );
wbeaumont 0:33bb5081488a 32
wbeaumont 0:33bb5081488a 33 u16 dac[40];
wbeaumont 0:33bb5081488a 34 u16 gain[40];
wbeaumont 0:33bb5081488a 35 u16 offset[40];
wbeaumont 0:33bb5081488a 36 float volt[40];
wbeaumont 0:33bb5081488a 37 u16 get_dac(u8 ch);
wbeaumont 0:33bb5081488a 38 u16 set_dac( u8 ch, u16 dac);
wbeaumont 0:33bb5081488a 39 u16 get_ch_out_reg(u8 ch) ;
wbeaumont 0:33bb5081488a 40 u16 set_volt(u8 nr, float vout );
wbeaumont 0:33bb5081488a 41 u16 set_gain(u8 ch, u16 gain );
wbeaumont 0:33bb5081488a 42 u16 get_gain(u8 ch );
wbeaumont 0:33bb5081488a 43 u16 set_offset(u8 ch, u16 gain);
wbeaumont 0:33bb5081488a 44 u16 get_offset(u8 ch );
wbeaumont 0:33bb5081488a 45 // ctnrls
wbeaumont 0:33bb5081488a 46 u32 get_ctrl();
wbeaumont 0:33bb5081488a 47 u32 soft_clr();
wbeaumont 0:33bb5081488a 48 u32 soft_rst();
wbeaumont 0:33bb5081488a 49 u32 clear_code();
wbeaumont 0:33bb5081488a 50
wbeaumont 0:33bb5081488a 51 };
wbeaumont 0:33bb5081488a 52
wbeaumont 0:33bb5081488a 53 #endif