1.0 Arduino für STM32 Überblick

Stoffverteilung entsprechend dem Bildungsplan Jahrgangsstufe 1 TGI Baden Württemberg.

Mindmap
Mindmap

NUCLEO L152RE

Beschafft bei reichelt.de für 20,15€ (zur Zeit wieder ausverkauft)

STM32Nucleo
STM32Nucleo

Pin Belegung

NUCLEO-L152RE
NUCLEO-L152RE

Grüne LED an PA5 (D13) , Blauer UserButton an PC13 mit PullUp-Widerstand und ist entprellt.

Pinbelegung
Pinbelegung
  • Violett gekennzeichnet sind die PINs (mit ihrer Bezeichnung), die über die Arduino-Konnectoren nach nach außen gezogen sind. 
  • Blau gekennzeichnet sind die PINs (mit ihrer Bezeichnung), die nur über die STM-Konnectoren erreichbar sind.
  • Gelb hinterlegt sind GPIO-Pins die software-seitig als analoger PIN definiert werden KÖNNEN
  • Grau hinterlegt sind GPIO-Pins die auf dem Board nicht nach außen geführt sind

Mit analogWrite(Pin,Wert) können nur die 6 von Arduino vorgesehenen Pins verwendet werden.

Aduino PinSTM32 Pin
D3PB3
D5PB4
D6PB10
D9PC7
D10PB6
D11PA7
Pins für analoge Ausgabe

Funduino Expansion Board für NUCLEO STM32

Entwickelt von Jörg Sturm, kostet bei Funduio.de 28,90€ pro Stück. Bezeichnung:
ST-JS: Funduino Expansion Board für NUCLEO STM32 – Controller nicht enthalten

Baseshield V1.2 von Jörg Sturm
Baseshield V1.2 von Jörg Sturm
Schaltplan BaseshieldV1.2
Schaltplan BaseshieldV1.2

LCD-Ausgabe via I2C an Baseshield V1.2?

Das I2C-LCD-Display ist an PA11 (SCL) und PA12 (SDA) angeschlossen. Beim Assembler und bei MBED hat Herr Sturm eine Software I2C-Lösung zur Anbindung verwendet, d.h. es wird nicht die I2C-Hardware des Controllers genutzt, sondern die Schnittstelle ist per Software realisiert.
Die Arduino I2C-Library Wire benutzt standardmässig D15 = PB8 (SCL) und D14 = PB9 (SDA). Meine einfache Lösung sind zwei Drahtbrücken:

  • Serial Clock SCL: D15 = PB8 -> PA11
  • Serial Data SDA: D14 = PB9 -> PA12
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd (0x27); // LCD-Adresse auf 0x27 für 16 Zeichen und 2 Zeilen ein

void setup() {
   lcd.begin(16, 2); // initialize the lcd
   lcd.clear();
   lcd.setBacklight(255);
   lcd.setCursor(0,0); // erstes Zeichen, erste Zeile
   lcd.print("MezMedia.de");
}

void loop() { 
  delay(1000);
  lcd.setBacklight(255);
  lcd.setCursor(0,1); // erstes Zeichen, zweite Zeile
  lcd.print("Viel Erfolg!"); 
  delay(1000);
  for (int i= 255;i>=0;i--){
    lcd.setBacklight(i);
    lcd.setCursor(0, 1);
    lcd.printf("Backlight: %d    ",i); 
    delay(50);
  }
}

Mit dem Testprogramm erkannt: Die Hintergrundbeleuchtung geht nur an und aus. 😕
Beim STM32L152RE gibt es zwei I2C Schnittstellen, die über eine interne Verdrahtungsmatrix auf unterschiedliche Ports geschaltet werden können. Im Datenblatt ab Seite 47 sind die möglichen Anschluss-Pins für I2C zu finden.
PA11 und PA12 sind leider nicht dabei. 😭
Nach der API-Beschreibung kann die zweite Schnittstelle recht leicht eingerichtet werden, auch dort könnte das LCD-Display mit Drahtbrücken von PB10 und PB11 angeschlossen werden. Leider wird dies mit der BlueTooth Schnittstelle kollidieren.
Oder ich krieg es mit einer Softwarelösung hin…

I2C Drahtbrücken
I2C Drahtbrücken
I2C Drahtbrücken
PinI2C
PB5 (D4)I2C1_SMBA
PB6 (D10)I2C1_SCL
PB7I2C1_SDC
PB8 (D15)I2C1_SCL
PB9 (D14)I2C1_SDA
PB10 (D6)I2C2_SCL
PB11I2C2_SDA
PB12I2C2_SMBA
Mögliche Pins für I2C
Verkabelung bei externem LCD
Verkabelung bei externem LCD

Probleme mit MacOS 13.0.1 Ventura

Ein UpLoad über “Mass Storage” geht nicht.
In der Datei „massStorageCopy.sh“ unter “~/Library/Arduino15/packages/STMicroelectronics/tools/STM32Tools/2.1.1/macosx” zu finden, die Option -l bei df -Hl entfernen. Resolve upload issues on macOS Ventura

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert