diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/AD5940.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/AD5940.h index 1fe5bb6..41e25f5 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/AD5940.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/AD5940.h @@ -70,8 +70,10 @@ static void setEIS_EIS (void) HSTIAGainCtrl(instru.ADCGainLv); } + static int32_t LPVolt = 0; if (!cali_flag) { - DAC_outputV(instru.dcbias); + LPVolt = (instru.dcbias - 25000) * 4 * 4000; + DAC_outputV(LPVolt); SetWGAmp(instru.acamp); } else { cali_DAC_outputV(instru.dcbias); diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteDAC.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteDAC.h index 84a3dad..a482911 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteDAC.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteDAC.h @@ -14,9 +14,6 @@ static bool DACReset; /* user code: 0 ~ 35000; LPDAC bias value: -1.5V ~ +1.5V */ static int32_t DAC_outputV(int32_t voltLVraw) { // LPDAC output, voltLV = Vbias-Vzero - // static int32_t vztemp, vscan, voltLV; - // static uint32_t vb, vz, vbcode, vzcode, DACOutCode = 0; - /* new code*/ int32_t ret; int32_t vscan; @@ -26,7 +23,6 @@ static int32_t DAC_outputV(int32_t voltLVraw) { // LPDAC output, voltLV = Vbia uint8_t n_zero;//6btit uint16_t n_bias;//12bit uint32_t DACOutCode; - vscan = voltLVraw; v_z = (V_5nV(2200) - (int64_t)vscan) * 200000 / 431579 + V_5nV(200); // v_z = (V_5nV(2200) - vscan)/2.157895 + V_5nV(200); @@ -45,11 +41,11 @@ static int32_t DAC_outputV(int32_t voltLVraw) { // LPDAC output, voltLV = Vbia v_zero = (int64_t)n_zero * V_5nV(3438) / 100; if (vscan < 0) { - v_zero -= V_5nV(5372) / 10000; + v_zero -= V_5nV(5372) / 10000; } - v_bias = vscan + v_zero; - n_bias = v_bias * 10000 / V_5nV(5372); + v_bias = vscan + v_zero; + n_bias = v_bias * 10000 / V_5nV(5372); if ((n_bias <= 4095) || ( n_bias > 4095 && n_zero > 63)) break; @@ -59,32 +55,38 @@ static int32_t DAC_outputV(int32_t voltLVraw) { // LPDAC output, voltLV = Vbia if(n_zero > 63) n_zero = 63; DACOutCode = (0x0003FFFF & ((n_zero << 12) + n_bias)); - - - /* past code - voltLV = voltLVraw;//[mv] // calibration conversion - - vztemp = (-0.45 * voltLV) + 249000000; - if (voltLV < 0) { - vztemp -= DAC12BIT_LSB; - } - vzcode = (vztemp - 40000000 + VZERO_LSB / 2) / VZERO_LSB; - vz = vzcode * VZERO_LSB + 40000000; - - vb = voltLV + vz; - vbcode = ((vb - 40000000 + VBIAS_LSB / 2) / VBIAS_LSB); - DACOutCode = (0x0003FFFF & ((vzcode << 12) + vbcode)); - */ - select_REG(LPDACDAT0); w32_REG(DACOutCode); ret = (int32_t)(v_bias - v_zero); //vscan - InputNotify(NOTIFY_VOLT, ret/200); + return ret; } +//static int32_t DAC_outputV(int32_t voltLVraw) { // LPDAC output, voltLV = Vbias-Vzero +// static int32_t vztemp, vscan, voltLV; +// static uint32_t vb, vz, vbcode, vzcode, DACOutCode = 0; +// +// voltLV = (Cali_LPDAC(voltLVraw) - 25000) * 4 * 4000; // calibration conversion +// vztemp = (-0.45 * voltLV) + 249000000; +// if (voltLV < 0) { +// vztemp -= DAC12BIT_LSB; +// } +// vzcode = (vztemp - 40000000 + VZERO_LSB / 2) / VZERO_LSB; +// vz = vzcode * VZERO_LSB + 40000000; +// +// vb = voltLV + vz; +// vbcode = ((vb - 40000000 + VBIAS_LSB / 2) / VBIAS_LSB); +// DACOutCode = (0x0003FFFF & ((vzcode << 12) + vbcode)); +// +// select_REG(LPDACDAT0); +// w32_REG(DACOutCode); +// +// vscan = (int32_t)(vb - vz) / 200; +// return vscan; +//} + static uint32_t DAC_outputF(uint32_t freq) { select_REG(WGFCW); w32_REG(freq); diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteReset.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteReset.h index 8cf5ef6..a85767f 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteReset.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/EliteReset.h @@ -19,10 +19,10 @@ static void reset() { // PIN_setOutputValue(pin_handle, HIGH_Z_MODE, 0); // HIGH Z MODE // 1: close; 0: open; - HSTIAGainCtrl(HSRTIA_200R); - LPTIAGainCtrl(LPRTIA_200R); - HSDAC_GainControl(0x00); - HSDAC_output(0x0800); +// HSTIAGainCtrl(HSRTIA_200R); +// LPTIAGainCtrl(LPRTIA_200R); +// HSDAC_GainControl(0x00); +// HSDAC_output(0x0800); for (int i = 0; i < SPI_LED_SIZE; i++) { spi_LEDtxbuf[i] = 0; diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/Elite_mode_ADC_DAC.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/Elite_mode_ADC_DAC.h index 467435d..1235631 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/Elite_mode_ADC_DAC.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/Elite_mode_ADC_DAC.h @@ -46,6 +46,7 @@ static void vscan_volt_out(void) /* in [5nV] ver */ MEAS_VOUT(wm) = DAC_outputV(Vset); + InputNotify(NOTIFY_VOLT, MEAS_VOUT(wm)/200); if (Vset == cv->_Vinit && cv->bFirst){ Elite_led_color(COLOR_ORANGE); diff --git a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/eis_cali_table.h b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/eis_cali_table.h index af42f18..6fc9f1c 100644 --- a/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/eis_cali_table.h +++ b/simplelink/ble_sdk_2_02_02_25/src/examples/simple_peripheral/cc26xx/app/headstage/eis_cali_table.h @@ -1,7 +1,7 @@ #ifndef EIS_CALI_TABLE #define EIS_CALI_TABLE -#define BOARD_FIRST_STEP_CALI +#define BOARD_2 typedef struct _SingleFilterCali{ uint32_t PhaseParaA; @@ -433,6 +433,130 @@ struct _CaliTable{ .LP[3].LPTIA_coeff_c = 53149447309, }; +#elif defined(BOARD_A4_DA_32_D4_E6_F5) +{ + .DeviceName = "BOARD_A4_DA_32_D4_E6_F5", + .CutoffFreq = 271200, + .OffsetZero = 0x6504, + + // hsrtia160k + .Lv[0][0].HSRTIA_a = 0, // 1e8 + .Lv[0][0].HSRTIA_b = 5665868, // 1e8 + .Lv[0][0].HSRTIA_c = 1612, // 1e4 + .Lv[1][0].HSRTIA_a = 0, // 1e8 + .Lv[1][0].HSRTIA_b = 0, // 1e8 + .Lv[1][0].HSRTIA_c = 0, // 1e4 + .Lv[2][0].HSRTIA_a = 0, // 1e8 + .Lv[2][0].HSRTIA_b = 0, // 1e8 + .Lv[2][0].HSRTIA_c = 0, // 1e4 + .Lv[3][0].HSRTIA_a = 0, // 1e8 + .Lv[3][0].HSRTIA_b = 0, // 1e8 + .Lv[3][0].HSRTIA_c = 0, // 1e4 + + // hsrtia20k + .Lv[0][1].HSRTIA_a = 3, // 1e8 + .Lv[0][1].HSRTIA_b = 44242940, // 1e8 + .Lv[0][1].HSRTIA_c = 148206, // 1e4 + .Lv[1][1].HSRTIA_a = 0, // 1e8 + .Lv[1][1].HSRTIA_b = 0, // 1e8 + .Lv[1][1].HSRTIA_c = 0, // 1e4 + .Lv[2][1].HSRTIA_a = 0, // 1e8 + .Lv[2][1].HSRTIA_b = 0, // 1e8 + .Lv[2][1].HSRTIA_c = 0, // 1e4 + .Lv[3][1].HSRTIA_a = 0, // 1e8 + .Lv[3][1].HSRTIA_b = 0, // 1e8 + .Lv[3][1].HSRTIA_c = 0, // 1e4 + + // hsrtia5k + .Lv[0][2].HSRTIA_a = 2, // 1e8 + .Lv[0][2].HSRTIA_b = 178641591, // 1e8 + .Lv[0][2].HSRTIA_c = 386005, // 1e4 + .Lv[1][2].HSRTIA_a = 0, // 1e8 + .Lv[1][2].HSRTIA_b = 0, // 1e8 + .Lv[1][2].HSRTIA_c = 0, // 1e4 + .Lv[2][2].HSRTIA_a = 0, // 1e8 + .Lv[2][2].HSRTIA_b = 0, // 1e8 + .Lv[2][2].HSRTIA_c = 0, // 1e4 + .Lv[3][2].HSRTIA_a = 0, // 1e8 + .Lv[3][2].HSRTIA_b = 0, // 1e8 + .Lv[3][2].HSRTIA_c = 0, // 1e4 + + // hsrtia200r + .Lv[0][3].HSRTIA_a = 9404, // 1e8 + .Lv[0][3].HSRTIA_b = 4309654444, // 1e8 + .Lv[0][3].HSRTIA_c = 15315713, // 1e4 + .Lv[1][3].HSRTIA_a = 0, // 1e8 + .Lv[1][3].HSRTIA_b = 0, // 1e8 + .Lv[1][3].HSRTIA_c = 0, // 1e4 + .Lv[2][3].HSRTIA_a = 0, // 1e8 + .Lv[2][3].HSRTIA_b = 0, // 1e8 + .Lv[2][3].HSRTIA_c = 0, // 1e4 + .Lv[3][3].HSRTIA_a = 0, // 1e8 + .Lv[3][3].HSRTIA_b = 0, // 1e8 + .Lv[3][3].HSRTIA_c = 0, // 1e4 + + .Ft[0][0].PhaseParaA = 148031, + .Ft[0][0].PhaseParaB = -89728680, + .Ft[0][1].PhaseParaA = 0, + .Ft[0][1].PhaseParaB = 0, + .Ft[0][2].PhaseParaA = 0, + .Ft[0][2].PhaseParaB = 0, + .Ft[0][3].PhaseParaA = 0, + .Ft[0][3].PhaseParaB = 0, + + .Ft[1][0].PhaseParaA = 341117, + .Ft[1][0].PhaseParaB = -89913235, + .Ft[1][1].PhaseParaA = 0, + .Ft[1][1].PhaseParaB = 0, + .Ft[1][2].PhaseParaA = 0, + .Ft[1][2].PhaseParaB = 0, + .Ft[1][3].PhaseParaA = 0, + .Ft[1][3].PhaseParaB = 0, + + .Ft[2][0].PhaseParaA = 20622054, + .Ft[2][0].PhaseParaB = -90005211, + .Ft[2][1].PhaseParaA = 0, + .Ft[2][1].PhaseParaB = 0, + .Ft[2][2].PhaseParaA = 0, + .Ft[2][2].PhaseParaB = 0, + .Ft[2][3].PhaseParaA = 0, + .Ft[2][3].PhaseParaB = 0, + + .Ft[3][0].PhaseParaA = 99823148, + .Ft[3][0].PhaseParaB = -89960369, + .Ft[3][1].PhaseParaA = 0, + .Ft[3][1].PhaseParaB = 0, + .Ft[3][2].PhaseParaA = 0, + .Ft[3][2].PhaseParaB = 0, + .Ft[3][3].PhaseParaA = 0, + .Ft[3][3].PhaseParaB = 0, + + //only for EIS 1e10 + .HSDAC_coeff_a = 14, + .HSDAC_coeff_b = 9717249, + .HSDAC_coeff_c = 8586589, + + .LPDAC_coeff_a = 7, + .LPDAC_coeff_b = 8394088, + .LPDAC_coeff_c = 131973802074, + + .LP[0].LPTIA_coeff_a = 0, // PGA = 1.5 | calibrated by ADCDAT + .LP[0].LPTIA_coeff_b = -54816709, + .LP[0].LPTIA_coeff_c = 179606310, + + .LP[1].LPTIA_coeff_a = 2, + .LP[1].LPTIA_coeff_b = -434063200, + .LP[1].LPTIA_coeff_c = 1422073413, + + .LP[2].LPTIA_coeff_a = -9, + .LP[2].LPTIA_coeff_b = -3163492996, + .LP[2].LPTIA_coeff_c = 10368161009, + + .LP[3].LPTIA_coeff_a = -481, + .LP[3].LPTIA_coeff_b = -16202491299, + .LP[3].LPTIA_coeff_c = 53149447309, +}; + #endif /* Ft[4][4]; Lv[4][4] */