Lassen Sie Arduino und 89C52 miteinander sprechen

Ich versuche, ein Projekt zu erstellen, in dem ich Arduino und Atmel 89C52 dazu bringen muss , miteinander zu sprechen.

Ich weiß, dass dies über UART erreicht werden kann, aber das Problem ist, dass mein Arduino bereits seine TX / RX-Ports verwendet. Gibt es eine Möglichkeit, sie auf andere Weise zum Sprechen zu bringen? Wie I2C oder SPI-Schnittstelle? Würde Soft-UART ausreichen? Das ganze Projekt hängt davon ab, dass dann effektiv miteinander gesprochen wird.

Antworten (2)

Es ist absolut möglich, sie zum Reden zu bringen :) Arduino hat eine Funktion für mehrere RX/TX-Kommunikationen. Dies kann mit der Software serial durchgeführt werden . Was die Verbindung von Arduino mit 89c52 mit I2C betrifft, ist dies nur möglich, wenn Sie das I2c-Protokoll von der 89c52-Seite schreiben (AT89C52 hat keinen Hardware-I2C-Port).

Wenn Ihr serieller Port von Arduino also von einem anderen Gerät belegt ist, können Sie diesen Pin in Software Serial ändern (dh den Zweck auf andere Pins übertragen) und diesen seriellen Port für die Kommunikation mit 89c52 verwenden.

BEARBEITEN

Ja, Sie können die SPI-Schnittstelle verwenden, aber das ist nicht meine Wahl ;) da sie 3 Drähte benötigt und nur für kurze Entfernungen gedacht ist. Außerdem müssen Sie At89s52 haben, nicht at89c52.

Danke für deine Antwort. Kann SPI auch funktionieren?
Die Verwendung von Hardware-SPI anstelle von Soft-UART bedeutet weniger CPU-Last für den Arduino. Das OP erwähnte Effizienz - wenn er CPU-Zeiteffizienz meinte, könnte Hard SPI die bessere Wahl sein.
Wie ich sehe, hat Atmel 89C52 auch keine SPI-Schnittstelle, nur UART.
@BenceKaulics Danke für den Hinweis, ich habe eine Korrektur vorgenommen.

Mit zusätzlicher Hardware könnten Sie die UART-Leitungen des Arduino zwischen dem Atmel 89C52 und dem anderen Gerät umschalten. Diese Hardware wird als Multiplexer bezeichnet, und über einige Steuerpins kann zwischen analogen und digitalen Leitungen gewechselt werden. Auf diese Weise können Sie jeweils nur mit einem Gerät kommunizieren. Wenn es also ein Problem gibt, bleiben Sie bei der Software-Seriennummer.

Um ein Beispiel zu geben, sehen wir uns CD4052B an

Es ist ein differentieller 4-Kanal-Analog-Multiplexer/Demultiplexer, was bedeutet, dass er zwei Leitungen (in Ihrem Fall RX, TX) zwischen vier verschiedenen Geräten austauschen kann.

Geben Sie hier die Bildbeschreibung ein

Sie verbinden RX und TX mit X-COM und Y-COM und schalten per A und B zwischen den Geräten um.

Geben Sie hier die Bildbeschreibung ein

Ein Gerät/Kanal kann gemäß obiger Tabelle ausgewählt werden.

Danke für die Antwort. Ja, Geräte müssen parallel arbeiten, daher kann ich das nicht verwenden. Aber das ist das erste Mal, dass ich von dieser Methode höre. Danke.
Diese Informationen waren tatsächlich in einem anderen Projekt nützlich, das ich habe. Danke, Mann. Hat mir $$$ gespart :)