MCU-Butler - Teil 3 (MCU-Module)

Nachdem das PCB für den MCU-Butler aufgebaut ist, müssen jetzt die MCU-Module bzw. Board-Module designed werden. Diese sind relativ einfach strukturiert. Auf der Unterseite sind zwei Stiftleisten vorzusehen, passend zum Footprint des Modul-Steckplatzes auf dem Butler-Bord. Auf einem MCU-Modul wird dann auf der Oberseite nur ein Contoller platziert, auf dem alle Signale auf seitliche Präzisionsbuchsenleisten geführt sind. Hier erfolgt dann später die Verbindung zu den I/O-Komponenten mit Jumperkabeln.
Auf einem Board-Modul werden doppelreihige Präzisionsfassungen so gesetzt, dass das Entwicklungsboard in die inneren Buchsenleisten eingesteckt werden kann (z.B. Arduino Nano). die beiden äußeren Buchsenreihen sind wieder zum Patchen für die Jumperkabel vorgesehen. Die benachbarten Pins sind dazu auf dem PCB zu verbinden.
In jedem Fall sind im Beschriftungsaufdruck der Platine die Pins mit den entsprechenden Signalnamen zu bezeichnen.
Dann muss man sich genau überlegen, welche Leitungen man vom  MCU-Modul-Sockel übernehmen will. Das ist in jedem Fall GND. MCU-Module brauchen auch zwingend eine Betriebsspannung. Da stehen 5V und 3,3V zur Verfügung. In vielen Fällen ist es sinnvoll, auch die Programmiersignale zu nutzen. Die stehen ja für AVR- und ST-Controller zur Verfügung. Bei Board-Modulen wie z.B ESP32-Wroom oder Node MCU macht das keinen Sinn. Die werden ohnehin über die eigene USB-Schnittstelle geflasht. Bei Arduino-Boards sind beide Optionen möglich.
Was in jedem Fall gemacht werden muss, ist die Anbindung von PW an 3,3V oder 5V. Das muss sich mit dem verwendeten Logikpegel/Betriebsspannung im Zielsystem decken.
Ich habe mir für die Entwicklung meiner Module ein PCB-Template vorbereitet, was immer nur kopiert werden muss und als Grundlage für ein neues Design geeignet ist.
Nachfolgend stelle ich alle bisherigen Boards vor, die ich schon entwickelt habe. Ich gehe da noch mal auf die Besonderheiten ein. Damit sollte es nicht schwer fallen, eigene PCBs zu designen.

Fertigungsnutzen diverser Module
Beispiel für MCU-Modul (ATmega x8 mit TQFP-Gehäuse)
Beispiel für Board-Modul (ESP32 Wroom)

Signalbeschreibung

AVR_RST
AVR_SCLK
AVR_MISO
AVR_MOSI
MCX
MRX
SWCLK
SWIM
SWDIO
SWRST
XTAL1
XTAL2
I²S_SDA
I²S_SCL
3,3P
5P
A5P
GND
PW

Signal vom UABasp 2 -Programmer, zusätzlich verbunden mit RESET-Taster (low aktiv)
Signal vom UABasp 2 -Programmer
Signal vom UABasp 2 -Programmer
Signal vom UABasp 2 -Programmer
serieles Ausgangssignal am Zielsystem
serielles Eingangssignal am Zielsystem
Signal vom ST-Link V2 – Programmer
Signal vom ST-Link V2 – Programmer
Signal vom ST-Link V2 – Programmer
Signal vom ST-Link V2 – Programmer
externer Quarz
externer Quarz
I²C-Bus – Datenleitung
I²C-Bus – Taktleitung
Betriebsspannung 3,3V
Betriebsspannung 5V
analoge Betriebsspannung 5V
Ground-Signal
Ausgang Betriebsspannung MCU-Butler-Board

Template für MCU- und Board-Module

MCU-Modul MICROCHIP (ATMEL) ATmega x8; TQFP32

Dieses Modul ist zur Bestückung mit einem TQFP-Gehäuse der ATmega-Serie geeignet, also angefangen vom ATmege48 bis ATmege328 und allen kompatiblen Typen. Dazu ist ein zentraler Lötplatz vorhanden.

