1 | #define ADC1_DR_Address 0x40012440
|
2 | uint16_t ADC_Werte[3];
|
3 |
|
4 | void initADC(void)
|
5 | {
|
6 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
|
7 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1 , ENABLE);
|
8 | RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
|
9 |
|
10 | DMA_DeInit(DMA1_Channel1);
|
11 | ADC_DeInit(ADC1);
|
12 |
|
13 | GPIO_InitTypeDef GPIO_InitDef;
|
14 | GPIO_InitDef.GPIO_Mode = GPIO_Mode_AN;
|
15 | GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL ;
|
16 | GPIO_InitDef.GPIO_Pin = GPIO_Pin_0 | // ADC Versorgungsspannung
|
17 | GPIO_Pin_1 ; // ADC Motorstrom
|
18 | GPIO_Init(GPIOA, &GPIO_InitDef);
|
19 |
|
20 | DMA_InitTypeDef DMA_InitStructure;
|
21 | DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC1_DR_Address;
|
22 | DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_Werte;
|
23 | DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
|
24 | DMA_InitStructure.DMA_BufferSize = 3;
|
25 | DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
|
26 | DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
|
27 | DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
|
28 | DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
|
29 | DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
|
30 | DMA_InitStructure.DMA_Priority = DMA_Priority_High;
|
31 | DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
|
32 | DMA_Init(DMA1_Channel1, &DMA_InitStructure);
|
33 | DMA_Cmd(DMA1_Channel1, ENABLE);
|
34 | ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
|
35 | ADC_DMACmd(ADC1, ENABLE);
|
36 |
|
37 | ADC_InitTypeDef ADC_InitStructure;
|
38 | ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
|
39 | ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
|
40 | ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
|
41 | //ADC_InitStructure.ADC_ExternalTrigConv = ;
|
42 | ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
|
43 | ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
|
44 | ADC_Init(ADC1, &ADC_InitStructure);
|
45 |
|
46 | ADC_ChannelConfig(ADC1, ADC_Channel_0, ADC_SampleTime_55_5Cycles); // ADC Versorgungsspannung
|
47 | ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_55_5Cycles); // ADC Motorstrom
|
48 | ADC_ChannelConfig(ADC1, ADC_Channel_TempSensor, ADC_SampleTime_55_5Cycles); // interner Temperatursensor
|
49 | ADC_TempSensorCmd(ENABLE);
|
50 |
|
51 | ADC_GetCalibrationFactor(ADC1);
|
52 | ADC_Cmd(ADC1, ENABLE);
|
53 | while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
|
54 | ADC_StartOfConversion(ADC1);
|
55 | }
|