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!?
> ...sind das doch alles UART, oder nicht!?
Das kann alles mögliche sein, RS485 ist nur der physical layer.
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....
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 ...
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?!
Schau dir mal bei profichip den VPC3-S an. Der ist klein, sparsam und hat ne SPI & I²C Schnittstelle.
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 der VPC3-S hat das Protokoll implementiert. Musst du aber nicht benutzen. ;)
Ich versteh nicht ganz das Problem. Such dir doch einfach den passenden Baustein aus, der SPI auf RS485 umsetzt, wie beispielsweise den MAX3140.
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.
Schickes Teil der Maxim. Wenn er jetzt nur nicht von Maxim waere :)
Mag es sein, dass ein Prof. was will, was technisch nicht oder nur sehr schwer zu realisieren ist... !?
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.
Klar, um seine Schüler zu testen. Stell ich mir als Prof. jedenfalls schon reizvoll vor ^^
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...
Mal ein paar Vorschläge: http://www.nxp.com/acrobat_download/datasheets/SC16C850SV_1.pdf Single Port UART, max. Takt 80 MHz, Oversampling 4x, 8x, 16x d.h. max 20 MBps, Anschluss: 8-Bit multiplexed also mit allem was genug Pins hat ansteuerbar. Ähnliche UART von Exar http://www.exar.com/Common/Content/ProductDetails.aspx?ID=259&ParentID=1 Cyan eCOG1X-Controller: Takt der internen UARTs max. ~200 MHz, Oversampling 16x d.h max. 12.5 MBps
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.
Er kann mit seinen 2 Drähten aber immer noch kein SPI, und mit UART geht asynchron nur bis 4,5Mbps.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.