TotalPhase-Blog-Erlebniswelten

Slave SPI/I2C AA_COMMUNICATION_ERROR utilizzando un Aardvark

Hai attivato uno slave I2C/SPI, hai già ricevuto dei messaggi da esso e ora vuoi disattivarlo, ma ricevi il codice di stato AA_COMMUNICATION_ERROR? Probabilmente non si tratta di un errore del tuo codice!

 

Spiegazione:

Può succedere che un master invii grandi quantità di dati e quindi occupi completamente il buffer di ricezione del PC host per l'adattatore host Aardvark I2C / SPI. L'errore di comunicazione significa che mentre il PC ha inviato la richiesta di disabilitazione allo slave, l'adattatore Aardvark non ha ricevuto alcun riscontro. 

 

Nella maggior parte dei casi, lo slave è stato probabilmente disattivato. Se l'adattatore Aardvark ha disattivato lo slave, non verranno inviati o ricevuti altri dati e la connessione/buffer non potrà più essere occupata completamente. Una successiva chiamata per disattivare lo slave dovrebbe ritornare senza errori.

 

Possibili soluzioni:

Anche se questo non è necessariamente un problema critico nel tuo codice, puoi migliorare la situazione in diversi modi. 


a.) Uno è quello di ridurre la quantità di traffico inviato dal master. Questo richiede la possibilità di riconfigurare il dispositivo master incriminato. 

 

b.) Un altro modo è quello di interrogare periodicamente lo slave per ottenere i messaggi asincroni in sospeso. Si noti che ogni chiamata per leggere i messaggi in sospeso può avere un timeout fino a 500 ms. Quindi, se c'è altro codice time-critical che deve essere eseguito contemporaneamente, è meglio utilizzare un modello di threading. (Le chiamate API dell'adattatore Aardvark non sono thread-safe, ma possono essere utilizzate se racchiuse da opportune chiamate di sincronizzazione dei thread)


Per gli ambienti di sviluppo più potenti, è consigliabile utilizzare due adattatori Aardvark. Un adattatore Aardvark può essere configurato per ricevere i messaggi asincroni I2C / SPI slave, mentre l'altro può essere utilizzato per la comunicazione sincrona I2C / SPI master. Con questa configurazione, un thread dell'applicazione può eseguire un ciclo stretto per elaborare i messaggi slave e un altro thread può elaborare le operazioni sincrone. 

Strumenti di sviluppo I2C e SPI

Scheda host I2C/SPI di AardvarkScheda host I2C/SPI di Aardvark
Scheda host I2C/SPI di Aardvark
TP240141
L'adattatore host Aardvark I2C/SPI è uno strumento innovativo da utilizzare con i sistemi bus I2C e SPI.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Analizzatore di protocollo Beagle I2C/SPI
TP320121
L'analizzatore di protocollo Beagle I2C/SPI è un adattatore host per bus I2C e SPI veloce e potente via USB

369,00 €*
Piattaforma universale I2C/ SPI/ eSPI Promira
TP500110-S
La piattaforma universale I2C/SPI/eSPI di Promira può essere utilizzata per un'ampia gamma di applicazioni

Varianti da 900,00 €*
1.060,00 €*