TotalPhase-Blog-Erlebniswelten

SPI/I2C Slave AA_COMMUNICATION_ERROR unter Verwendung eines Aardvarks

Sie haben einen I2C-/SPI-Slave aktiviert, haben bereits Nachrichten von diesem Empfangen und wollen ihn nun Deaktivieren, aber sie erhalten einen Statuscode AA_COMMUNICATION_ERROR.? Dies Ist wahrscheinlich kein Fehler ihres Codes!

 

Erläuterung:

Es kann vorkommen, dass ein Master große Datenmengen sendet und dadurch den Host-PC-Empfangspuffer für den Aardvark I2C / SPI Host-Adapter vollständig belegt. Der Kommunikationsfehler bedeutet, dass, während der PC die Deaktivierungsanforderung an den Slave gesendet hat, keine Bestätigung vom Aardvark-Adapter empfangen wurde. 

 

In den meisten Fällen war der Slave wahrscheinlich deaktiviert. Wenn der Aardvark-Adapter den Slave deaktiviert hat, werden keine weiteren Daten mehr gesendet oder empfangen, somit kann die Verbindung/Puffer nicht mehr vollständig belegt werden. Ein nachfolgender Aufruf zum Deaktivieren des Slaves sollte ohne Fehler zurückkehren.

 

Lösungsmöglichkeiten:

Dies ist zwar nicht unbedingt ein kritisches Problem in Ihrem Code, Sie können die Situation jedoch auf verschiedene Arten verbessern. 


a.) Eine besteht darin, die Menge an Verkehr zu reduzieren, die vom Master gesendet wird. Dies erfordert die Möglichkeit, das störende Master-Gerät neu zu konfigurieren. 

 

b.) Eine andere Möglichkeit besteht darin, den Slave regelmäßig abzufragen, um anstehende asynchrone Nachrichten zu erhalten. Beachten Sie, dass jeder Aufruf zum Lesen anstehender Nachrichten eine Zeitüberschreitung von bis zu 500 ms haben kann. Wenn es also einen anderen zeitkritischen Code gibt, der gleichzeitig ausgeführt werden muss, ist es am besten, ein Threading-Modell zu verwenden. (Aardvark-Adapter-API-Aufrufe sind nicht Thread-sicher, können aber verwendet werden, wenn sie von entsprechenden Thread-Synchronisierungsaufrufen umschlossen werden.)


Für die leistungsstärksten Entwicklungsumgebungen ist es ratsam, zwei Aardvark-Adapter zu verwenden. Ein Aardvark-Adapter kann so konfiguriert werden, dass er die asynchronen I2C / SPI-Slave-Nachrichten empfängt, und der andere kann für die synchrone I2C / SPI-Master-Kommunikation verwendet werden. Mit dieser Konfiguration kann ein Thread in der Anwendung eine enge Schleife ausführen, um die Slave-Nachrichten zu verarbeiten, und ein anderer Thread kann synchrone Operationen verarbeiten. 

I2C & SPI Entwicklungswerkzeuge

Aardvark I2C/SPI Host AdapterAardvark I2C/SPI Host Adapter
Aardvark I2C/SPI Host Adapter
TP240141
Der Aardvark I2C/SPI Host Adapter ist ein innovatives Werkzeug für die Verwendung mit I2C & SPI Bussystemen.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Beagle I2C/SPI Protokoll Analyzer
TP320121
Der Beagle I2C/SPI Protokoll Analyzer ist ein schneller und leistungsstarker I2C- und SPI-Bus-Host-Adapter über USB

369,00 €*
Promira universelle I2C/ SPI/ eSPI Plattform
TP500110-S
Die Promira universelle I2C/SPI/eSPI Plattform kann für eine Vielzahl von Applikationen eingesetzt werden

Varianten ab 900,00 €*
1.060,00 €*