9 #include "../Zmod/zmod.h"
11 #ifndef _ZMODDAC1411_H
12 #define _ZMODDAC1411_H
16 #define ZMODDAC1411_REG_ADDR_TRIG 0x1C // TRIG register address
17 #define ZMODDAC1411_REG_ADDR_SC1LGMULTCOEF 0x24 // SC1LGMULTCOEF register address
18 #define ZMODDAC1411_REG_ADDR_SC1LGADDCOEF 0x28 // SC1LGADDCOEF register address
19 #define ZMODDAC1411_REG_ADDR_SC1HGMULTCOEF 0x2C // SC1HGMULTCOEF register address
20 #define ZMODDAC1411_REG_ADDR_SC1HGADDCOEF 0x30 // SC1HGADDCOEF register address
21 #define ZMODDAC1411_REG_ADDR_SC2LGMULTCOEF 0x34 // SC2LGMULTCOEF register address
22 #define ZMODDAC1411_REG_ADDR_SC2LGADDCOEF 0x38 // SC2LGADDCOEF register address
23 #define ZMODDAC1411_REG_ADDR_SC2HGMULTCOEF 0x3C // SC2HGMULTCOEF register address
24 #define ZMODDAC1411_REG_ADDR_SC2HGADDCOEF 0x40 // SC2HGADDCOEF register address
28 #define ZMODDAC1411_REGFLD_CR_DAC_EN ZMOD_REG_ADDR_CR, 4, 1 // DAC_EN field of CR register
29 #define ZMODDAC1411_REGFLD_CR_TEST_MODE ZMOD_REG_ADDR_CR, 5, 1 // TEST_MODE field of CR register
30 #define ZMODDAC1411_REGFLD_CR_OUT_ADDR_CNT_RST ZMOD_REG_ADDR_CR, 6, 1 // OUT_ADDR_CNT_RST field of CR register
31 #define ZMODDAC1411_REGFLD_CR_DIV_RATE ZMOD_REG_ADDR_CR, 16, 14 // DIV_RATE field of CR register
33 #define ZMODDAC1411_REGFLD_SR_BUF_FULL ZMOD_REG_ADDR_SR, 21, 1 // BUF_FULL field of SR register
35 #define ZMODDAC1411_REGFLD_IER_BUF_FULL ZMOD_REG_ADDR_IER, 21, 1 // BUF_FULL field of IER register
37 #define ZMODDAC1411_REGFLD_TRIG_SC1_HG_LG ZMODDAC1411_REG_ADDR_TRIG, 21, 1 // SC1_HG_LG field of TRIG register
38 #define ZMODDAC1411_REGFLD_TRIG_SC2_HG_LG ZMODDAC1411_REG_ADDR_TRIG, 22, 1 // SC2_HG_LG field of TRIG register
40 #define ZMODDAC1411_REGFLD_SC1LGMULTCOEF_VAL ZMODDAC1411_REG_ADDR_SC1LGMULTCOEF, 0, 18 // VAL field of SC1LGMULTCOEF register
42 #define ZMODDAC1411_REGFLD_SC1HGMULTCOEF_VAL ZMODDAC1411_REG_ADDR_SC1HGMULTCOEF, 0, 18 // VAL field of SC1HGMULTCOEF register
44 #define ZMODDAC1411_REGFLD_SC1LGADDCOEF_VAL ZMODDAC1411_REG_ADDR_SC1LGADDCOEF, 0, 18 // VAL field of SC1LGADDCOEF register
46 #define ZMODDAC1411_REGFLD_SC1HGADDCOEF_VAL ZMODDAC1411_REG_ADDR_SC1HGADDCOEF, 0, 18 // VAL field of SC1HGADDCOEF register
48 #define ZMODDAC1411_REGFLD_SC2LGMULTCOEF_VAL ZMODDAC1411_REG_ADDR_SC2LGMULTCOEF, 0, 18 // VAL field of SC2LGMULTCOEF register
50 #define ZMODDAC1411_REGFLD_SC2HGMULTCOEF_VAL ZMODDAC1411_REG_ADDR_SC2HGMULTCOEF, 0, 18 // VAL field of SC2HGMULTCOEF register
52 #define ZMODDAC1411_REGFLD_SC2LGADDCOEF_VAL ZMODDAC1411_REG_ADDR_SC2LGADDCOEF, 0, 18 // VAL field of SC2LGADDCOEF register
54 #define ZMODDAC1411_REGFLD_SC2HGADDCOEF_VAL ZMODDAC1411_REG_ADDR_SC2HGADDCOEF, 0, 18 // VAL field of SC2HGADDCOEF register
56 #define ZMODDAC1411_CALIB_USER_ADDR 0x7000
57 #define ZMODDAC1411_CALIB_FACT_ADDR 0x8100
59 #define ZMODDAC1411_CALIB_ID 0xDA
65 unsigned char lin[2][34];
68 } __attribute__((__packed__)) CALIBECLYPSEDAC;
76 ZMODDAC1411(uintptr_t baseAddress, uintptr_t dmaAddress, uintptr_t iicAddress, uintptr_t flashAddress,
int dmaInterrupt);
84 uint8_t
setData(uint32_t* buffer,
size_t length);
85 void setGain(uint8_t channel, uint8_t gain);
96 void setCalibValues(uint8_t channel, uint8_t gain,
float valG,
float valA);
void setGain(uint8_t channel, uint8_t gain)
Definition: zmoddac1411.cpp:215
Definition: zmoddac1411.h:71
void resetOutputCounter()
Definition: zmoddac1411.cpp:106
int32_t computeCoefAdd(float ca, float cg, uint8_t gain)
Definition: zmoddac1411.cpp:253
uint8_t setData(uint32_t *buffer, size_t length)
Definition: zmoddac1411.cpp:122
uint32_t arrangeChannelData(uint8_t channel, uint16_t data)
Definition: zmoddac1411.cpp:82
void stop()
Definition: zmoddac1411.cpp:153
uint32_t arrangeSignedChannelData(uint8_t channel, int16_t data)
Definition: zmoddac1411.cpp:97
int readUserCalib() override
Definition: zmoddac1411.cpp:182
ZMODDAC1411(uintptr_t baseAddress, uintptr_t dmaAddress, uintptr_t iicAddress, uintptr_t flashAddress, int dmaInterrupt)
Definition: zmoddac1411.cpp:42
uint32_t * allocChannelsBuffer(size_t length)
Definition: zmoddac1411.cpp:57
void setOutputSampleFrequencyDivider(uint16_t val)
Definition: zmoddac1411.cpp:162
int32_t getSignedRawFromVolt(float voltValue, uint8_t gain)
Definition: zmoddac1411.cpp:267
void processInterrupt() override
Definition: zmoddac1411.cpp:169
void freeChannelsBuffer(uint32_t *buf, size_t length)
Definition: zmoddac1411.cpp:69
int32_t computeCoefMult(float cg, uint8_t gain)
Definition: zmoddac1411.cpp:238
void start()
Definition: zmoddac1411.cpp:144
Definition: zmoddac1411.h:61