A propos du microcontrôleur ayant de nombreux contrôleurs SPI

Héruian

A propos du microcontrôleur ayant de nombreux contrôleurs SPI


Je voudrais demander si quelqu’un a déjà utilisé plus d’un contrôleur / canal SPI sur un projet? J’ai eu ce pyboard où il a jusqu’à 3 contrôleurs SPI bien que je pense que seuls 2 contrôleurs SPI peuvent être utilisés. Ceci est différent du schéma traditionnel d’esclaves SPI multiples qui est appliqué sur 1 contrôleur SPI uniquement.

J’ai eu cette configuration où le 1er contrôleur SPI (SPI_1) parlera à un concentrateur de relais basé sur SPI et le 2e contrôleur SPI (SPI_2) parlera à plusieurs capteurs basés sur SPI. Maintenant, ma question est la suivante: ces deux contrôleurs SPI peuvent-ils fonctionner simultanément ou simultanément, SPI_1 activera et désactivera les relais tandis que SPI_2 lira les valeurs des capteurs . Ces deux génèrent des horloges série différentes les unes des autres, non? Peut-on y parvenir? aussi comment cela serait-il appliqué du côté de la programmation?

J’ai eu beaucoup d’expériences sur SPI en utilisant des cartes Arduino mais je n’ai pas encore essayé d’utiliser deux pilotes SPI différents en même temps car les cartes Arduino n’ont qu’un seul pilote SPI.

ÉDITER:

http://www.st.com/content/ccc/resource/technical/document/datasheet/ef/92/76/6d/bb/c2/4f/f7/DM00037051.pdf/files/DM00037051.pdf/jcr: content / translations / en.DM00037051.pdf est le microcontrôleur utilisé par le pyboard v1.1.

https://docs.micropython.org/en/latest/pyboard/pyboard/quickref.html#general-board-control est la carte que je vais utiliser.

Ale..chenski

Si votre MCU dispose de contrôleurs SPI dédiés basés sur le matériel et capables de transmettre au moins un octet seul à la fois, vous devriez être en mesure d’atteindre une concurrence raisonnable dans les opérations. S’il s’agit d’un contrôleur qui frappe fort, cela devrait également être possible, dans une certaine mesure, en fonction de la vitesse SPI. Mais il faudra pour cela écrire un pilote « multitâche coopératif ».

Héruian

ok, si c’était le cas et que je comptais sur l’utilisation de 2 contrôleurs SPI (2 maîtres avec plusieurs esclaves), à quoi cela ressemblerait-il dans les pseudo-codes? cela devrait-il être géré en créant une bibliothèque personnalisée pour le résoudre? En effet, le bit banging serait bien, mais cette solution à elle seule est applicable à l’utilisation d’un contrôleur SPI, donc l’application de deux contrôleurs SPI sera redondante. Bien que j’aie cette configuration où j’aime contrôler 30 relais, concentrateur sur 3 extenseurs d’E / S basés sur SPI (10 relais par extenseur d’E / S), 30 concentrateur de capteur de distance basé sur SPI sur un 3 « 3-8 dmx » ( 10 par dmx) et 30 concentrateurs de capteur de température basés sur SPI sur un 3 « 3-8 dmx » (10 par dmx) également.

Héruian

30 relais seront sur SPI_1 et 60 capteurs sur SPI_2, en utilisant deux contrôleurs SPI, c’est mieux qu’en utilisant 1 contrôleur SPI et en utilisant le bit banging si ce serait la bonne configuration ?? Je parle ici du temps de traitement.

Réponses


 uint128_t

Vous n’avez pas mentionné un microcontrôleur spécifique mais en général, oui: un microcontrôleur avec plus d’un contrôleur SPI peut utiliser les contrôleurs simultanément dans la mesure de ses possibilités.

N’oubliez pas que de nombreux microcontrôleurs sont monocœur et ne peuvent exécuter qu’une seule instruction à la fois, mais avec le DMA, plus de parallélisme peut être atteint. Par exemple, vous pouvez demander au moteur DMA de déplacer une grande partie des données via un contrôleur SPI et immédiatement après le lancement des communications SPI sur un autre contrôleur SPI.

Ainsi, bien que vous ne puissiez probablement pas exécuter les contrôleurs SPI exactement simultanément, pour vos besoins, ils seront effectivement simultanés. Si vous avez des périphériques très sensibles au temps où les opérations SPI sur plusieurs bus SPI doivent être coordonnées exactement au même instant, le FPGA est généralement utilisé pour implémenter plusieurs contrôleurs SPI capables de fonctionner entièrement en parallèle. Mais si vous écrivez quelques octets à un contrôleur de relais sur un bus et lisez quelques octets d’un capteur sur un bus différent, je suppose que vous êtes d’accord si ces transactions se produisent à quelques microsecondes d’intervalle.

Héruian

Merci: D j’avais édité ma question pour inclure les liens de la carte dont je parle ainsi que son microcontrôleur. si l’utilisation de 2 contrôleurs SPI en même temps / simultanément est possible, comment cela fonctionnerait-il du côté de la programmation?

Sparky256

@Mheruian. Vous avez besoin d’un logiciel distinct pour chaque port SPI. L’un pourrait lire des données tandis que l’autre écrit des données. Si vous utilisez DMA pour déplacer des données en rafale, vous aurez besoin d’un petit logiciel pour gérer cela.

 

#à, #de, ayant, contrôleurs, du, microcontrôleur, nombreux, propos, SPI

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *