|
|
|
|
|
|
|
|
// linear interpolation is supposed to resample it to exactly 4X |
|
|
// linear interpolation is supposed to resample it to exactly 4X |
|
|
// the sample rate, so we avoid artifacts boundaries between captures |
|
|
// the sample rate, so we avoid artifacts boundaries between captures |
|
|
const int comp1 = ((float)F_BUS_ACTUAL) / (AUDIO_SAMPLE_RATE_EXACT * 4.0f) / 2.0f + 0.5f; |
|
|
const int comp1 = ((float)F_BUS_ACTUAL) / (AUDIO_SAMPLE_RATE_EXACT * 4.0f) / 2.0f + 0.5f; |
|
|
TMR3_ENBL &= ~(1<<3); |
|
|
|
|
|
TMR3_SCTRL3 = TMR_SCTRL_OEN | TMR_SCTRL_FORCE; |
|
|
|
|
|
TMR3_CSCTRL3 = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_TCF1EN; |
|
|
|
|
|
TMR3_CNTR3 = 0; |
|
|
|
|
|
TMR3_LOAD3 = 0; |
|
|
|
|
|
TMR3_COMP13 = comp1; |
|
|
|
|
|
TMR3_CMPLD13 = comp1; |
|
|
|
|
|
TMR3_CTRL3 = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | TMR_CTRL_LENGTH | TMR_CTRL_OUTMODE(3); |
|
|
|
|
|
TMR3_DMA3 = TMR_DMA_CMPLD1DE; |
|
|
|
|
|
CORE_PIN15_CONFIG = 1 ; // GPIO_AD_B1_03, ALT1 = QTIMER3_TIMER3, page 495 |
|
|
|
|
|
TMR3_CNTR3 = 0; |
|
|
|
|
|
TMR3_ENBL |= (1<<3); |
|
|
|
|
|
|
|
|
TMR4_ENBL &= ~(1<<3); |
|
|
|
|
|
TMR4_SCTRL3 = TMR_SCTRL_OEN | TMR_SCTRL_FORCE; |
|
|
|
|
|
TMR4_CSCTRL3 = TMR_CSCTRL_CL1(1) | TMR_CSCTRL_TCF1EN; |
|
|
|
|
|
TMR4_CNTR3 = 0; |
|
|
|
|
|
TMR4_LOAD3 = 0; |
|
|
|
|
|
TMR4_COMP13 = comp1; |
|
|
|
|
|
TMR4_CMPLD13 = comp1; |
|
|
|
|
|
TMR4_CTRL3 = TMR_CTRL_CM(1) | TMR_CTRL_PCS(8) | TMR_CTRL_LENGTH | TMR_CTRL_OUTMODE(3); |
|
|
|
|
|
TMR4_DMA3 = TMR_DMA_CMPLD1DE; |
|
|
|
|
|
TMR4_CNTR3 = 0; |
|
|
|
|
|
TMR4_ENBL |= (1<<3); |
|
|
|
|
|
|
|
|
// connect the timer output the ADC_ETC input |
|
|
// connect the timer output the ADC_ETC input |
|
|
const int trigger = 4; // 0-3 for ADC1, 4-7 for ADC2 |
|
|
const int trigger = 4; // 0-3 for ADC1, 4-7 for ADC2 |
|
|
CCM_CCGR2 |= CCM_CCGR2_XBAR1(CCM_CCGR_ON); |
|
|
CCM_CCGR2 |= CCM_CCGR2_XBAR1(CCM_CCGR_ON); |
|
|
xbar_connect(XBARA1_IN_QTIMER3_TIMER3, XBARA1_OUT_ADC_ETC_TRIG00 + trigger); |
|
|
|
|
|
|
|
|
xbar_connect(XBARA1_IN_QTIMER4_TIMER3, XBARA1_OUT_ADC_ETC_TRIG00 + trigger); |
|
|
|
|
|
|
|
|
// turn on ADC_ETC and configure to receive trigger |
|
|
// turn on ADC_ETC and configure to receive trigger |
|
|
if (ADC_ETC_CTRL & (ADC_ETC_CTRL_SOFTRST | ADC_ETC_CTRL_TSC_BYPASS)) { |
|
|
if (ADC_ETC_CTRL & (ADC_ETC_CTRL_SOFTRST | ADC_ETC_CTRL_TSC_BYPASS)) { |