Die Betriebsspannungsversorgung erfolgt mit 5V über den Modul-Stechplatz am Anschluss 5P. PW ist auch mit 5V beschaltet, sodass auch alle Logikpegel mit dieser Spannung arbeiten.

Die Programmierleitungen sind zum Programmer  USBasp durchgeschaltet. Dazu müssen natürlich alle vier Jumper  an  JP13 gesetzt sein.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an  JP9 gesetzt werden.

Ebenso angeschlossen sind A5P, die 5V-Betriebsspannung für den Analogteil in den ATmegas.

Das System kann mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt werden.

MCU-Modul MICROCHIP (ATMEL) ATmega x8; DIP28

Dieses Modul ist ebenfalls zur Bestückung mit den gleichen Controllern der ATmega-Serie geeignet, allerdings mit den Varianten im DIP-Gehäuse. Dazu sind mittig Präzisionsbuchsenleisten vorgesehen. Dafür kann auch eine normale 20polige IC-Fassung verwendet werden.

Die Betriebsspannungsversorgung erfolgt mit 5V über den Modul-Stechplatz am Anschluss 5P. PW ist auch mit 5V beschaltet, sodass auch alle Logikpegel mit dieser Spannung arbeiten. Die Programmierleitungen sind zum Programmer  USBasp durchgeschaltet. Dazu müssen natürlich alle vier Jumper  an  JP13 gesetzt sein.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an  JP9 gesetzt werden.

Ebenso angeschlossen sind A5P, die 5V-Betriebsspannung für den Analogteil in den ATmegas.

Das System kann mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt werden.

MCU-Modul MICROCHIP (ATMEL) ATmega 16/32; TQFP44

Dieses Modul ist zur Bestückung mit den TQFP-Varianten des ATmega16 bzw.  ATmega32 geeignet. Dazu ist ein zentraler Lötplatz vorhanden.

Die Betriebsspannungsversorgung erfolgt mit 5V über den Modul-Stechplatz am Anschluss 5P. PW ist auch mit 5V beschaltet, sodass auch alle Logikpegel mit dieser Spannung arbeiten.

Die Programmierleitungen sind zum Programmer  USBasp durchgeschaltet. Dazu müssen alle vier Jumper  an  JP13 gesetzt sein.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an  JP9 gesetzt werden.

Ebenso angeschlossen sind A5P, die 5V-Betriebsspannung für den Analogteil in den ATmegas.

Das System kann mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt werden.

MCU-Modul MICROCHIP (ATMEL) ATmega 16/32; DIP40

Dieses Modul ist zur Bestückung mit dem ATmega16 bzw.  dem ATmega32 geeignet, allerdings mit den DIP40-Gehäusevarianten Dazu ist ein zentraler Stckplatz vorhanden. Der kann entweder mit Präzisionsbuchsen oder einer 40poligen IC-Fassung aufgebaut werden.

Die Betriebsspannungsversorgung erfolgt mit 5V über den Modul-Stechplatz am Anschluss 5P. PW ist auch mit 5V beschaltet, sodass auch alle Logikpegel mit dieser Spannung arbeiten. Die Programmierleitungen sind zum Programmer  USBasp durchgeschaltet. Dazu müssen alle vier Jumper  an  JP13 gesetzt sein.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an  JP9 gesetzt werden.

Ebenso angeschlossen sind A5P, die 5V-Betriebsspannung für den Analogteil in den ATmegas.

Das System kann mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt werden.

Board-Modul ARDUINO NANO V3.0

Dieses Board-Modul ist zur Bestückung mit dem Arduino Nano (ATmega328) vorgesehen. Er wird mittig auf den Steckplatz gesetzt.

Die Betriebsspannungsversorgung erfolgt mit 5V über den Modul-Stechplatz am Anschluss 5P. Die Spannung wird über eine Schottky-Diode am Anschluss 5V des Nano eingespeist. Dadurch werden Querströme mit der 5V-Versorgung über die USB-Buchse verhindert.
PW ist auch mit 5V beschaltet, sodass auch alle Logikpegel mit dieser Spannung arbeiten.

