Forum: Mikrocontroller und Digitale Elektronik STM32L ADC mit Mbed


von Benedikt S. (benedikt_s)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich bin gerade dabei von arduino/Avr auf ARM um zu steigen.
Ich verwende ein STM32l0538
http://www.st.com/en/evaluation-tools/32l0538discovery.html.

Als IDE benutze ich SW4STM32.

Leider habe ich Probleme mit dem ADC, dieser scheint zu funktionieren 
aber die Eingangs Impedanz des ADC ist 25 Ohm! Scheinbar wird der ADC 
Pin auf Low gezogen. Mir ist aber nicht klar wieso.

Im Anhang findet ihr das das SW4STM32 Projekt mit dem mbed Libs.

In den Beispielen für den ADC wird der Pin vorher nicht aktiv auf High-Z 
gesetzt.

Könnt ihr mir sagen was ich für High-Z tuen muss und warum der Pin 
Momentan LOW ist ?
1
#include "mbed.h"
2
#include "mbed_config.h"
3
#include "EPD_GDE021A1.h"
4
5
#define EPD_CS       PA_15
6
#define EPD_DC       PB_11
7
#define EPD_RESET    PB_2
8
#define EPD_BUSY     PA_8
9
#define EPD_POWER    PB_10
10
#define EPD_SPI_MOSI PB_5
11
#define EPD_SPI_MISO PB_4
12
#define EPD_SPI_SCK  PB_3
13
14
EPD_GDE021A1 epd(EPD_CS, EPD_DC, EPD_RESET, EPD_BUSY, EPD_POWER, EPD_SPI_MOSI, EPD_SPI_MISO, EPD_SPI_SCK);
15
16
DigitalOut led1(LED1);
17
AnalogIn   ain(PA_1);
18
19
//width 48
20
//height 26
21
int main()
22
{
23
    led1 = 1;
24
    char buf[10];
25
    uint16_t analoginunit16=0;
26
    while(1) {
27
        epd.Clear(EPD_COLOR_WHITE);
28
        analoginunit16=ain.read_u16();
29
        sprintf(buf, "%d",analoginunit16);
30
        epd.DisplayStringAtLine(0, (uint8_t*)buf, LEFT_MODE);
31
        sprintf(buf, "%d",10000);  
32
        epd.DisplayStringAtLine(1, (uint8_t*)buf, LEFT_MODE);
33
        epd.RefreshDisplay();
34
        led1 = !led1;
35
        wait(1);
36
    }
37
}

von Jim M. (turboj)


Lesenswert?

Benedikt S. schrieb:
> die Eingangs Impedanz des ADC ist 25 Ohm!

Das würde einem GPIO Ausgang entsprechen. Ist entweder ein 
Programmierfehler - wo sitzt LED? Oder es hängt noch weitere Hardware am 
Pin dran, ->Schaltplan Discovery Board.

Und siehe da, dort steht PA1 geht an MFX_WAKEUP. Damit ist die Nutzung 
als analoger Pin ausgeschlossen.

von Benedikt S. (benedikt_s)


Lesenswert?

Mist hätte mir auch selbst auffallen können vor allem da ich in der 
Belegungs-Tabelle geguckt habe. Irreführenderweise ist es auf 
diesem(https://developer.mbed.org/media/uploads/bcostm/xdisco_l053c8_mbed_pinout_v2.png.pagespeed.ic.X147CKPN1Z.png) 
Plan der Pinbelegung aber nichts derartiges vermerkt.

Naja wird wohl der Touch-Sensor dran Glauben müssen.

von Benedikt S. (benedikt_s)


Lesenswert?

Nach dem deaktiviren des touchsensors Funktionieren die adcs jetzt wie 
erwartet.

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
Noch kein Account? Hier anmelden.