{"id":2140,"date":"2026-03-14T08:50:21","date_gmt":"2026-03-14T07:50:21","guid":{"rendered":"https:\/\/g7itchme.wordpress.com\/?p=2140"},"modified":"2026-03-14T08:50:21","modified_gmt":"2026-03-14T07:50:21","slug":"reihe-embedded-world-die-unsichtbaren-gehirne-verstehen-teil-7","status":"publish","type":"post","link":"https:\/\/technodidact.de\/en\/reihe-embedded-world-die-unsichtbaren-gehirne-verstehen-teil-7\/","title":{"rendered":"Reihe: Embedded World \u2013 Die unsichtbaren Gehirne verstehen (Teil 7)"},"content":{"rendered":"<h3 class=\"wp-block-heading\">Der Wald der Schnittstellen \u2013 Kommunikation im Kleinen (UART, I2C, SPI)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Von DerSchneider<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Einleitung: Die Sprache der Ger\u00e4te<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bisher haben wir uns mit dem Inneren eines Embedded Systems besch\u00e4ftigt \u2013 mit seiner Architektur, seinem Takt, seiner direkten Kommunikation \u00fcber Register und Interrupts. Doch ein System allein ist selten. In der realen Welt m\u00fcssen Mikrocontroller mit anderen Komponenten sprechen: mit Sensoren, die Daten liefern, mit Aktoren, die Befehle ausf\u00fchren, mit Speicherchips, die mehr Platz bieten, mit anderen Controllern, die zusammenarbeiten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr diese Gespr\u00e4che braucht es gemeinsame Sprachen \u2013 standardisierte Protokolle, die festlegen, wie Bits \u00fcbertragen werden, wer wann sprechen darf und wie Fehler vermieden werden. In der Embedded World haben sich drei Protokolle als die unangefochtenen Standards etabliert: UART, I2C und SPI. Jedes hat seine St\u00e4rken, seine Schw\u00e4chen und seinen typischen Einsatzzweck.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Artikel f\u00fchrt durch diesen Wald der Schnittstellen. Wir lernen die drei gro\u00dfen &#8222;Sprachen&#8220; der Embedded-Kommunikation kennen, verstehen ihre Unterschiede und wissen, wann man welche einsetzt.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Hauptteil<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Die Grundbegriffe: Was alle Protokolle gemeinsam haben<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor wir in die Details der einzelnen Protokolle einsteigen, kl\u00e4ren wir einige Begriffe, die f\u00fcr alle gelten:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Synchron vs. Asynchron:<\/strong>&nbsp;Bei synchroner Kommunikation gibt es ein separates Taktsignal, das den Rhythmus vorgibt. Sender und Empf\u00e4nger sind durch diesen gemeinsamen Takt verbunden. Bei asynchroner Kommunikation gibt es keinen gemeinsamen Takt \u2013 beide Seiten m\u00fcssen sich vorher auf eine Geschwindigkeit (Baudrate) einigen und den Takt selbst erzeugen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Seriell vs. Parallel:<\/strong>&nbsp;Serielle Kommunikation \u00fcbertr\u00e4gt Bits nacheinander \u00fcber eine Leitung. Parallele Kommunikation \u00fcbertr\u00e4gt mehrere Bits gleichzeitig \u00fcber mehrere Leitungen. Seriell ist langsamer, braucht aber weniger Leitungen \u2013 in der Embedded World fast immer die bessere Wahl.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Halbduplex vs. Vollduplex:<\/strong>&nbsp;Halbduplex bedeutet, dass in beide Richtungen gesendet werden kann, aber nicht gleichzeitig. Vollduplex erlaubt gleichzeitiges Senden und Empfangen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Master vs. Slave:<\/strong>&nbsp;In vielen Protokollen gibt es einen Master, der den Takt vorgibt und die Kommunikation steuert, und einen oder mehrere Slaves, die antworten. (Die Begriffe sind historisch gewachsen und werden zunehmend durch alternative Bezeichnungen wie &#8222;Controller&#8220; und &#8222;Peripheral&#8220; ersetzt.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Der Urvater: UART (Universal Asynchronous Receiver Transmitter)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beginnen wir mit dem \u00e4ltesten und einfachsten Protokoll: UART. Es ist die Grundlage der klassischen seriellen Schnittstelle, wie sie fr\u00fcher an Computern f\u00fcr Maus und Modem verwendet wurde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prinzip:<\/strong>&nbsp;UART ist asynchron und arbeitet mit nur zwei Leitungen: TX (Senden) und RX (Empfangen). Beide Seiten m\u00fcssen sich vorher auf eine gemeinsame Geschwindigkeit einigen \u2013 die Baudrate, typisch 9600, 115200 oder 1.000.000 Bit pro Sekunde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn keine Daten gesendet werden, liegt die Leitung auf HIGH (logisch 1). Der Beginn einer \u00dcbertragung wird durch ein Startbit markiert (Leitung auf LOW). Dann folgen die Datenbits (meist 8), oft ein Parity-Bit zur Fehlererkennung, und mindestens ein Stopbit (wieder HIGH), das das Ende markiert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>St\u00e4rken:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Einfach und seit Jahrzehnten etabliert<\/li>\n\n\n\n<li>Kommt mit nur zwei Leitungen aus (bei bidirektionaler Kommunikation)<\/li>\n\n\n\n<li>Weit verbreitet, jeder Mikrocontroller hat mindestens eine UART-Hardware<\/li>\n\n\n\n<li>Einfach zu debuggen \u2013 man kann alles mit einem USB-Seriell-Wandler am PC mitlesen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schw\u00e4chen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Punkt-zu-Punkt-Verbindung \u2013 nur zwei Teilnehmer m\u00f6glich<\/li>\n\n\n\n<li>Asynchron \u2013 beide Seiten m\u00fcssen genau die gleiche Taktfrequenz haben, sonst gibt es Bitfehler<\/li>\n\n\n\n<li>Relativ langsam (typisch bis 1 Mbit\/s, manchmal mehr)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Typische Anwendungen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Debug-Ausgabe vom Mikrocontroller zum PC<\/li>\n\n\n\n<li>Kommunikation mit GPS-Modulen, Bluetooth-HCs, manchen Sensoren<\/li>\n\n\n\n<li>Verbindung zwischen zwei Mikrocontrollern<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">In der Arduino-Welt ist UART allgegenw\u00e4rtig. Der serielle Monitor, \u00fcber den wir Daten anzeigen, nutzt genau dieses Protokoll.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Der Allesk\u00f6nner: I2C (Inter-Integrated Circuit)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I2C, entwickelt von Philips in den 1980er Jahren, ist der Star unter den Embedded-Protokollen. Es erlaubt, viele Ger\u00e4te mit nur zwei Leitungen zu verbinden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prinzip:<\/strong>&nbsp;I2C braucht zwei Leitungen: SCL (Clock) f\u00fcr den Takt und SDA (Data) f\u00fcr die Daten. Beide Leitungen sind &#8222;Open-Drain&#8220; \u2013 sie werden \u00fcber Pull-up-Widerst\u00e4nde auf HIGH gezogen, und jedes Ger\u00e4t kann sie auf LOW ziehen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es gibt immer einen Master (meist der Mikrocontroller), der den Takt vorgibt. Jedes Ger\u00e4t hat eine eindeutige Adresse (7 oder 10 Bit). Wenn der Master mit einem bestimmten Ger\u00e4t sprechen will, sendet er dessen Adresse auf den Bus. Das adressierte Ger\u00e4t antwortet, und dann k\u00f6nnen Daten ausgetauscht werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>St\u00e4rken:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Viele Ger\u00e4te (theoretisch bis zu 127) an nur zwei Leitungen<\/li>\n\n\n\n<li>Einfach zu erweitern \u2013 einfach neue Ger\u00e4te dazu stecken<\/li>\n\n\n\n<li>Ger\u00e4te k\u00f6nnen Master und Slave sein (Multi-Master-F\u00e4higkeit)<\/li>\n\n\n\n<li>Weit verbreitet \u2013 unz\u00e4hlige Sensoren, Speicher, Displays nutzen I2C<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schw\u00e4chen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Relativ langsam (typisch 100 kHz oder 400 kHz, manchmal bis 3,4 MHz)<\/li>\n\n\n\n<li>Adresskonflikte m\u00f6glich, wenn zwei gleiche Ger\u00e4te die gleiche Adresse haben<\/li>\n\n\n\n<li>Die Pull-up-Widerst\u00e4nde m\u00fcssen richtig dimensioniert sein<\/li>\n\n\n\n<li>Bei langen Leitungen anf\u00e4llig f\u00fcr St\u00f6rungen<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Typische Anwendungen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sensoren (Temperatur, Luftfeuchtigkeit, Druck, Helligkeit)<\/li>\n\n\n\n<li>Kleine EEPROM-Speicher<\/li>\n\n\n\n<li>Displays (OLED, LCD mit I2C-Adapter)<\/li>\n\n\n\n<li>Echtzeituhren (RTC)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">I2C ist der ideale Bus f\u00fcr die Innenwelt eines Ger\u00e4ts \u2013 viele Komponenten, wenige Leitungen, gem\u00e4chliches Tempo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Der Sprinter: SPI (Serial Peripheral Interface)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn es schnell gehen muss, kommt SPI zum Einsatz. Es ist das Rennpferd unter den Embedded-Protokollen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prinzip:<\/strong>&nbsp;SPI braucht vier Leitungen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SCLK (Serial Clock):<\/strong>\u00a0Der Takt vom Master<\/li>\n\n\n\n<li><strong>MOSI (Master Out Slave In):<\/strong>\u00a0Daten vom Master zum Slave<\/li>\n\n\n\n<li><strong>MISO (Master In Slave Out):<\/strong>\u00a0Daten vom Slave zum Master<\/li>\n\n\n\n<li><strong>SS (Slave Select):<\/strong>\u00a0Eine Leitung pro Slave, mit der der Master den gew\u00fcnschten Teilnehmer aktiviert<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">SPI ist vollduplex \u2013 es k\u00f6nnen gleichzeitig Daten in beide Richtungen flie\u00dfen. Der Master gibt den Takt vor und w\u00e4hlt durch das SS-Signal aus, mit welchem Slave er spricht. Alle anderen Slaves ignorieren den Bus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>St\u00e4rken:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sehr schnell (typisch 10-50 MHz, manchmal mehr)<\/li>\n\n\n\n<li>Vollduplex \u2013 gleichzeitiges Senden und Empfangen<\/li>\n\n\n\n<li>Einfache Hardware, keine aufwendige Protokoll-Logik<\/li>\n\n\n\n<li>Beliebig erweiterbar (durch zus\u00e4tzliche SS-Leitungen)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Schw\u00e4chen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Viele Leitungen (mindestens 3 + eine pro Slave)<\/li>\n\n\n\n<li>Kein standardisiertes Protokoll auf h\u00f6herer Ebene \u2013 jeder Hersteller macht, was er will<\/li>\n\n\n\n<li>Keine Adressierung \u2013 der Master muss jeden Slave einzeln ansteuern<\/li>\n\n\n\n<li>Begrenzte Entfernungen (eher f\u00fcr Board-intern)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Typische Anwendungen:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SD-Karten<\/li>\n\n\n\n<li>Display mit hoher Bildwiederholrate<\/li>\n\n\n\n<li>Schnelle AD-Wandler<\/li>\n\n\n\n<li>Flash-Speicherchips<\/li>\n\n\n\n<li>Kommunikation zwischen FPGAs und Mikrocontrollern<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">SPI ist die Wahl, wenn es auf Geschwindigkeit ankommt \u2013 aber der Preis ist mehr Leitungen und komplexere Verkabelung bei vielen Ger\u00e4ten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. Vergleich: Wann nehme ich was?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die folgende \u00dcbersicht hilft bei der Wahl:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Kriterium<\/th><th class=\"has-text-align-left\" data-align=\"left\">UART<\/th><th class=\"has-text-align-left\" data-align=\"left\">I2C<\/th><th class=\"has-text-align-left\" data-align=\"left\">SPI<\/th><\/tr><\/thead><tbody><tr><td>Leitungen<\/td><td>2 (TX\/RX)<\/td><td>2 (SDA\/SCL)<\/td><td>3 + n (SCLK, MOSI, MISO + SS pro Slave)<\/td><\/tr><tr><td>Teilnehmer<\/td><td>2<\/td><td>Viele (Adressen)<\/td><td>Viele (\u00fcber SS)<\/td><\/tr><tr><td>Geschwindigkeit<\/td><td>Mittel (bis ~1 Mbit\/s)<\/td><td>Langsam (100 kHz &#8211; 3,4 MHz)<\/td><td>Hoch (10-50 MHz)<\/td><\/tr><tr><td>Synchronit\u00e4t<\/td><td>Asynchron<\/td><td>Synchron<\/td><td>Synchron<\/td><\/tr><tr><td>Duplex<\/td><td>Halbduplex (meist)<\/td><td>Halbduplex<\/td><td>Vollduplex<\/td><\/tr><tr><td>Komplexit\u00e4t<\/td><td>Sehr einfach<\/td><td>Mittel (Protokoll)<\/td><td>Einfach (Hardware)<\/td><\/tr><tr><td>Entfernung<\/td><td>Gut (einige Meter)<\/td><td>Kurz (Board-intern)<\/td><td>Sehr kurz (Board-intern)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Faustregeln:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>UART,<\/strong>\u00a0wenn Sie einfach zwei Ger\u00e4te verbinden wollen oder zum PC kommunizieren m\u00fcssen.<\/li>\n\n\n\n<li><strong>I2C,<\/strong>\u00a0wenn Sie viele Sensoren oder Komponenten mit wenig Leitungen anbinden wollen.<\/li>\n\n\n\n<li><strong>SPI,<\/strong>\u00a0wenn Sie hohe Geschwindigkeiten brauchen oder komplexe Peripherie wie SD-Karten ansteuern.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6. Erweiterungen und Derivate<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nat\u00fcrlich gibt es von diesen drei Grundprotokollen unz\u00e4hlige Varianten und Erweiterungen:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>UART-Derivate:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RS-232:<\/strong>\u00a0Die klassische PC-Schnittstelle mit h\u00f6heren Spannungen (\u00b112V) f\u00fcr gr\u00f6\u00dfere Entfernungen.<\/li>\n\n\n\n<li><strong>RS-485:<\/strong>\u00a0Differenzielle \u00dcbertragung f\u00fcr sehr lange Strecken und viele Teilnehmer in der Industrie.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>I2C-Derivate:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SMBus (System Management Bus):<\/strong>\u00a0Eine strenger spezifizierte Variante von I2C, oft in PC-Systemen.<\/li>\n\n\n\n<li><strong>PMBus:<\/strong>\u00a0F\u00fcr Stromversorgungen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>SPI-Derivate:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Quad-SPI:<\/strong>\u00a0Nutzt mehrere Datenleitungen parallel f\u00fcr noch h\u00f6here Geschwindigkeit (bei Flash-Chips).<\/li>\n\n\n\n<li><strong>Microwire:<\/strong>\u00a0Eine \u00e4ltere, einfachere Variante von National Semiconductor.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>7. Ein Praxisbeispiel: Sensordaten auslesen mit I2C<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Stellen wir uns vor, wir wollen einen Temperatursensor (z.B. den ber\u00fchmten LM75) \u00fcber I2C auslesen. Der Sensor hat die Adresse 0x48 (typisch f\u00fcr viele I2C-Ger\u00e4te).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ablauf auf dem Bus:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Master sendet START-Bedingung.<\/li>\n\n\n\n<li>Master sendet die 7-Bit-Adresse (0x48) plus ein Schreib-Bit (0).<\/li>\n\n\n\n<li>Sensor antwortet mit ACK (Acknowledge).<\/li>\n\n\n\n<li>Master sendet das Register, das er lesen will (z.B. 0x00 f\u00fcr Temperatur).<\/li>\n\n\n\n<li>Sensor antwortet mit ACK.<\/li>\n\n\n\n<li>Master sendet erneute START-Bedingung (Repeated Start).<\/li>\n\n\n\n<li>Master sendet die Adresse plus ein Lese-Bit (1).<\/li>\n\n\n\n<li>Sensor antwortet mit ACK und sendet dann die Temperaturdaten (2 Bytes).<\/li>\n\n\n\n<li>Master quittiert jedes Byte mit ACK, nach dem letzten mit NACK.<\/li>\n\n\n\n<li>Master sendet STOP-Bedingung.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In der Arduino-Welt reduziert sich das auf:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">c<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Wire.beginTransmission(0x48);\nWire.write(0x00);\nWire.endTransmission();\nWire.requestFrom(0x48, 2);\nint temp = (Wire.read() &lt;&lt; 8) | Wire.read();<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hinter diesen wenigen Zeilen verbirgt sich das gesamte Protokoll \u2013 die Bibliothek erledigt den Rest. Aber zu wissen, was da eigentlich passiert, hilft ungemein beim Debuggen, wenn mal etwas nicht funktioniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>8. Fehlersuche im Protokoll-Dschungel<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn die Kommunikation nicht klappt, sind die h\u00e4ufigsten Fehler:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bei UART:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Falsche Baudrate (die h\u00e4ufigste Fehlerquelle!)<\/li>\n\n\n\n<li>TX und RX vertauscht<\/li>\n\n\n\n<li>Falsche Pegel (3,3V vs. 5V)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bei I2C:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fehlende oder falsche Pull-up-Widerst\u00e4nde<\/li>\n\n\n\n<li>Adresse falsch (oft 7-Bit vs. 8-Bit Verwirrung)<\/li>\n\n\n\n<li>Zwei Ger\u00e4te mit gleicher Adresse<\/li>\n\n\n\n<li>Bus h\u00e4ngt durch ung\u00fcltigen Zustand<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Bei SPI:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Falsche Polarity\/Phase (CPOL, CPHA) \u2013 das muss zum Slave passen<\/li>\n\n\n\n<li>SS nicht richtig angesteuert<\/li>\n\n\n\n<li>Leitungen vertauscht (MOSI mit MISO)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Logikanalysator ist hier das Werkzeug der Wahl. Er zeigt die tats\u00e4chlichen Signale auf dem Bus und macht sichtbar, was wirklich passiert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Fazit und Ausblick<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UART, I2C und SPI sind die drei S\u00e4ulen der lokalen Kommunikation in Embedded Systems. Jedes hat sein Einsatzgebiet, seine St\u00e4rken und Schw\u00e4chen. Wer sie beherrscht, kann fast jedes Ger\u00e4t an seinen Mikrocontroller anschlie\u00dfen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Doch die Kommunikation ist nur ein Teil. Das Programm, das diese Kommunikation steuert, muss irgendwo laufen \u2013 und zwar oft ohne Betriebssystem, direkt auf der nackten Hardware.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mit dieser Welt des &#8222;Bare-Metal&#8220;-Programmierens besch\u00e4ftigen wir uns im n\u00e4chsten Artikel.<\/p>","protected":false},"excerpt":{"rendered":"<p>Der Wald der Schnittstellen \u2013 Kommunikation im Kleinen (UART, I2C, SPI) Von DerSchneider Einleitung: Die Sprache der Ger\u00e4te Bisher haben wir uns mit dem Inneren eines Embedded Systems besch\u00e4ftigt \u2013 mit seiner Architektur, seinem Takt, seiner direkten Kommunikation \u00fcber Register und Interrupts. Doch ein System allein ist selten. In der realen Welt m\u00fcssen Mikrocontroller mit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[46,26],"tags":[2069],"class_list":["post-2140","post","type-post","status-publish","format-standard","hentry","category-industrie-4-0","category-mit-den-handen","tag-embedded-world"],"_links":{"self":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/comments?post=2140"}],"version-history":[{"count":0,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/posts\/2140\/revisions"}],"wp:attachment":[{"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/media?parent=2140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/categories?post=2140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/technodidact.de\/en\/wp-json\/wp\/v2\/tags?post=2140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}