mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-27 00:30:03 +02:00
95 lines
4.7 KiB
C
Executable File
95 lines
4.7 KiB
C
Executable File
#pragma once
|
|
|
|
//#include "commonServerFunctions.h" // blackfin.h, ansi.h
|
|
|
|
|
|
|
|
/* AD7689 ADC DEFINES */
|
|
|
|
/** Read back CFG Register */
|
|
#define AD7689_CFG_RB_OFST (0)
|
|
#define AD7689_CFG_RB_MSK (0x00000001 << AD7689_CFG_RB_OFST)
|
|
|
|
/** Channel sequencer */
|
|
#define AD7689_CFG_SEQ_OFST (1)
|
|
#define AD7689_CFG_SEQ_MSK (0x00000003 << AD7689_CFG_SEQ_OFST)
|
|
#define AD7689_CFG_SEQ_DSBLE_VAL ((0x0 << AD7689_CFG_SEQ_OFST) & AD7689_CFG_SEQ_MSK)
|
|
#define AD7689_CFG_SEQ_UPDTE_DRNG_SQNCE_VAL ((0x1 << AD7689_CFG_SEQ_OFST) & AD7689_CFG_SEQ_MSK)
|
|
#define AD7689_CFG_SEQ_SCN_WTH_TMP_VAL ((0x2 << AD7689_CFG_SEQ_OFST) & AD7689_CFG_SEQ_MSK)
|
|
#define AD7689_CFG_SEQ_SCN_WTHT_TMP_VAL ((0x3 << AD7689_CFG_SEQ_OFST) & AD7689_CFG_SEQ_MSK)
|
|
|
|
/** Reference/ buffer selection */
|
|
#define AD7689_CFG_REF_OFST (3)
|
|
#define AD7689_CFG_REF_MSK (0x00000007 << AD7689_CFG_REF_OFST)
|
|
/** Internal reference. REF = 2.5V buffered output. Temperature sensor enabled. */
|
|
#define AD7689_CFG_REF_INT_2500MV_VAL ((0x0 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_OFST)
|
|
/** Internal reference. REF = 4.096V buffered output. Temperature sensor enabled. */
|
|
#define AD7689_CFG_REF_INT_4096MV_VAL ((0x1 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_MSK)
|
|
/** External reference. Temperature sensor enabled. Internal buffer disabled. */
|
|
#define AD7689_CFG_REF_EXT_TMP_VAL ((0x2 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_MSK)
|
|
/** External reference. Temperature sensor enabled. Internal buffer enabled. */
|
|
#define AD7689_CFG_REF_EXT_TMP_INTBUF_VAL ((0x3 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_MSK)
|
|
/** External reference. Temperature sensor disabled. Internal buffer disabled. */
|
|
#define AD7689_CFG_REF_EXT_VAL ((0x6 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_MSK)
|
|
/** External reference. Temperature sensor disabled. Internal buffer enabled. */
|
|
#define AD7689_CFG_REF_EXT_INTBUF_VAL ((0x7 << AD7689_CFG_REF_OFST) & AD7689_CFG_REF_MSK)
|
|
|
|
/** bandwidth of low pass filter */
|
|
#define AD7689_CFG_BW_OFST (6)
|
|
#define AD7689_CFG_BW_MSK (0x00000001 << AD7689_CFG_REF_OFST)
|
|
#define AD7689_CFG_BW_ONE_FOURTH_VAL ((0x0 << AD7689_CFG_BW_OFST) & AD7689_CFG_BW_MSK)
|
|
#define AD7689_CFG_BW_FULL_VAL ((0x1 << AD7689_CFG_BW_OFST) & AD7689_CFG_BW_MSK)
|
|
|
|
/** input channel selection IN0 - IN7 */
|
|
#define AD7689_CFG_IN_OFST (7)
|
|
#define AD7689_CFG_IN_MSK (0x00000007 << AD7689_CFG_IN_OFST)
|
|
|
|
/** input channel configuration */
|
|
#define AD7689_CFG_INCC_OFST (10)
|
|
#define AD7689_CFG_INCC_MSK (0x00000007 << AD7689_CFG_INCC_OFST)
|
|
#define AD7689_CFG_INCC_BPLR_DFFRNTL_PRS_VAL ((0x0 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
#define AD7689_CFG_INCC_BPLR_IN_COM_VAL ((0x2 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
#define AD7689_CFG_INCC_TMP_VAL ((0x3 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
#define AD7689_CFG_INCC_UNPLR_DFFRNTL_PRS_VAL ((0x4 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
#define AD7689_CFG_INCC_UNPLR_IN_COM_VAL ((0x6 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
#define AD7689_CFG_INCC_UNPLR_IN_GND_VAL ((0x7 << AD7689_CFG_INCC_OFST) & AD7689_CFG_INCC_MSK)
|
|
|
|
/** configuration update */
|
|
#define AD7689_CFG_CFG_OFST (13)
|
|
#define AD7689_CFG_CFG_MSK (0x00000001 << AD7689_CFG_CFG_OFST)
|
|
#define AD7689_CFG_CFG_NO_UPDATE_VAL ((0x0 << AD7689_CFG_CFG_OFST) & AD7689_CFG_CFG_MSK)
|
|
#define AD7689_CFG_CFG_OVRWRTE_VAL ((0x1 << AD7689_CFG_CFG_OFST) & AD7689_CFG_CFG_MSK)
|
|
|
|
int getAD7689(int ind) {
|
|
|
|
}
|
|
|
|
void setAD7689(int addr, int val) {
|
|
u_int32_t codata;
|
|
codata = val + (addr << 8);
|
|
FILE_LOG(logINFO, ("\tSetting ADC SPI Register. Wrote 0x%04x at 0x%04x\n", val, addr));
|
|
serializeToSPI(ADC_SPI_REG, codata, ADC_SERIAL_CS_OUT_MSK, AD9257_ADC_NUMBITS,
|
|
ADC_SERIAL_CLK_OUT_MSK, ADC_SERIAL_DATA_OUT_MSK, ADC_SERIAL_DATA_OUT_OFST);
|
|
}
|
|
|
|
void prepareAD7689(){
|
|
FILE_LOG(logINFOBLUE, ("Preparing AD7689 (Slow ADCs):\n"));
|
|
|
|
uint16_t codata = (
|
|
// read back
|
|
AD7689_CFG_RB_MSK |
|
|
// scan sequence IN0-IN7 then temperature sensor
|
|
AD7689_CFG_SEQ_SCN_WTH_TMP_VAL |
|
|
// Internal reference. REF = 2.5V buffered output. Temperature sensor enabled.
|
|
AD7689_CFG_REF_INT_2500MV_VAL |
|
|
// full bandwidth of low pass filter
|
|
AD7689_CFG_BW_FULL_VAL |
|
|
// scan upto channel 7
|
|
AD7689_CFG_IN_MSK |
|
|
// input channel configuration (unipolar. inx to gnd)
|
|
AD7689_CFG_INCC_UNPLR_IN_GND_VAL |
|
|
// overwrite configuration
|
|
AD7689_CFG_CFG_OVRWRTE_VAL);
|
|
|
|
}
|