J'ai un projet basé sur une photo 18f4550. Pour écrire dans un registre à décalage '595, y a-t-il un avantage distinct à utiliser des spi sur des broches io régulières? J'ai entendu dire que le spi est plus rapide, mais je ne sais pas comment. Utilise-t-elle une horloge différente et plus rapide que le reste de la puce, ou est-elle simplement plus efficace? Je peux mordre un octet via des broches io régulières dans un assez petit nombre d'instructions. Le spi utilise-t-il moins de puissance de traitement? Je vais décaler assez souvent lors de calculs assez intenses, je veux donc autant de cycles que possible dédiés à mon processus et non pas décaler.
Ma principale raison de ne pas vouloir utiliser spi est que ma disposition actuelle rendrait un peu plus difficile l'accès aux broches requises parce que j'en utilise déjà quelques-unes pour d'autres choses et que je devrais mélanger les choses. Je voulais savoir quels avantages il y a avant de commencer à déchirer les choses et à les déplacer.
Réponses:
En supposant que vous comparez un "moteur" série spi périphérique ou synchrone dans le micro à la génération de la même séquence via le "bit banging", alors oui, cela a tendance à être un peu plus rapide, mais plus important encore, le processeur peut transmettre un octet entier à le périphérique pour envoyer et faire d'autres choses pendant qu'il est transmis. Dans le cas du bit banging, le processeur a tendance à être bloqué pendant la transmission (bien que le micro ayant tendance à être le maître et que la plupart des périphériques soient entièrement statiques, vous pouvez probablement tolérer une pause en milieu d'octet pour effectuer une interruption ou même interroger choses - ADC série à horloge d'interface et tâches d'intervalle d'échantillonnage étant des exemples notables d'exceptions).
Sur des MCU plus performants, il peut même être possible de programmer un contrôleur DMA pour exécuter un transfert multi-octets de la mémoire via le moteur SPI sans plus d'attention du processeur, surtout si seules les données dans une direction sont importantes.
Mais de nombreux projets de microcontrôleurs finissent par être hautement optimisés pour leur tâche; si vous pouvez épargner les cycles et tolérer la réduction de vitesse, compliquer votre logiciel afin de pouvoir utiliser les GPIO qui rendent la disposition physique plus propre n'est en aucun cas un choix rare.
la source
Avantages du bang-banging:
Inconvénients du bit banging:
Avantages de SPI:
Inconvénients de SPI:
Pour moi, les avantages du bit-banging sont mineurs par rapport aux avantages de SPI. Les inconvénients du bit-banging sont beaucoup plus importants que les SPI. Les trois principales raisons pour lesquelles je peux choisir le bit-banging sont les suivantes:
la source
Sur le PIC, une implémentation classique de style SPI bit-bang prend environ cinq cycles par bit; avec un peu de travail sur les pièces 18Fxx, on peut réduire cela à environ quatre (au prix d'environ trois cycles par octet de surcharge supplémentaire). Ce temps s'ajoute à tout le temps nécessaire pour récupérer des données (généralement trois cycles par octet). Donc, comptez environ 40 à 43 cycles par octet. En utilisant le SPI matériel, la vitesse s'améliore à deux cycles par bit plus quelques cycles supplémentaires par octet (certains autres peuvent gérer des transferts consécutifs, mais les PIC que j'ai vus ne peuvent pas), et pendant que le SPI envoie un octet le processeur peut récupérer le suivant, permettant un temps global d'environ 18 cycles / octet - un gain de vitesse d'environ 2,5x.
la source
Pour le bit banging (BB), vous avez oublié de mentionner:
la source