1.0 Arduino für STM32 Überblick

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

NUCLEO L152RE

Synopsis: [stm32l152re-Überblick] [Referenz-Manual RM008] [Datenblatt stm32l152re] [API stm23duino] Beschafft bei reichelt.de

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

Nucleo L152RE Pinbelegung

PinNameArduinoAnalogTimerI2CSPIU(S)ARTDAC
2PC13
UserB
3PC14
4PC15
5PH0
6PH1
8PC0A5ADC_IN10
9PC1A4ADC_IN11
10PC2ADC_IN12
11PC3ADC_IN13
14PA0A0ADC_IN0TIM2_CH1_ETR
TIM5_CH1
USART2_CTS
15PA1A1ADC_IN1TIM2_CH2
TIM5_CH2
USART2_RTS
16PA2D1/TXADC_IN2TIM2_CH3
TIM5_CH3
TIM9_CH1
USART2_TX
17PA3D0/RXADC_IN3TIM2_CH4
TIM5_CH4
TIM9_CH2
USART2_RX
20PA4A2ADC_IN4SPI1_NSS
SPI3_NSS
USART2_CKDAC_OUT1
21PA5
LED
D13/SCKADC_IN5TIM2_CH1_ETRSPI1_SCKDAC_OUT2
22PA6D12/MISOADC_IN6TIM3_CH1
TIM10_CH1
SPI1_MISO
23PA7D11/MOSI/PWMADC_IN7TIM3_CH2
TIM11_CH1
SPI1_MOSI
24PC4ADC_IN14
25PC5ADC_IN15
26PB0A3ADC_IN8TIM3_CH3VREF_OUT
27PB1ADC_IN9TIM3_CH4VREF_OUT
28PB2
29PB10D6/PWMTIM2_CH3I2C2_SCLUSART3_TX
30PB11TIM2_CH4I2C2_SDAUSART3_RX
33PB12ADC_IN18TIM10_CH1I2C2_SMBASPI2_NSSUSART3_CK
34PB13ADC_IN19TIM9_CH1SPI2_SCKUSART3_CTS
35PB14ADC_IN20TIM9_CH2SPI2_MISOUSART3_RTS
36PB15ADC_IN21TIM11_CH1SPI2_MOSI
37PC6TIM3_CH1
38PC7D9/PWMTIM3_CH2
39PC8TIM3_CH3
40PC9TIM3_CH4
41PA8D7USART1_CK
42PA9D8USART1_TX
43PA10D2USART1_RX
44PA11SPI1_MISOUSART1_CTS
45PA12SPI1_MOSIUSART1_RTS
46PA13
49PA14
50PA15TIM2_CH1_ETRSPI1_NSS
SPI3_NSS
51PC10SPI3_SCKUSART3_TX
UART4_TX
52PC11SPI3_MISOUSART3_RX
UART4_RX
53PC12SPI3_MOSIUSART3_CK
UART5_TX
54PD2TIM3_ETRUART5_RX
55PB3D3/PWMTIM2_CH2SPI1_SCK
SPI3_SCK
56PB4D5/PWMTIM3_CH1SPI1_MISO
SPI3_MISO
57PB5D4TIM3_CH2I2C1_SMBASPI1_MOSI
SPI3_MOSI
58PB6D10/CS/PWMTIM4_CH1I2C1_SCLUSART1_TX
59PB7TIM4_CH2I2C1_SDAUSART1_RX
61PB8D15/SCL TIM4_CH3
TIM10_CH1
I2C1_SCL
62PB9D14/SDATIM4_CH4
TIM11_CH1
I2C1_SDA

Funduino Expansion Board für NUCLEO STM32

Entwickelt von Jörg Sturm, kostet bei Funduio.de 28,90€ pro Stück.
Link zum Produkt: [Funduino Expansion Board für NUCLEO STM32] Es wird noch ein NUCLEO-Board z.B. L152RE benötigt, ist 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

Schreibe einen Kommentar

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