13bool pc_ad9238_build_instruction(
bool read, uint16_t reg_addr, uint8_t nbytes, uint8_t out2[2])
15 if (!out2 || nbytes == 0 || nbytes > 4 || reg_addr > 0x1FFF)
19 uint16_t w1w0 = (uint16_t)(nbytes - 1) & 0x3;
20 uint16_t word = (uint16_t)((read ? 0x8000u : 0x0000u) | (w1w0 << 13) | (reg_addr & 0x1FFFu));
21 out2[0] = (uint8_t)(word >> 8);
22 out2[1] = (uint8_t)(word & 0xFF);
26size_t pc_ad9238_build_write(uint16_t reg_addr, uint8_t value, uint8_t *out,
size_t cap)
33 if (!pc_ad9238_build_instruction(
false, reg_addr, 1, hdr))
43size_t pc_ad9238_build_read(uint16_t reg_addr, uint8_t *out,
size_t cap)
50 if (!pc_ad9238_build_instruction(
true, reg_addr, 1, hdr))
59size_t pc_ad9238_build_transfer(uint8_t *out,
size_t cap)
61 return pc_ad9238_build_write((uint16_t)Ad9238Reg::AD9238_REG_DEVICE_UPDATE, 0x01, out, cap);
SPI configuration-port codec for the AD9238 (and the shared ADI high-speed-ADC SPI map it belongs to)...