Forum: Mikrocontroller und Digitale Elektronik Multiple UART (SPI/I2C) für µC


von Ruppie (Gast)


Lesenswert?

Guten Morgen,

Gibt es Bausteine / Chips, welche mehrere UART Schnittstellen über einen 
seriellen Bus, wie I2C oder SPI bereitstellen ?


Ich kenne nur eine Lösung, wo "µC B" - welcher beispielsweise 4 UART 
Ports besitzt, diese als I2C oder SPI Slave bereitstellt.

Gibt es auch eine einfache Lösung wie man einem Controller, welcher nur 
einen
UART Port besitzt, mehrere zur Verfügung stellen kann ?

Ich suche nach etwas wie I2C/ SPI Expander / Modul wie auch für ADC 
bekannt .

Danke und Gruß

Marc

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sowas?
https://www.maximintegrated.com/en/products/interface/controllers-expanders/MAX14830.html

Der ist allerdings ziemlich kompakt:
"Saves Board Space TQFN (7mm × 7mm) Package"

Allerdings findet sich mit Google und den passenden Suchbegriffen doch 
was:
https://www.google.com/search?q=SPI+multiple+UART
https://www.google.com/search?q=SPI+bridge+UART

Und das sieht doch auch ganz nett aus:
https://www.instructables.com/id/SPI-to-4-x-UART-Bridge-MULTIUART/

: Bearbeitet durch Moderator
von fchk (Gast)


Lesenswert?

Ruppie schrieb:

> Gibt es Bausteine / Chips, welche mehrere UART Schnittstellen über einen
> seriellen Bus, wie I2C oder SPI bereitstellen ?

Gabs mal früher von NXP: SC16IS750 und andere. Werden aber nicht mehr 
produziert, vermutlich mangels Bedarf.

fchk

von pegel (Gast)


Lesenswert?

Der STM32F091 hat 8 UART, reicht das?
Ein Umsetzer in eine beliebige Schnittstelle sollte leicht möglich sein.

von H.Joachim S. (crazyhorse)


Lesenswert?

fchk schrieb:
> Gabs mal früher von NXP: SC16IS750 und andere.

Sicher? Habe ich noch nicht gehört, stehen bei NXP als aktiv.

von Wolfgang (Gast)


Lesenswert?

Ruppie schrieb:
> Gibt es auch eine einfache Lösung wie man einem Controller, welcher nur
> einen
> UART Port besitzt, mehrere zur Verfügung stellen kann ?

Soft-UART

von Bauform B. (bauformb)


Lesenswert?

Ruppie schrieb:
> Ich kenne nur eine Lösung, wo "µC B" - welcher beispielsweise 4 UART
> Ports besitzt, diese als I2C oder SPI Slave bereitstellt.

Die Lösung finde ich am attraktivsten, jedenfalls von den hier 
vorgeschlagenen. Der MAX14830 kommt im QFN-48, braucht einen 3.6MHz 
Quarz und kostet über 10 Euro. Von NXP finde ich nur 2-fach UARTs, zwei 
Stück kosten ca. 7 Euro. PIC oder STM32 gibt's für 2 bis 3 Euro und die 
brauchen keinen Quarz. Der PIC hat 4 UARTs und 64 Pins, ein STM32L071KBT 
hat 5 UARTs mit nur 32 Pins und 0.8mm Pitch. Damit steht mein Testsieger 
fest.

Noch attraktiver wird das, wenn man das eine oder andere geschenkte 
Feature nutzen kann, z.B. 6k EEPROM, 2 bis 6 ADC-Eingänge, PWM-Ausgänge, 
RTC...

Aber richtig nett wäre es, den "UART-uC" per UART mit dem Hauptrechner 
zu verbinden. Sende- und Empfangsrichtung sind dann völlig unabhängig 
und funktionieren gleichzeitig, wie im normalen UART-Betrieb. Man muss 
die Daten nur in Päckchen packen und mit einer Adresse versehen. Aber 
das muss man mit SPI oder I2C auch.
1
 Partnumber    STM32L071KBT6
