Go to the documentation of this file.
19 #define ERR_CALIB_CRC -2
20 #define ERR_CALIB_ID -3
22 #define ZMOD_REG_ADDR_CR 0x00 // CR register address
23 #define ZMOD_REG_ADDR_SR 0x04 // SR register address
24 #define ZMOD_REG_ADDR_IER 0x08 // IER register address
25 #define ZMOD_REG_ADDR_CMD_TX 0x0C // CMD_TX register address
26 #define ZMOD_REG_ADDR_CMD_RX 0x10 // CMD_RX register address
27 #define ZMOD_REG_ADDR_AXIS_S2MM_LENGTH 0x14 // AXIS_S2MM_LENGTH register address
28 #define ZMOD_REG_ADDR_AXIS_MM2S_LENGTH 0x18 // AXIS_MM2S_LENGTH register address
30 #define ZMOD_REGFLD_CR_CMD_RUNSTP ZMOD_REG_ADDR_CR, 1, 1 // CMD_RUNSTP field of CR register
31 #define ZMOD_REGFLD_CR_CMD_READ_EN ZMOD_REG_ADDR_CR, 2, 1 // CMD_READ_EN field of CR register
32 #define ZMOD_REGFLD_CR_INTR_EN ZMOD_REG_ADDR_CR, 3, 1 // INTR_EN field of CR register
33 #define ZMOD_REGFLD_CR_RST ZMOD_REG_ADDR_CR, 31, 1 // RST field of CR register
35 #define ZMOD_REGFLD_SR_CMD_TX_DONE ZMOD_REG_ADDR_SR, 0, 1 // TX_DONE field of SR register
36 #define ZMOD_REGFLD_SR_CMD_RUNNING ZMOD_REG_ADDR_SR, 2, 1 // CMD_RUNNING field of SR register
37 #define ZMOD_REGFLD_SR_CMD_TX_COUNT ZMOD_REG_ADDR_SR, 3, 7 // CMD_TX_COUNT field of SR register
38 #define ZMOD_REGFLD_SR_CMD_RX_COUNT ZMOD_REG_ADDR_SR, 10, 7 // CMD_RX_COUNT field of SR register
40 #define ZMOD_REGFLD_IER_CMD_TX_DONE ZMOD_REG_ADDR_IER, 0, 1 // CMD_TX_DONE field of IER register
41 #define ZMOD_REGFLD_IER_CMD_RX_DONE ZMOD_REG_ADDR_IER, 1, 1 // CMD_RX_DONE field of IER register
42 #define ZMOD_REGFLD_IER_CMD_TX_RX_ERROR ZMOD_REG_ADDR_IER, 2, 4 // CMD_TX_RX_ERROR field of IER register
44 #define ZMOD_REGFLD_AXIS_S2MM_LENGTH_LENGTH ZMOD_REG_ADDR_AXIS_S2MM_LENGTH, 0, 26 // LENGTH field of AXIS_S2MM_LENGTH register
45 #define ZMOD_REGFLD_AXIS_MM2S_LENGTH_LENGTH ZMOD_REG_ADDR_AXIS_MM2S_LENGTH, 0, 26 // LENGTH field of AXIS_MM2S_LENGTH register
55 uint16_t userCalibAddr;
56 uint16_t factCalibAddr;
58 enum dma_direction direction;
59 int initCalib(uint32_t calibSize, uint8_t calibID, uint32_t userCalibAddr,uint32_t factCalibAddr);
62 uint8_t
computeCRC(uint8_t *pData, uint32_t len);
65 ZMOD(uintptr_t baseAddress, uintptr_t dmaAddress, uintptr_t iicAddress, uintptr_t flashAddress,
66 enum dma_direction direction,
int zmodInterrupt,
int dmaInterrupt);
69 void writeReg(uint8_t regAddr, uint32_t value);
70 void writeRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits, uint32_t value);
71 uint32_t
readReg(uint8_t regAddr);
72 uint32_t
readRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits);
74 void writeSignedRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits, int32_t value);
86 size_t sendReceiveCommands(uint32_t *sentCommands, uint32_t *receivedCommands,
size_t length);
93 void formatValue(
char *dest,
float val,
const char *unit);
96 int32_t
toSigned(uint32_t value, uint8_t noBits);
uint32_t readRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits)
Definition: zmod.cpp:144
bool isDMATransferComplete()
Definition: zmod.cpp:271
int32_t toSigned(uint32_t value, uint8_t noBits)
Definition: zmod.cpp:194
int initCalib(uint32_t calibSize, uint8_t calibID, uint32_t userCalibAddr, uint32_t factCalibAddr)
Definition: zmod.cpp:409
void freeDMABuffer(uint32_t *buf, size_t size)
Definition: zmod.cpp:232
size_t receiveCommands(uint32_t *commands)
Definition: zmod.cpp:327
void sendCommands(uint32_t *commands, size_t length)
Definition: zmod.cpp:301
int restoreFactoryCalib()
Definition: zmod.cpp:447
void writeRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits, uint32_t value)
Definition: zmod.cpp:114
void writeReg(uint8_t regAddr, uint32_t value)
Definition: zmod.cpp:86
void writeUserCalib()
Definition: zmod.cpp:429
uint32_t receiveCommand()
Definition: zmod.cpp:290
virtual int readUserCalib()
Definition: zmod.cpp:369
void sendCommand(uint32_t command)
Definition: zmod.cpp:280
virtual void processInterrupt()
Definition: zmod.cpp:212
size_t sendReceiveCommands(uint32_t *sentCommands, uint32_t *receivedCommands, size_t length)
Definition: zmod.cpp:350
ZMOD(uintptr_t baseAddress, uintptr_t dmaAddress, uintptr_t iicAddress, uintptr_t flashAddress, enum dma_direction direction, int zmodInterrupt, int dmaInterrupt)
Definition: zmod.cpp:47
void * allocDMABuffer(size_t size)
Definition: zmod.cpp:222
int32_t readSignedRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits)
Definition: zmod.cpp:182
uint8_t computeCRC(uint8_t *pData, uint32_t len)
Definition: zmod.cpp:469
int startDMATransfer(uint32_t *buffer)
Definition: zmod.cpp:257
~ZMOD()
Definition: zmod.cpp:67
void formatValue(char *dest, float val, const char *unit)
Definition: zmod.cpp:496
void writeSignedRegFld(uint8_t regAddr, uint8_t lsbBit, uint8_t noBits, int32_t value)
Definition: zmod.cpp:167
void setTransferSize(size_t size)
Definition: zmod.cpp:242
uint32_t readReg(uint8_t regAddr)
Definition: zmod.cpp:100