2016-11-24 1 views
0

Comment synchroniser mon maître avec l'esclave à l'aide de la communication Spi? J'ai généré une autre horloge en temps réel (sauf miso, mosi, cs, sck) de 10 ms du maître et maintenant je dois synchroniser mon esclave pour chaque bord montant de l'horloge, l'esclave doit commencer à lire les données du capteur (à partir de ADC) et en utilisant la tranche de temps (pour chaque 2,5 ms) demande maître pour les données, si l'esclave a les données qu'il enverra. Maintenant, mon problème est dans le main() je devrais utiliser while(1) (ou devrais-je?) Quand il lise les données je ne suis pas capable de déterminer combien de temps il faudra pour lire. Y a-t-il une autre solution pour la synchronisation? (J'utilise LPC1343)Synchronisation de communication Spi du maître et de l'esclave dans ARM

+0

Il n'est pas clair si vous codez le maître ou l'esclave. Dans le cas où l'esclave a une certaine forme d'intelligence, il lui est habituel de lire les données en continu, de sorte que lorsque le maître en a besoin, il est déjà disponible et placé dans le tampon de données utilisé par MISO. – Lundin

Répondre

0

Habituellement SPI ADC sont configurés pour échantillonner de manière autonome des données et retourner un IO pour indiquer au maître que des données sont disponibles, qui sont capturées par une interruption d'E/S.

Si vous voulez que votre esclave SPI fonctionne de manière synchrone, vous devez lui dire "échantillon maintenant" toutes les 10ms. C'est ce qu'on appelle l'interrogation.

Votre interruption de minuterie doit appeler une routine qui déclenchera le mécanisme d'interrogation.