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
Artikelnr: TP240141
TP240141 - Der Aardvark I2C/SPI Host Adapter ist ein innovatives Werkzeug für die Verwendung mit I2C & SPI Bussystemen.

403,41 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Beagle I2C/SPI Protokoll Analyzer
Artikelnr: TP320121
TP320121 – Beagle I2C/SPI Protocol Analyzer unterstützt I2C, SPI oder MDIO und mit der Data Center Monitoring Software.

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

Ab 1.071,00 €*