Ich habe einen Mikrocontroller, der über ein Kabel kommunizieren muss, das ca. 5m lang, mit einem weiteren sehr kleinen Mikrocontroller. Die Geräte werden im Freien unter verschiedenen Bedingungen eingesetzt. Die Datenrate wird nicht sehr hoch sein. Wenn Sie den kleinen uC mit dem Kabel an den großen uC anschließen, werden eine Identifikationszeichenfolge und periodische (jede Minute) Batterieaktualisierungen vom kleinen uC gesendet.
Ich dachte an I2C, bin mir aber nicht sicher, ob es für solche Anforderungen ausgelegt ist? CAN ist auch möglich, aber ich denke, es ist ein bisschen übertrieben für meine Bedürfnisse. Hat jemand gute Ideen?
EDIT: Ich möchte so wenig Pins wie möglich für das Kabel verwenden.
Während CAN ein bisschen "übertrieben" sein kann, ist es immer vorzuziehen, wenn Sie diese Option haben. Kurzvergleich bzw. CAN versus RS232/RS422/RS485:
CAN-Vorteile:
CAN-Nachteile:
Die Kosten für CAN-Transceiver im Vergleich zu RS-xxx-Transceivern sollten ungefähr gleich sein (außer wenn Sie alte Mist-Transceiver wie MAX232 auswählen, die 5x 1uF-Entkopplungskappen benötigen). Signalspannungspegel spielen keine Rolle, es gibt CAN- und RS-xxx-Transceiver für 3,3 V und 5 V.
Die Anzahl der Drähte für ein Semi-Duplex-System beträgt in jedem Fall 3. Bei CAN haben Sie CAN H, CAN L und Signalmasse. Bei zB RS-422 haben Sie T+, T- und Signalmasse. Das Überspringen der Signalmasse wird in beiden Fällen wirklich nicht empfohlen. Hören Sie nicht auf Leute, die Ihnen etwas anderes sagen.
Ich werde auch für RS232 stimmen, Sie sollten jedoch auf eine Sache achten, die sonst niemand erwähnt hat. Sie sagen nicht, welche Mikrocontroller Sie verwenden, aber das Folgende gilt für die meisten, die ich verwendet habe ...
Ihr Mikrocontroller verfügt über mindestens eine Datensendeleitung (TX) und mindestens eine Datenempfangsleitung (RX). Diese Leitungen schalten zwischen niedrig und hoch um, wenn Sie je nach Gerät zwischen Spannungspegeln von 0 V und ~5 V oder 0 V und 3,3 V senden/empfangen. Angenommen, beide Mikrocontroller verwenden die gleichen Spannungspegel, dann könnten Sie im Prinzip einfach TX von einem Mikro an RX des anderen anschließen und umgekehrt. Dies funktioniert für kurze Entfernungen und niedrige Datenraten, aber ich denke, dass 5 m dafür viel zu lang sind, und ich denke auch, dass es eine schlechte Praxis ist, dies zwischen Systemen zu tun.
Verwenden Sie besser einen Pegelwandler (wie die MAX232-Familie für 0-5-V-Systeme oder den MAX3232 für 0-3-V-Systeme) an jedem Ende. Diese wandeln die logische 0 in ~+12V und eine logische 1 in ~-12V um, sodass Ihre Kommunikationsleitung elektrisch dem RS232-Standard entspricht.
Hoffe das hilft,
Jo
Abgesehen von der Frage nach den besten Alternativen (ich empfehle es nicht wirklich, aber es kann funktionieren), habe ich I2C erfolgreich über lange Strecken (zwischen Gebäuden) in der Produktion geführt und es hat jahrelang funktioniert.
Siehe Abschnitt 19 I2C Bus Deadlock in http://www.i2cchip.com/pdfs/bl233_b.pdf
Majenko
Perotom
Synchrondyne
Nick Alexejew
Synchrondyne
Robherc KV5ROB
Perotom
jonk
Passant
Passant
Perotom
jonk
Perotom
jonk
Perotom
jonk
jonk
Perotom
jonk