AD5384 DAC.
Fork of AD5384 by
Diff: AD5384.cpp
- Revision:
- 1:d2d6341d3e97
- Parent:
- 0:33bb5081488a
- Child:
- 2:fc250e37a028
- Child:
- 3:0d930c475e72
--- a/AD5384.cpp Thu Oct 02 06:30:46 2014 +0000 +++ b/AD5384.cpp Sun Oct 05 17:10:03 2014 +0000 @@ -1,8 +1,6 @@ #include "AD5384.h" #include "mbed.h" -#define VERSION_AD5384_SRC "1.01" - #define nrch 40 // nr channels #define p2_14 16384 #define p2_13 8192 @@ -10,10 +8,16 @@ #define C_ACTIVE 1 #define C_DEACTIVE 0 - // spi mode has to be set for each transmission as spi bus can be shared -#define AD5384_SRC_VERSION "1.01" +/***** + * version history + * v1.10 initial release version + * v1.11 added init 1 and init 2 function an ctrlreg defs + * v1.12 + */ + +#define AD5384_SRC_VERSION "1.12" #define M_DATA_R 0x3 #define M_OFFS_R 0x2 @@ -22,7 +26,40 @@ #define NOP_INST 0x0 -AD5384::AD5384(SWSPI *spiinterface ,DigitalOut* chipselect) { + +// control register bits +#define CTRL_REG_ADDR 0x0C +#define OUT_PWD_STAT_HIMP 0x2000 + //0b10 0000 0000 0000 +#define OUT_PWD_STAT_100K 0x1FFF + //0b01 1111 1111 1111 +#define INT_REF_2500 0X1000 + //0b01000000000000 +#define INT_REF_1250 0x2FFF + //0b10111111111111 +#define I_BOOST_ON 0x0800 + //0b00100000000000 +#define I_BOOST_OFF 0x37FF + //0b11011111111111 +#define REF_SRC_INT 0x0400 + //0b00010000000000 +#define REF_SRC_EXT 0x3BFF + //0b11 1011 1111 1111 +#define MONITOR_MODE_EN 0x0200 + //0b00001000000000 +#define MONITOR_MODE_DIS 0x3DFF + //0b11 1101 1111 1111 +#define TEMP_MONITOR_EN 0x0100 + //0b00000100000000 +#define TEMP_MONITOR_DIS 0x3EFF + //0b11 1110 1111 1111 +#define TOGGLE_DISABLE 0x3F83 + //0b11 1111 1000 0011 + + + + +AD5384::AD5384(SWSPI *spiinterface ,DigitalOut* chipselect):getVersion( VERSION_AD5384_HDR,AD5384_SRC_VERSION, __TIME__, __DATE__) { vref=2.5; spi=spiinterface; cs=chipselect; @@ -41,7 +78,7 @@ // x2 = [(gain+2)/2^n * x1] + offset-2^13 // x1 = 2^14/(gain+2) * [ x2 - offset+2^13 ] u16 x1 = p2_14/(gain[nr]+1) *( x2- offset[nr]+p2_13); - x1= 0x3FF & x1; + x1= 0x3FFF & x1; dac[nr]=x1 ; return x1; }; @@ -81,6 +118,21 @@ return dacin; } +void AD5384::init1(){ + u16 ctrlreg=0; + ctrlreg = (INT_REF_2500 | REF_SRC_INT ) & TOGGLE_DISABLE; + set_reg(M_SPEC_R,CTRL_REG_ADDR,ctrlreg); + +} + +void AD5384::init2(){ + u16 ctrlreg=0; + // implecite INT_REF_1250 + ctrlreg = REF_SRC_INT & TOGGLE_DISABLE; + set_reg(M_SPEC_R,CTRL_REG_ADDR,ctrlreg); + +} + u32 AD5384::soft_clr(){ @@ -113,6 +165,9 @@ return dac; } + + + u32 AD5384::set_reg(u8 mode,u8 ch, u16 value ){ set_spi_mode(); @@ -156,6 +211,7 @@ } u32 AD5384::get_ctrl(){ + return get_reg(M_SPEC_R, 0x0C); } @@ -172,4 +228,23 @@ data=spi->write(NOP_INST); cs->write(C_DEACTIVE); return (u16) data; -} \ No newline at end of file +} + + + + + +#include "sscm_comm.h" +/* + +u16 AD5384::get_src_version_nr(){ + return sscm_comm::get_hex_version_nr(VERSION_AD5384_SRC); +} + +// returns the version number of hdr of this module +u16 AD5384::get_hdr_version_nr(){ + return sscm_comm::get_hex_version_nr(VERSION_AD5384_HDR); + +} + +*/