38#ifndef PROTOCORE_AD9238_H
39#define PROTOCORE_AD9238_H
49enum class Ad9238Reg : uint16_t
51 AD9238_REG_CHIP_PORT_CONFIG = 0x00,
52 AD9238_REG_CHIP_ID = 0x01,
53 AD9238_REG_CHIP_GRADE = 0x02,
54 AD9238_REG_CHANNEL_INDEX = 0x08,
56 AD9238_REG_POWER_DOWN = 0x09,
57 AD9238_REG_OUTPUT_MODE = 0x0A,
58 AD9238_REG_OUTPUT_PHASE = 0x0D,
59 AD9238_REG_OUTPUT_DELAY = 0x0F,
60 AD9238_REG_VREF = 0x10,
61 AD9238_REG_ANALOG_INPUT = 0x14,
62 AD9238_REG_TEST_IO = 0x15,
63 AD9238_REG_OFFSET_ADJUST = 0x18,
64 AD9238_REG_DEVICE_UPDATE = 0xFF,
68enum class Ad9238TestPattern : uint8_t
70 AD9238_TEST_OFF = 0x00,
71 AD9238_TEST_MIDSCALE_SHORT = 0x01,
72 AD9238_TEST_POS_FULLSCALE = 0x02,
73 AD9238_TEST_NEG_FULLSCALE = 0x03,
74 AD9238_TEST_CHECKERBOARD = 0x04,
75 AD9238_TEST_PN23 = 0x05,
76 AD9238_TEST_PN9 = 0x06,
77 AD9238_TEST_ONE_ZERO_TOGGLE = 0x07,
81enum class Ad9238OutputFormat : uint8_t
83 AD9238_FORMAT_OFFSET_BINARY = 0x00,
84 AD9238_FORMAT_TWOS_COMPLEMENT = 0x01,
85 AD9238_FORMAT_GRAY_CODE = 0x02,
89enum class Ad9238Channel : uint8_t
93 AD9238_CHAN_BOTH = 0x03,
106bool pc_ad9238_build_instruction(
bool read, uint16_t reg_addr, uint8_t nbytes, uint8_t out2[2]);
113size_t pc_ad9238_build_write(uint16_t reg_addr, uint8_t value, uint8_t *out,
size_t cap);
121size_t pc_ad9238_build_read(uint16_t reg_addr, uint8_t *out,
size_t cap);
128size_t pc_ad9238_build_transfer(uint8_t *out,
size_t cap);
User-facing configuration for ProtoCore.