Other Parts Discussed in Thread: ADS1298,
Hi,
I have some severe problems with SPI communication to ADS1298.
I am trying to read Device-ID register but I don't get any response from the device.
After power-up, I reset the device like this:
// CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET); // RESET LOW HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); HAL_Delay(100); // RESET HIGH HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); HAL_Delay(100); // RESET CMD HAL_SPI_Transmit(&this->spi_handle, &COMMANDS.RESET, 1, 250); while(HAL_SPI_GetState(&this->spi_handle) != HAL_SPI_STATE_READY); // CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
After that, I issue SDATAC command:
// CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET); HAL_SPI_Transmit(&this->spi_handle, &COMMANDS.SDATAC, 1, 250); while(HAL_SPI_GetState(&this->spi_handle) != HAL_SPI_STATE_READY); // CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET);
And then try to read Device-ID:
constexpr uint8_t reg_addr = 0x00; uint8_t opcodes[3]; opcodes[0] = 0x20 | reg_addr; opcodes[1] = 0x00; opcodes[2] = 0x00; uint8_t receive; // CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_RESET); HAL_SPI_Transmit(&this->spi_handle, &opcodes[0], 1, 250); while(HAL_SPI_GetState(&this->spi_handle) != HAL_SPI_STATE_READY); HAL_SPI_Transmit(&this->spi_handle, &opcodes[1], 1, 250); while(HAL_SPI_GetState(&this->spi_handle) != HAL_SPI_STATE_READY); HAL_SPI_TransmitReceive(&this->spi_handle, &opcodes[2], &receive, 1, 250); while(HAL_SPI_GetState(&this->spi_handle) != HAL_SPI_STATE_READY); // CS HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, GPIO_PIN_SET); return (receive >> 5);
but I only receive 0x00. Any ideas what I might be missing? I already checked VCAP1 which is at 1.2V