Hallo!
Ich bin auf der Suche nache einem µC, der über seine UART-Schnittstelle
mindestens 10 MBit/s Senden und Empfangen kann.
Natürlich sollte der Stromverbrauch des µC so gering wie möglich sein. -
Am Besten 0mA. :P
Hab mir erstmal die MSP-Reihe ein wenig angeschaut und musste
feststellen, dass die nur 2 MBit können...
Könnt ihr einen Tipp geben?
Danke!
Gruß
Timo
Was willst Du damit auch machen? Ein PC wird auch nicht 10 MBit/s via
RS232 schaffen.
Verwende doch SPI, damit sollten die 10 MBit/s kein Problem sein...
Naja, der Prof. will irgendwelche Daten mit 10 MBit/s via RS-485
schicken. RS-485 Treiber gibt es wie Sand in der Sahara, selbst mit
Datenraten von 25 MBit oder sogar höher. Und wenn ich deren Eingänge
richtig verstehe sind das doch alles UART, oder nicht!?
Falls es UART sein muss: Das Hauptproblem ist hier, dass die asynchronen
Daten beim Empfangen mit der 16x Baudrate abgetastet werden. Bei 10MBaud
also 160MHz. Etliche Hersteller haben daher einen zusätzlichen Modus
eingebaut, um diesen Faktor zu reduzieren. Meist um den Faktor 2 (z.B.
bei den AVRs). Bei den dsPICs um den Faktor 4. Hier könnte man also mit
40MHz CPU Takt die 10MBaud erreichen. Allerdings sind die dsPICs nicht
wirklich stromsparend.
Bei SPI hat man ein ähnliches Problem, wenn auch nicht ganz so extrem:
Hier muss der CPU Takt meist Faktor 2 oder 4 über der maximalen Bitrate
liegen.
Ok, dann frage ich mal anders herum:
Das Aufgrund der asynchronen Übertragung ein Bit mehrfach abgestastet
werden muss und somit die Taktfrequenz der CPU höher sein muss als der
Baudrate ist mir bekannt. Ich kenne den Faktor 4-8.
ABER wenn es so schnelle RS-485-Bausteine gibt, die alle asynchrone
Ein-/Ausgänge haben, was für mich UART ist und nicht SPI oder USART,
dann frage ich mich wie die sonst angesteuert werden, wenn es "kaum"
µC-gibt die diese Datenrate über UART "fahren" können....
Timo schrieb:
> Hab mir mal schnell die AVR32 angeschaut.> 1,3mW/Mhz .... bei 60 MHz bin ich da ja bei rund 90mW!> Keine Chance! Viel zu viel ...
Es gibt auch Stromsparmodi...
10MBit/s wirst du niemals nicht für 0mA bekommen.
>> Ich bin auf der Suche nache einem µC, der über seine UART-Schnittstelle>> mindestens 10 MBit/s Senden und Empfangen kann.
Wenn er sonst nichts können muß (also nur empfangen und senden). Dann
reicht auch eine Drahtbrücke...
Timo schrieb:
> ABER wenn es so schnelle RS-485-Bausteine gibt, die alle asynchrone> Ein-/Ausgänge haben,
RS-485 Transceiver haben weder synchrone noch asynchrone Ein/Ausgänge,
sondern sind einfach nur Sende/Empfansgbausteine für beliebige
Protokolle, von denen die asynchrone serielle Schnittstelle nur eines
ist.
> was für mich UART ist und nicht SPI oder USART,
Es gibt so schnelle RS485 Bausteine, weil RS-485 keineswegs nur mit UART
verwendet wird. So wurde beispielsweise RS-485 auch für HVD-SCSI
verwendet.
Timo schrieb:
> 1,3mW/Mhz .... bei 60 MHz bin ich da ja bei rund 90mW!> Keine Chance! Viel zu viel ...
Scherzkeks.
Mit RS-485 kannst Du eh keinen Strom sparen, schon allein der nötige
Abschlußwiderstand (120R) verbräht 200mW.
Peter
Achwas, der verbräht doch keine 200mW
(2V)^2/120ohm sind bei mir 34mW.
Ein Scherzkeks ist der benutzer Lothar Miller mit seiner Drahtbrücke! ;)
Wobei das auch nur bei Vollduplex-Mode etwas bringt.
Der µC soll natürlich auch noch die Datenverarbeiten und muss mit
zwei...drei anderen Bausteinen auf der Paltine kommunitieren (SPI).
Die 0mA waren auch ein Scherz. Dafür gibt es Smileys: ":P"
Welche max. UART-Datenraten sind den bei einem Stromsparenden µC wie
MSP, AT(x)mega und wie sie alle heißen mögen, möglich?
Wie schon angedeutet, Du musst kein asynchrones Protokoll über RS485
betreiben.
Du kannst auch SPI verwenden, dann benötigst Du zwar eine Leitung mehr
(Takt), kommst dafür aber auf erheblich höhere Datenraten.
Die möglichen Datenraten der verschiedenen Schnittstellen kannst
Du selber in den entsprechenden Datenblättern nachlesen. Die musst Du
Dir sowieso früher oder später ansehen.
Timo schrieb:
> Ein Scherzkeks ist der benutzer Lothar Miller mit seiner Drahtbrücke! ;)
Mein Denkanstoss bzw. meine Frage war offenbar zu gut versteckt:
Was soll denn der uC sonst noch können?
Wenn da Daten mit 10MBit/s hin- und hergeprügelt werden, dann muss mit
denen doch auch was passieren. Muß der uC nur einen Sensor linearisieren
oder muß da ein aufwendiger Regler drauf laufen? Allein ein Zeichen
epfangen und eines senden kann doch nicht alles sein :-o
Der µC soll nur Postbote spielen und Päckchen basteln. Datenpackete
genau genommen.
Daten von den anderen Bausteinen entgegennehmen in das Protokoll packen
und verschicken und umgekehrt.
Wie gesagt, leiber Rufus t. Firefly, habe ich schon in einegen
Datenblättern geschnuppet, aber ich habe noch keinen RS-485 Baustein
gesehen, der eine SPI Schnittstelle hat. Immer nur RX TX und evtl.
TX_Enable bzw. RX_Enable. Aber bisher nirgends einen Eingang wie Clock,
der für SPI zwingend erforderlich ist....
Profibus ist ja auch RS485 wenn ich mich nicht irre.
Da gibt es von Profichip ICs, die den Profibusteil mit 12MHz
verarbeiten. Als Abfallprodukt ist auf diesen IC's auch eine flotte UART
(12MHz) mit drauf. Ist halt nix Internes und muss per SPI oder Datenbus
an den Controller angeschlossen werden. Vorteil waere, dass du den
Controller langsam takten koenntest und den Interface IC auch notfalls
abschalten kannst, wenn du Ihn nicht brauchst.
Bezueglich Abschlusswiderstand. Da nimmt man ja meist zwei von und dann
sind es 60 Ohm oder nicht?!
Timo schrieb:
> Wie gesagt, leiber Rufus t. Firefly, habe ich schon in einegen> Datenblättern geschnuppet, aber ich habe noch keinen RS-485 Baustein> gesehen, der eine SPI Schnittstelle hat. Immer nur RX TX und evtl.> TX_Enable bzw. RX_Enable. Aber bisher nirgends einen Eingang wie Clock,> der für SPI zwingend erforderlich ist....
Es wurde jetzt schon oft genug in diesem Thread geschrieben, dass es bei
den "Bausteinen" nur um den physical layer geht. Was du dann damit
machst, ist deine Sorge. Das sind nur Bustreiber.
Deswegen wurde auch weiter oben geschrieben, dass man für SPI z.B. 2
Stück braucht: Daten und Takt.
In der Redundanz liegt die Erleuchtung ;)
Jetzt mal ernsthaft, Deine Aufgabe lässt sich mit einem "normalen"
Mikrocontroller definitiv nicht lösen, da diese schlichtweg zu wenig
Rechenpower haben. Entweder Du nimmst spezielle Mikrocontroller mit z.B.
einer schnellen ARM CPU drin, welche sich mit > 100MHz takten lässt oder
machst es gleich mit einer reinen CPU oder einem "kleinen" DSP.
Wie bereits geschrieben wurde, Strom sparen und Daten schnell übertragen
geht nicht; entweder optimierst Du eines davon oder machst einen
Kompromiss.
In der Praxis sieht das dann meist so aus, dass ein kleiner,
stromsparender Mikrocontroller die grosse CPU anwirft und sie mit Strom
versorgen lässt, wenn die Rechenpower benötigt wird. Im Standby schaltet
der Mikrocotnroller alles aus, was nicht gebraucht wird.
vonTimo:
>wie gesagt, leiber Rufus t. Firefly, habe ich schon in einegen>Datenblättern geschnuppet, aber ich habe noch keinen RS-485 Baustein>gesehen, der eine SPI Schnittstelle hat. Immer nur RX TX und evtl.>TX_Enable bzw. RX_Enable. Aber bisher nirgends einen Eingang wie Clock,>der für SPI zwingend erforderlich ist....
Verstehst Du eigentlich irgendetwas von E-Technik?
Ein Name RX oder TX hat doch nichts mit der Funktion zu tun. A.K. hat
doch schon alles geschrieben. RS485 oder RS422 ist doch nur ein
physikalischer Layer. Da kannst Du locker ne SPI oder I2C aufbauen. Nur
solltest Du Dich mal von deiner Blindheit trennen.
"the integration of the complete Profibus-DP protocol"
In dem VPC3-S ist das Profibus-Protokoll hardwaremäßig implementiert ...
@Christian S.:
Die Terminierung beim Sender muss nicht unbedingt sein.
Aber selsbt wenn, dann wäre die "nur" Leistung doppelt so hoch und mit
round about 66mW um Faktor 3 kleiner als die von Peter Dannegger
genannten 200mW...
Timo schrieb:
> Achwas, der verbräht doch keine 200mW> (2V)^2/120ohm sind bei mir 34mW.
Milchmädchenrechnung. Wenn der Widerstand den Minimalwert von 2V kriegt,
dann sind es dort 34mW. Bei realistischeren 3V sind es dort 25mA. Die
fliessen von 5V durch den Transmitter raus, den Widerstand und zum
Transmitter wieder rein. Macht insgesamt 5V*25mA=125mW, teils im
Widerstand teils im Transmitter.
"Verstehst Du eigentlich irgendetwas von E-Technik?"
Anscheinend nicht... was zugegeben eine Schande wäre.
Aber wen man sagt, das RX und TX nichts mit der Funktion zu tun hätte,
dann hat man IMHO auch ein wenig E-Technik-SChwäche.
TX ist allgemein die Bezeichnung für einen Sendepin oder Senderichtung
(Transmit), RX ist das Gegenstück dazu, eben die Empfangsrichtung
(Receive).
Wenn mein RS-485 Baustein zu meinem µC nur zwei Leitungen hat, eben TX
und RX (Auf der RS-485-Seite werden die Anschlüsse meist mit A B, oder X
Y bezeichnet), dann komme ich mit SPI nicht weit. Denn SPI ist ein
Master-Slave Zugriffsverfahren, dass aus 3 Leitungen besteht. Der Clock,
mit dem die Daten übertragen werden werden vom Master (den µC)
vorgegeben.
Zudem wäre aber noch eine 4. Leitung sinnvoll: Eine Interrupt-Leitung
zum µC mit der verfügbare, empfangenen Daten angezeigt werden....
Und I²C hat auch eine Taktleitung...
Jetzt sag mir mal, wo ich meinen Denkfehler habe!?
Timo schrieb:
>> Jetzt sag mir mal, wo ich meinen Denkfehler habe!?
Preisfrage: Worin unterscheiden sich bei SPI MOSI bzw TX und Clock
signal-technisch gesehen?
Timo schrieb:
> TX ist allgemein die Bezeichnung für einen Sendepin oder Senderichtung> (Transmit), RX ist das Gegenstück dazu, eben die Empfangsrichtung> (Receive).
Korrekt. Aber da sagt nichts darüber aus, was über TX gesendet wird.
Darf auch der Takt sein.
> Wenn mein RS-485 Baustein zu meinem µC nur zwei Leitungen hat, eben TX> und RX (Auf der RS-485-Seite werden die Anschlüsse meist mit A B, oder X> Y bezeichnet), dann komme ich mit SPI nicht weit.
Wenn du nur einen Halfduplex-Transceiver verwendest, wird das mit SPI
wirklich nix. Also plündere dein Sparschwein und investiere in drei
solche Bausteine, SCK, MOSI, MISO. Also 2 Transmitter, einen Receiver.
Darf bei Punkt-zu-Punkt auch RS422 sein.
Und dann bist du auch bei 3,3V Transceivern bei 200mW. ;-)
> Wenn mein RS-485 Baustein zu meinem µC nur zwei Leitungen hat,> eben TX und RX (Auf der RS-485-Seite werden die Anschlüsse meist> mit A B, oder X Y bezeichnet), dann komme ich mit SPI nicht weit.
Ach? Was hindert Dich daran, einfach zwei RS485-Transceiver zu
verwenden?
> Denn SPI ist ein Master-Slave Zugriffsverfahren, dass aus 3> Leitungen besteht.
Das kann so sein, muss aber nicht. Wenn es als
Punkt-zu-Punkt-Verbindung genutzt wird, gibt es nur Takt und Daten.
> Zudem wäre aber noch eine 4. Leitung sinnvoll:> Eine Interrupt-Leitung zum µC mit der verfügbare,> empfangenen Daten angezeigt werden....
Dann ist das ganze mit vier Leitungen und je zwei
RS485/RS422-Transceivern ganz einfach zu erledigen:
In Senderichtung vom µC zum abgesetzten Gerät: Takt und Sendedaten,
in Empfangsrichtung vom abgesetzten Gerät zum µC: Empfangsdaten und
"Interrupt".
Eine Sender/Empfänger-Umschaltung, wie sie RS485 im Halbduplexbetrieb
vorsieht, entfällt hier, daher kann auch RS422 verwendet werden.
Jetzt weiß ich worauf ihr hinauswollt.
Dann will ich euch mal in das Reich der Blinden holen:
Ich sag nur: Zwei-Draht-Leitung
Mehr ist nicht.
MISO, MOSI & CLK parallel über drei RS-485 zu übertagen ist also nicht
möglich.
Ein RS-485 Treiber und Halbduplex sind also die Eckdaten, denn für
Vollduplex brauch man auch zwei zusätzliche Daten-Leitungen.
Wenn TX ein Sendepin ist, wie du schreibst, was hindert dich daran,
einfach den Takt zu senden?
Du brauchst dann halt mehrere Bausteine, weil du mehr Sendepins
brauchst.
Timo schrieb:
> Ich sag nur: Zwei-Draht-Leitung> Mehr ist nicht.
Dann wünsche ich dir dabei viel Glück. Entweder du lebst bei AVRs mit
maximal 2,5Mbps UART. Oder du arbeitest synchron mit
Takt/Daten-Codierung vgl. Manchestercode, was auf einen externen
Codierer/Decodierer rausläuft - oder auf einen Controller das dies
direkt beherrscht.
Frank Erdrich schrieb:
> Such dir doch einfach den passenden Baustein aus, der SPI auf RS485> umsetzt, wie beispielsweise den MAX3140.
Der ist mit maximal 230Kbps ein bischen weit weg von seinen angepeilten
10Mbps. Und wenn ich ihn richtig verstehe, geht es um die Datenrate auf
seinen 2 Drähten, egal wie, aber das möglichst ohne Strom.
A. K. schrieb:
> Frank Erdrich schrieb:>>> Such dir doch einfach den passenden Baustein aus, der SPI auf RS485>> umsetzt, wie beispielsweise den MAX3140.>> Der ist mit maximal 230Kbps ein bischen weit weg von seinen angepeilten> 10Mbps.
mh? Siehe Anhang.
Der Maxim sieht auf den ersten Blick wirklich nicht schlecht aus.
(Gefunden habe ich ihn nicht, weil ich bei RS-485 gesucht habe und nicht
bei "SPI/Microwire-Compatible UARTs")
Aber leider ist der Baustein mit +5V Versorgt. Und +3.3V sind
vorgeschrieben....
Maik F. schrieb:
>> Der ist mit maximal 230Kbps ein bischen weit weg von seinen angepeilten>> 10Mbps.>> mh? Siehe Anhang.
10MHz wird die maximale Datenrate der integrierten aber technisch
unabhängig arbeitenden RS485-Transceiver sein. Wenn man sie getrennt von
der UART verwendet.
Die UART hingegen arbeitet wie es aussieht wie üblich asynchron mit
Baudratenteiler 16 und gibt bei einem 3,6MHz Quarz maximal 230Kbps her.
Für 10Mbps braucht man also einen 160MHz Grundwellenquarz.
A. K. schrieb:
> Maik F. schrieb:>>>> Der ist mit maximal 230Kbps ein bischen weit weg von seinen angepeilten>>> 10Mbps.>>>> mh? Siehe Anhang.>> 10MHz wird die maximale Datenrate der integrierten aber technisch> unabhängig arbeitenden RS485-Transceiver sein. Wenn man sie getrennt von> der UART verwendet.>> Die UART hingegen arbeitet wie es aussieht wie üblich asynchron mit> Baudratenteiler 16 und gibt bei einem 3,6MHz Quarz maximal 230Kbps her.> Für 10Mbps braucht man also einen 160MHz Grundwellenquarz.
Ja... man sollte nicht immer die Datenblätter auf der Suche nach Zahlen
überfliegen. Die externen Verbindungen an den internen RS485-Treiber
hätten mich jedoch aufmerksam werden lassen sollen ;)
Ich wuerd mal ein(zwei) FPGA nehmen und die mal mit RS485 verbinden.
Dann hat man keine Grenzen alles moegliche auszuprobieren. Ein UART ist
schnell gemacht...
Ehrlich gesagt: An diese Option habe ich auch schon gedacht.
Das Probel: FPGAs sind für mich völliges Neuland.
Muss mich erst mal mit diesem Thema befassen.
Gibt es überhaupt FBGA ist der Preisklassen von 2-5€, die für diesen
Anwendungsfall geeignet sind!?
Und dann muss ich mal mit dem Prof. reden....
Versuch es mal mit einem STM32
er braucht bei 2V und 72MHz gerade mal 36mA. Und hat auch sehr effektive
PowerModi. Via SPI ist maximal 18MHz möglich.
Und der Controller kostet um 1 Euro rum.