1 | au32_TestOut[0] = TESTHIGH;
|
2 | au32_TestOut[1] = TESTLOW;
|
3 | // Timer8 init
|
4 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); //Clock enable
|
5 | st_Timer8Config.TIM_ClockDivision = TIM_CKD_DIV1; //Timer1 as Master --> 500ns
|
6 | st_Timer8Config.TIM_Prescaler = 0u; //-> 500ns
|
7 | st_Timer8Config.TIM_Period = 1u; //-> 1us
|
8 | st_Timer8Config.TIM_CounterMode = TIM_CounterMode_Up;
|
9 | TIM_TimeBaseInit(TIM8, &st_Timer8Config);
|
10 | TIM_ARRPreloadConfig(TIM8, ENABLE);
|
11 | //Timer8 is Slave of Timer1:
|
12 | TIM_SelectInputTrigger(TIM8, TIM_TS_ITR0);
|
13 | TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_External1);
|
14 | //ADC1 init
|
15 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //input pin = PC1
|
16 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
17 | st_GpioAdc.GPIO_Pin = GPIO_Pin_1;
|
18 | st_GpioAdc.GPIO_Mode = GPIO_Mode_AN;
|
19 | st_GpioAdc.GPIO_PuPd = GPIO_PuPd_NOPULL ;
|
20 | GPIO_Init(GPIOC, &st_GpioAdc);
|
21 | st_AdcInit1.ADC_Mode = ADC_Mode_Independent;
|
22 | st_AdcInit1.ADC_Prescaler = ADC_Prescaler_Div2;
|
23 | st_AdcInit1.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
|
24 | st_AdcInit1.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles; //nur fue continuos mode interessant?
|
25 | ADC_CommonInit(&st_AdcInit1);
|
26 | st_AdcInit2.ADC_Resolution = ADC_Resolution_8b;
|
27 | st_AdcInit2.ADC_ScanConvMode = DISABLE; // 1 Channel
|
28 | st_AdcInit2.ADC_ContinuousConvMode = ENABLE; // Conversions Triggered
|
29 | st_AdcInit2.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;
|
30 | st_AdcInit2.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T8_TRGO; //Timer 8 starts conversion
|
31 | st_AdcInit2.ADC_DataAlign = ADC_DataAlign_Right;
|
32 | st_AdcInit2.ADC_NbrOfConversion = 1;
|
33 | ADC_Init(ADC1, &st_AdcInit2);
|
34 | ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 1, ADC_SampleTime_15Cycles); // PC1
|
35 | //ADC_Cmd(ADC1, ENABLE);
|
36 | //DMA Init
|
37 | RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
|
38 | st_DMA_ADCtoRAM.DMA_Channel = DMA_Channel_0;
|
39 | /*
|
40 | st_DMA_ADCtoRAM.DMA_PeripheralBaseAddr = (uint32_t)ADC1_BASE + 0x4C; //0x4C = Dataregister Offset
|
41 | st_DMA_ADCtoRAM.DMA_Memory0BaseAddr = (uint32_t)au32_ADCresult_Buffer1;
|
42 | st_DMA_ADCtoRAM.DMA_DIR = DMA_DIR_PeripheralToMemory;
|
43 | st_DMA_ADCtoRAM.DMA_BufferSize = 24;
|
44 | */
|
45 |
|
46 | st_DMA_ADCtoRAM.DMA_PeripheralBaseAddr = (uint32_t)GPIOC_BASE + 0x18; // 0x18 = BSRR-Register Offset
|
47 | st_DMA_ADCtoRAM.DMA_Memory0BaseAddr = (uint32_t)au32_TestOut;
|
48 | st_DMA_ADCtoRAM.DMA_DIR = DMA_DIR_MemoryToPeripheral;
|
49 | st_DMA_ADCtoRAM.DMA_BufferSize = 2;
|
50 |
|
51 | st_DMA_ADCtoRAM.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
52 | st_DMA_ADCtoRAM.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
53 | st_DMA_ADCtoRAM.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
|
54 | st_DMA_ADCtoRAM.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
|
55 | st_DMA_ADCtoRAM.DMA_Mode = DMA_Mode_Circular;
|
56 | st_DMA_ADCtoRAM.DMA_Priority = DMA_Priority_Low;
|
57 | st_DMA_ADCtoRAM.DMA_FIFOMode = DMA_FIFOMode_Disable;
|
58 | st_DMA_ADCtoRAM.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
|
59 | st_DMA_ADCtoRAM.DMA_MemoryBurst = DMA_MemoryBurst_Single;
|
60 | st_DMA_ADCtoRAM.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
|
61 | DMA_Init(DMA2_Stream0, &st_DMA_ADCtoRAM);
|
62 |
|
63 | DMA_Cmd(DMA2_Stream0, ENABLE);
|
64 | ADC_DMARequestAfterLastTransferCmd(ADC1, ENABLE);
|
65 | ADC_DMACmd(ADC1, ENABLE);
|
66 | ADC_Cmd(ADC1, ENABLE);
|
67 | ADC_SoftwareStartConv(ADC1);
|
68 | TIM_Cmd(TIM8, ENABLE);
|