TotalPhase-Blog-Erlebniswelten

Esclave SPI/I2C AA_COMMUNICATION_ERROR en utilisant un aardvark

Tu as activé un esclave I2C/SPI, tu as déjà reçu des messages de cet esclave et tu veux maintenant le désactiver, mais tu reçois un code d'état AA_COMMUNICATION_ERROR ? Ce n'est probablement pas une erreur de ton code !

 

Explication :

Il peut arriver qu'un maître envoie une grande quantité de données et occupe ainsi complètement le tampon de réception du PC hôte pour l'adaptateur hôte Aardvark I2C / SPI. L'erreur de communication signifie que, pendant que le PC envoyait la demande de désactivation à l'esclave, aucun accusé de réception n'a été reçu de l'adaptateur Aardvark. 

 

Dans la plupart des cas, l'esclave était probablement désactivé. Si l'adaptateur Aardvark a désactivé l'esclave, plus aucune donnée n'est envoyée ou reçue, la connexion/tampon ne peut donc plus être entièrement occupée. Un appel ultérieur pour désactiver l'esclave devrait revenir sans erreur.

 

Solutions possibles :

Bien qu'il ne s'agisse pas nécessairement d'un problème critique dans ton code, tu peux améliorer la situation de différentes manières. 


a.) L'une d'entre elles consiste à réduire la quantité de trafic envoyée par le maître. Cela nécessite la possibilité de reconfigurer le dispositif maître perturbateur. 

 

b.) Une autre possibilité consiste à interroger régulièrement l'esclave pour recevoir les messages asynchrones en attente. Note que chaque appel pour lire les messages en attente peut avoir un délai d'attente allant jusqu'à 500 ms. Donc, s'il y a un autre code à temps critique qui doit être exécuté en même temps, il est préférable d'utiliser un modèle de threading. (Les appels API de l'adaptateur Aardvark ne sont pas thread-safe, mais peuvent être utilisés s'ils sont entourés d'appels de synchronisation de thread correspondants)


Pour les environnements de développement les plus puissants, il est conseillé d'utiliser deux adaptateurs Aardvark. Un adaptateur Aardvark peut être configuré pour recevoir les messages asynchrones I2C / SPI esclave, et l'autre peut être utilisé pour la communication synchrone I2C / SPI maître. Avec cette configuration, un thread dans l'application peut exécuter une boucle étroite pour traiter les messages esclaves, et un autre thread peut traiter les opérations synchrones. 

Outils de développement I2C & SPI

Adaptateur hôte I2C/SPI AardvarkAdaptateur hôte I2C/SPI Aardvark
Adaptateur hôte I2C/SPI Aardvark
TP240141
L'adaptateur hôte Aardvark I2C/SPI est un outil innovant pour l'utilisation avec les systèmes de bus I2C & SPI.

309,00 €*
Beagle I2C/SPI Protokoll Analyzer - Total Phase
Analyseur de protocole I2C/SPI Beagle
TP320121
L'analyseur de protocole I2C/SPI Beagle est un adaptateur hôte de bus I2C et SPI rapide et puissant via USB

369,00 €*
Plateforme universelle Promira I2C/ SPI/ eSPI
TP500110-S
La plateforme universelle Promira I2C/SPI/eSPI peut être utilisée pour une multitude d'applications

Variantes de 900,00 €*
1 060,00 €*