Für die Programmierung gibt es zwei Möglichkeiten. Zum Flashen über den MCU-Butler sind die Programmierleitungen zum Programmer  USBasp durchgeschaltet. Dazu müssen alle vier Jumper  an JP13 gesetzt sein.
Man kann den Nano aber auch über die USB-Buchse flashen. Das ist insbesondere dann sinnvoll, wenn zur Programmentwicklung die Arduino-IDE verwendet wird. Dann müssen aber die Jumper an JP13 entfernt werden! Der Nano wird dann direkt über ein USB-Kabel mit dem PC verbunden.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an JP9 gesetzt sein.

Das System kann mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt werden

Board-Modul ARDUINO Pro Mini

Dieses Board-Modul ist zur Bestückung mit dem Arduino Pro Mini vorgesehen, also einem abgespeckten Nano ohne USB-Interface. Ihn gibt es mit verschiedenen Footprints und Betriebsspannungen. Beim Design wurden alle aktuellen Varianten berücksichtigt.

Je nach vorhandener Variante, muss hier die interne Betriebsspannung am Jumper Powering eingestellt werden. 5V oder 3,3V sind möglich. PW wird dadurch auch automatisch angepasst.

Für die Programmierung sind alle notwendigen Leitungen zum USBasp geführt. Dazu müssen alle vier Jumper JP13  gesetzt sein.

Auch die seriellen Signale RXD und TXD sind direkt mit dem USB/serial-Interface des MCU-Butlers verdrahtet. Um dieses nutzen zu können, müssen die zugehörigen Jumper MRX und MTX an JP9 gesetzt werden.

Das System wird mit dem RESET-Taster auf dem MCU-Butler zurückgesetzt.

MCU-Modul ATtiny universal

Mit diesem MCU-Board können die ATtiny 13, 25, 45, 85 programmiert werden. Es ist entweder möglich die SMD-Typen fest einzulöten oder die DIP-Varianten zu stecken. Der Tiny 13 und die Serie x5 sind nicht pinkompatibel! Hier ist genau auf die Beschriftung zu achten. Die Anschlussnamen bei der x5er Serie sind unterstrichen dargestellt.
Die Programmierung erfolgt über den USBasp, wenn alle vier Jumper  an JP13 gesetzt sein. Über den Modul-Jumper JP1 kann die Betriebsspannung für das Modul definiert werde. 

Board-Modul NodeMCU ESP8266 ----ESP-12

Auch dieses Board von ESPRESSIF wird mit 5V aus dem Anschluss 5P versorgt. Intern arbeitet es auch nur mit 3,3V. PW ist deshalb ebenfalls auf 3,3V gesetzt. Das Board wird auch bei Anschluss über die USB-Leitung mit 5V Betriebsspannung versorgt. Beide Betriebsspannungen werden über Dioden zugeführt, sodass keine Querströme fließen können.

Die Programmierung erfolgt grundsätzlich über den USB-Anschluss des Boards.
Aufgrund der großzügigen Speicherausstattung ist PYTON die erste Wahl. Die Entwicklung wird sehr gut durch Thonny unterstützt.
Für C/C++  bieten sich die Arduino-IDE als auch Visual Studio Code an. Weiterhin gibt es von ESPRESSIF ein spezielles Upload-Tool.

Board-Modul ESP WROOM-32D

Das ESP32 WROOM Board von ESPRESSIF wird mit 5V aus dem Anschluss 5P versorgt. Diese Spannung wird auf dem Entwicklungsboard auf 3,3V heruntergeregelt. PW ist deshalb ebenfalls auf 3,3V gesetzt. Das Board wird auch bei Anschluss über die USB-Leitung mit 5V Betriebsspannung versorgt. Beide Betriebsspannungen werden über Dioden zugeführt, sodass keine Querströme fließen können.

