LPC_ADCHS->POWER_DOWN = 0;
LPC_ADCHS->FLUSH = 1;
match = 3 - 1;
//ADCHS_CLK - 0x06...12MHz XTAL
BASE_ADCHS_CLK = (1 << 11) | (0x06 << 24);
LPC_CCU1->CLK_M4_ADCHS_CFG = 1;
//fifo config
Chip_HSADC_SetupFIFO(LPC_ADCHS, DATA_COUNT_IN_WORDS, true);
/* Select both positive and negative DC biasing for input 3 */
Chip_HSADC_SetACDCBias(LPC_ADCHS, 2, HSADC_CHANNEL_DCBIAS, HSADC_CHANNEL_NODCBIAS);
Chip_HSADC_SetACDCBias(LPC_ADCHS, 3, HSADC_CHANNEL_DCBIAS, HSADC_CHANNEL_NODCBIAS);
Chip_HSADC_SetACDCBias(LPC_ADCHS, 4, HSADC_CHANNEL_DCBIAS, HSADC_CHANNEL_NODCBIAS);
Chip_HSADC_SetACDCBias(LPC_ADCHS, 5, HSADC_CHANNEL_DCBIAS, HSADC_CHANNEL_NODCBIAS);
//binary offset
LPC_ADCHS->POWER_CONTROL |= 0 << 16;
//trigger config
Chip_HSADC_ConfigureTrigger(LPC_ADCHS, HSADC_CONFIG_TRIGGER_SW, HSADC_CONFIG_TRIGGER_RISEEXT, HSADC_CONFIG_TRIGGER_NOEXTSYNC, HSADC_CHANNEL_ID_EN_ADD, 0x90);
//adc speed
LPC_ADCHS->POWER_CONTROL |= 0;
LPC_ADCHS->ADC_SPPED |= 0xFFFFFF;
//set descriptors
Chip_HSADC_SetupDescEntry(LPC_ADCHS, 0, 0, (HSADC_DESC_CH(4) | HSADC_DESC_BRANCH_NEXT | HSADC_DESC_MATCH(match) | HSADC_DESC_RESET_TIMER));
Chip_HSADC_SetupDescEntry(LPC_ADCHS, 0, 1, (HSADC_DESC_CH(2) | HSADC_DESC_BRANCH_NEXT | HSADC_DESC_MATCH(match) | HSADC_DESC_RESET_TIMER));
Chip_HSADC_SetupDescEntry(LPC_ADCHS, 0, 2, (HSADC_DESC_CH(3) | HSADC_DESC_BRANCH_NEXT | HSADC_DESC_MATCH(match) | HSADC_DESC_RESET_TIMER));
Chip_HSADC_SetupDescEntry(LPC_ADCHS, 0, 3, (HSADC_DESC_CH(5) | HSADC_DESC_BRANCH_FIRST | HSADC_DESC_MATCH(match) | HSADC_DESC_RESET_TIMER | HSADC_DESC_UPDATE_TABLE));
Chip_HSADC_UpdateDescTable(LPC_ADCHS, 0);
Chip_HSADC_SetActiveDescriptor(LPC_ADCHS, 0, 0);
dmaSetup();
Chip_HSADC_EnablePower(LPC_ADCHS);
Chip_HSADC_EnableInts(LPC_ADCHS, 0, HSADC_INT0_FIFO_OVERFLOW);
LPC_ADCHS->CLR_STAT0 = 0x7f;
LPC_ADCHS->CLR_STAT1 = 0x7f;
/* Enable HSADC interrupts in NVIC */
NVIC_ClearPendingIRQ(ADCHS_IRQn);
NVIC_SetPriority(ADCHS_IRQn, 1);
NVIC_EnableIRQ(ADCHS_IRQn);
Chip_HSADC_SWTrigger(LPC_ADCHS);
|