Forum: Mikrocontroller und Digitale Elektronik STM32L ADC mit Mbed


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Benedikt S. (benedikt_s)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Nach dem deaktiviren des touchsensors Funktionieren die adcs jetzt wie 
erwartet.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.