AD5384 DAC.

Fork of AD5384 by wimbeaumont Project

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);
+
+}
+
+*/