Die Programmierung erfolgt grundsätzlich über den USB-Anschluss des Boards.
Aufgrund der großzügigen Speicherausstattung ist PYTON die erste Wahl. Die Entwicklung wird sehr gut durch Visual Studio Code mit entsprechenden Plugins oder auch Thonny unterstützt.
Für C/C++  bieten sich die Arduino-IDE als auch Visual Studio Code an.
Weiterhin gibt es von ESPRESSIF ein spezielles Upload-Tool.

Board-Modul ESP01 (S)

Das ESP01(S) ist ein abgespecktes ESP8266-Bord und hat nur wenige herausgeführte Pins. Es ist jedoch WLAN-fähig. Die Versorgung erfolgt über 3,3V. Die Programmierung erfolgt über die serielle Schnittstelle. Das Board wird durch das serielle Interface auf dem MCU-Butler unterstützt. Dazu müssen nur die beiden Jumper neben dem Interface gesetzt werden.

Um in den Programmiermodus zu gelangen, sind zwei Taster auf dem MCU-Board entsprechend zu betätigen (beide Taster drücken, dann erst RESET, danach FLASH loslassen).

Wird  JP1 offen gelassen, ist die S-Variante aktiv. Um die älteren Modelle zu programmieren, muss der Jumper gesetzt werden.

Board-Modul ESP32C3 Super Mini

Dieses Modul ist ein Abkömmling des ESP32 mit weniger Pins. Das Board kommt mit einer USB-C-Schnittstelle zur Programmierung und seriellem Datenaustausch. Die Ausstattung und Performance ist ähnlich wie beim WROOM-Board. Auch hier ist genügen Flash-Speicher vorhanden, um einen PHYTON-Interpreter zu laden.

Die Versorgungsspannung beträgt 5V

 

Board-Modul ESP Universalbrenner

Dieses Board-Modul ist geeignet einen universellen ESP-Brenner/-Entwicklungsboard aufzunehmen. Damit eröffnet sich die Möglichkeit ESP-Chips direkt zu programmieren. Unterstützt werden ESP01-Boards und Chips der Serien ESP12 sowie ESP32. Dafür sind entsprechende Fassungen mit Federkontakten vorgesehen. Diese Brenner sind z.B. hier zu haben.
Das Modul wird mit 3,3V versorgt.
Die  Programmierung erfolgt über die Board-eigene USB-C-Schnittstelle. 

Board-Modul STM32F103C8T6 -----"Blue Pill"

Das „Blue Pill“-Entwicklungsboard ist mit eien STM-Controller ausgestattet. Es wird mit 5V aus dem Anschluss 5P versorgt. Diese Spannung wird auf dem Entwicklungsboard auf 3,3V heruntergeregelt. PW ist deshalb ebenfalls auf 3,3V gesetzt. Das Board wird bei Anschluss über die USB-Leitung ebenfalls mit 5V Betriebsspannung versorgt. Leider ist dort keine Schutzdiode vorhanden! Deshalb muss in diesem Fall der Jumper JP1 (VCC) gezogen werden. Ich habe im praktischen Betrieb mit gesetztem Jumper und USB-Anschluss zwar keine Probleme feststellen können aber das kann auf anderen System ganz anders aussehen. Fakt ist, dass auf dem „Blue Pill“ die Spannung von der USB-Buchse nicht über eine Diode zugeführt wird. Ein gezogener Jumper ist also bei USB-Betrieb auf jedem Fall zu empfehlen.

Die Programmierung kann auf zwei Wegen erfolgen. Alle Programmierleitungen sind zum ST-Link-Stick geführt, sodass dieses Board über den Stick programmiert werden kann.
Alternativ erfolgt das Flashen über die USB-Buchse (JP1 gezogen!). Entsprechende Entwicklungsumgebungen wie die Arduino-IDE unterstützen das.

Die seriellen Leitungen TXD und RXD sind an der USART3 des STM32F103C8T6 angeschlossen. Um diese zu nutzen, müssen die zugehörigen Jumper MRX und MTX an JP9 gesetzt werden.

Um ein Reset auszuführen, ist der Taster auf dem „Blue Pill“-Board zu nutzen.

MCU-Modul STM32F103C8Tx