2
 Package       LQFP32
3
 IDcode        0x447
4
 RAM           20 K
5
 FLASH         128 K
6
 EEPROM        6 K
7
 Core          Arm Cortex-M0+
8
 Clock max.    32 MHz
9
 Pins          32
10
 Pin file      STM32L071K(B-Z)Tx.xml
11
 Config file   IP/GPIO-STM32L071_gpio_v1_0_Modes.xml
12
13
   1  VDD@1
14
   2  PC14-LSI OSC32IN
15
   3  PC15-LSO OSC32OUT
16
   4  NRST
17
   5  VDDA
18
   6  PA0      TXD4
19
   7  PA1      RXD4
20
   8  PA2      TXD2
21
   9  PA3      RXD2
22
  10  PA4             ADC.4  NSS1   CMP1M    CMP2M  T22ETR
23
  11  PA5             ADC.5  SCK1   CMP1M    CMP2M  T2.1   T2ETR
24
  12  PA6      CTS0   ADC.6  MISO1  CMP1OUT  T22.1  T3.1
25
  13  PA7             ADC.7  MOSI1  CMP2OUT  T22.2  T3.2
26
  14  PB0             ADC.8  T3.3   VREFOUT
27
  15  PB1      RTS0   ADC.9  DE0    T3.4    VREFOUT
28
  16  VSS@16
29
  17  VDD@17
30
  18  PA8             MCO
31
  19  PA9      TXD1
32
  20  PA10     RXD1
33
  21  PA11     CTS1   CMP1OUT  MISO1
34
  22  PA12     RTS1   CMP2OUT  DE1    MOSI1
35
  23  PA13     RXD0   SWD
36
  24  PA14     TXD0   SWC
37
  25  PA15     RTS4   DE4      NSS1   T2.1    T2ETR
38
  26  PB3      TXD5
39
  27  PB4      RXD5
40
  28  PB5             CMP2P    DE5    MOSI1   T22.2  T3.2   TL1.1
41
  29  PB6             CMP2P    SCL1   TL1ETR
42
  30  PB7      CTS4   CMP2P    SDA1   PVD     TL1.2
43
  31  BOOT0
44
  32  VSS@32

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bauform B. schrieb:
> Die Lösung finde ich am attraktivsten, jedenfalls von den hier
> vorgeschlagenen.
Ich würde da einen kleinen MachXO2 für um die 5€ nehmen und hätte Platz 
für ein paar UARTs:
http://www.latticesemi.com/en/Products/DesignSoftwareAndIP/IntellectualProperty/ReferenceDesigns/ReferenceDesign03/SPItoUARTExpander
Und wenn ich die IP nicht kaufen will, dann mache ich den UART selber. 
Ist ja nicht so arg viel dran.

Nebenher könnte das FPGA noch ein paar Encoder einlesen oder sonstwas 
machen, was der µC nicht so gut kann...   ;-)

> Aber richtig nett wäre es, den "UART-uC" per UART mit dem Hauptrechner
> zu verbinden. Sende- und Empfangsrichtung sind dann völlig unabhängig
> und funktionieren gleichzeitig, wie im normalen UART-Betrieb. Man muss
> die Daten nur in Päckchen packen und mit einer Adresse versehen.
Das solltest du nochmal überdenken. Und im Besonderen auch auf den 
nötigen Protokoloverhead untersuchen. Das ist nämlich mehr als man 
vorneweg meinen könnte. Einfach mal irgendwo in Gedanken ein Bit 
"umkippen" lassen.

: Bearbeitet durch Moderator
von H.Joachim S. (crazyhorse)


Lesenswert?

Bleibt die Frage, wieviele du brauchst. Für ein Einzelstück oder einige 
wenige würde ich mir das nicht antun dafür einen MC zu programmieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.