Hallo, ich bin leider kein uC Profi und bitte deswegen um nachsicht. Ich habe einen SM3210e-Eval board mit einem STM32F103Z Prozessor von ARM drauf. Ich wollte 4 Anologe Eingänge kontinuierlich auslesen oder besser wenn ich die Eingangsspannung 0,2V anliegen habe es auslesen. Leider verstehe ich nicht wie man da rangeht. Ich habe geschafft einen Kanal auszulesen. Mein Problem: copy paste aus dem Inet bzw. aus dem Exmaple Project Ich würde gerne verstehen wie das ganze aufgebaut ist.... Ich habe es mal soweit kommentiert wo ich noch verstanden habe was es bewirkt doch alles andere verstehe ich noch nicht so. -Ich würde zum Beispiel wissen was genau GPIO ist und was die Eigenschaften sind wie GPIO_Pin_0,GPIO_Pin_2 usw. -Ich habe auch gesehen das man statt der GPIO auch DMA benutzen kann. Was ist der Vorteil und wann kommt es zu gebrauch ? - Wie mache ich es wenn ich 3-4 Eingänge gleichzeitig(besser) oder hintereinander auslesen will ? void Config_ADC(void) { RCC_ADCCLKConfig(RCC_PCLK2_Div6); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); //Nächste Wandlung automatisch starten ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //Links/Rechtsbündig ins Register legen DC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //Welcher externe Signal Wandlung starten soll ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_Init(ADC1, &ADC_InitStructure); ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 1,DC_SampleTime_28Cycles5); ADC_Cmd(ADC1, ENABLE); //Start-Kallibration /* Enable ADC1 reset calibration register */ ADC_ResetCalibration(ADC1); /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1)); /* Start ADC1 calibration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1)); //Ende-Kallibration ADC_SoftwareStartConvCmd(ADC1, ENABLE); } // in der main.c adc1_value = ADC_GetConversionValue(ADC1); //Wert der aktuellen Wandlung
hp-freund schrieb: > Besser gehts nicht zu erklären: > > http://diller-technologies.de/stm32.html Die Seite ist mir bekannt jedoch beantwortet es nicht alle meine Fragen
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.