2016-07-26 5 views
0

Ich arbeite an Ti EK-TM4C1294XL, die im Grunde ein Arm Cortex M4-Evaluierungsboard ist. Ich ging durch den I2C-Bus des gleichen und habe folgende Frage zum I2C-Bus.I2C Bus Multi Master Multi Slave

Ich verstehe I2C Unterstützung Multi-Master-Multi-Slave-Konfiguration. Wenn wir also Daten von einem bestimmten Master an einen bestimmten Slave senden wollen, schreiben wir zuerst die Slave-Adresse auf den Bus von diesem Master und übertragen nach Empfang des Ack die Daten an diesen Slave.

Also in der gleichen Situation möchte ich Daten von einem bestimmten Slave zu einem bestimmten Master empfangen, aber kann der Slave die Kommunikation starten? Wie angenommen, Slave ist ein ADC und sobald die Konvertierung abgeschlossen ist, senden Sie die konvertierten Daten an einen bestimmten Master. Ist das in I2C möglich?

+1

_ "Kann der Slave die Kommunikation starten?" _ Ist per Definition falsch: Wenn es die Adresse schreibt und die Uhr antreibt, arbeitet es als Master, nicht als Slave. Ob Ihr ADC sowohl zum Slave- als auch zum (Multi-) Master-Betrieb fähig ist, hängt davon ab, was in seinem Datenblatt steht. – Notlikethat

Antwort

0

In I2C initiiert ein Master immer die Kommunikation mit einem Slave, auch wenn nur ein Slave Daten senden soll. Das erste Byte nach einer Startbedingung enthält eine 7-Bit-Adresse und ein Bit, das anzeigt, ob es sich um ein Schreiben oder Lesen handelt. Wenn ein Slave von einem Typ ist, der ein asynchrones Ereignis hat (dh ein ADC läuft kontinuierlich), würde ich normalerweise ein vom I2C-Bus getrenntes Signal erwarten (ein Aufmerksamkeitssignal, Interrupt-Signal oder wenn Ihr I2C-Gerät tatsächlich ist ein SMBus-Gerät, SMBALERT #), das den Zustand ändern würde, um anzuzeigen, dass ein Ereignis aufgetreten ist und der Master dieses Gerät abfragen sollte.

Verwandte Themen