Bei diesem MCU-Board wird der gleiche STM-Prozessor eingelötet, der auch im „Blue Pill“ Verwendung findet. Die Spannungsversorgung beträgt 3,3V.
Es gibt zwei Betriebsarten, die über JP4 eingestellt werden. Ist der Jumper auf LOADER gesetzt, erfolgt der Upload über den eingebauten Bootloader. Dazu ist das Board über die USB-C-Buchse anzuschließen.
Wird auf FLASH gejumpert, erfolgt die normale Programmabarbeitung und es kann auch mittels ST-Link V2 geflasht werden. Wenn man STM32Qube als Entwicklungsumgebung verwendet, ist das die bevorzugte Variante. Der ST-Link wird direkt von der STM-IDE, sowohl zum Upload als auch als Debugger, unterstützt.

MCU-Modul STM32G030K8T6

In diesem MCU-Board ist ein STM-Controller mit einem sehr guten Prei-/Leistungsverhältnis eingelötet. Es wird mit 3,3V Betriebsspannung versorgt.
Am Jumper kann die Betriebsart eingestellt werden. Bei H erfolgt die Bootloaderprogrammierung über UART1 (PA9=TX1, PA10=RX1).
Der normale Programmablauf erfolgt bei Jumperung auf L.  Hier ist auch Upload und Debugging über einen ST-Link V2 möglich, wenn angesteckt. Auch hier ist STM32Cube die ideale Entwicklungsumgebung.

Board-Modul Raspberry Pi Pico; RP2040

Der Raspberry Pi Pico wird mit 5V aus dem Anschluss 5P versorgt. Diese Spannung wird auf dem Entwicklungsboard auf 3,3V heruntergeregelt. PW ist deshalb ebenfalls auf 3,3V gesetzt. Das Board wird auch bei Anschluss über die USB-Leitung mit 5V Betriebsspannung versorgt. Beide Betriebsspannungen werden über Dioden zugeführt, sodass keine Querströme fließen können.

Die Programmierung erfolgt grundsätzlich über den USB-Anschluss des Boards. Für die Entwicklung mit C/C++ empfielt der Hersteller Visual Studio Code. Für die Favorisierte PYTON-Entwicklung ist eine ideale Unterstützung durch Thonny gegeben.

 

Board-Modul RP2040-Zero

Der RP2040-Zero ist der kleinere Bruder des Raspberry Pi Pico. Er bietet die gleiche Funktionalität wie dieser, ist aber deutlich kleiner, weil er eine einfache Stromversorgung mit 3,3V hat. Die Programmierung erfolgt auch hier über USB, allerdings mit einer USB-C-Buchse. 

Board-Modul Raspberry Pi 2x20pol.

Das Board-Modul für den Raspberry Pi spielt hier eine Sonderrolle. Es beherbergt weder eine MCU noch ein Entwicklungsboard. Es ist als Adapterboard für die GPIO-Anschlussleiste des RPs zu verstehen. Es trägt deshalb nur einen 2x20poligen Wannenstecker und die Anschlussbuchsen für die Jumperleitungen. Der Rasperry Pi kann dadurch alle Hardwarekomponenten nutzen, die der MCU-Butler bereitstellt.

Die Verbindung zum Raspberry-Pi-Header wird über ein entsprechendes Flachbandkabel mit Pfostenleisten (altes IDE-Kabel) hergestellt.
Über dieses Kabel wird auch die interne Betriebsspannung des Pi geführt. Diese ist nicht mit der Bordspannung des MCU-Butlers verbunden. Das darf auch keinesfalls vorgenommen werden. Beide Geräte haben lediglich gleiches GND-Potential.

 Bekannterweise arbeitet der Raspberry Pi mit 3,3V-Pegeln. Deshalb ist PW auf 3,3V gesetzt. Sobald am Raspberry Pi die Betriebsspannung zugeschaltet wird, erfolgt auf dem Board-Modul eine Anzeige mittels LED.

Die Programmentwicklung erfolgt zweckmäßigerweise direkt auf dem Raspberry Pi selber. Dazu sind genügend Möglichkeiten vorhanden. Auch hier ist PYTON wohl die beste Option.