I am trying to read values from an 18-bit ADC using SPI and LPC54608.
uint32_t readSPIvalueInitSPI4(){
return readSPIvalueInit2(&SPI4_InterruptDriverState);
}
uint32_t readSPIvalueInit2(cmsis_spi_interrupt_driver_state_t *spi){
return readSPIvalue(spi->resource->base);
}
uint32_t readSPIvalue(SPI_Type *base){
base->CFG |= (1 << 8); // polarity SSEL0 - active high
base->DLY |= (0x8 << 8); // End Of Frame delay - 8 clock times inserted
uint32_t readFIFO = ADC_LT2336(base);
return readFIFO;
}
uint32_t ADC_LT2336(SPI_Type *base){
base->FIFOWR = 15 | 0xf0e0000; // data = 15 + Assert SSL0, de-assert SSL[1,2,3], no-EOT // (EndOfTransfer de-assert), length = 16
base->FIFOWR = 15 | 0x31e0000; // data = 15 + Assert SSL0, de-assert SSL[1,2,3], EOT (EndOfTransfer // de-assert), End Of Frame delay = 15 CLK, length = 4
uint_32_t read_MSB = base->FIFORD;
uint_32_t read_LSB = base->FIFORD;
return read_MSB; // only returning the MSB because I don't need the last 2 bits
}
int main(void) {
uint32_t ADCvalue = readSPIvalueInitSPI4();
}