Not sure if the is a h/w or s/w issue but here goes- I'm using the MAX11040K to sample 9 channels (all microphones) which give a signal between 0 to 3.3V DC-biased by 1.65V; that's input to all channels for all 9 mics. I need to sample these at 20kHz simultaneously but I'm having trouble with my hardware: datasheet
I've daisy-chaining multiple devices as per the datasheet (figure 13 of the above link) and I can set the configuration register, though I can't get any sampled data out of the chain. Specifically, DRDYOUT never goes low, it's always high:
I'm unsure if I've interpreted the daisy-chain circuit correctly - I would've thought sharing a CS would case SPI bus contention with chips fighting to respond(?). However, when I set the config register I'm able to read back the correct setting. I'm sending this to the config register:
// Configure (configuration register)
/ command: write to configuration register => 0110 0000 = 0x60
// payload:
[![enter image description here][3]][3]
// Write to Configuration Register (0x60) → 0x2C = above config
uint8_t cfg_write[4] = {0x60, 0x2C, 0x2C, 0x2C};
// Step 1: Write config
HAL_GPIO_WritePin(CS_MAX_GPIO_Port, CS_MAX_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi2, cfg_write, 4, HAL_MAX_DELAY);
HAL_GPIO_WritePin(CS_MAX_GPIO_Port, CS_MAX_Pin, GPIO_PIN_SET);
// Step 2. I'm reading back 0x2C from all three chips - which is a good sign and yet -
// step 3. Reading data Yet I'm not getting any sampled data, DRDYOUT remains high always.
Is this a hardware fault or a software issue, is there a missing step? If a hardware fault should I just scrap this and go for a another ADC using sample & hold IC's?
