Une interface parallèle (ou port parallèle) permet d'échanger des données entre le processeur et les autres circuits numériques en utilisant un conducteur électrique par bit. Une valeur entière N exprimée sur q bits est transmise sur q+1 ou bien 2q conducteurs électriques suivant le nombre de potentiels de masse nécessaires.
Les interfaces parallèles peuvent être utilisées pour faire l'acquisition de valeurs de capteur "tout ou rien" comme les interrupteurs, les capteurs de présences, les codeurs, ...
Elles peuvent également être utilisées pour la communication avec d'autres circuits.
Ils sont au nombre de 3 et sont les ports B et D sur 8 bits et le port C sur 7 bits. Chaque bit de ces ports est relié à une broche du circuit.
Le schéma est extrait de la documentation de l'atmega 8
Cette broche peut être utilisée comme entrée ou sortie. Le choix du sens entrée ou sortie est programmable. Lorsque la sortie est en haute impédance, elle peut être utilisée comme entrée. Il existe également une entrée directe qui permet, par exemple de contrôler si le niveau logique de la broche de sortie correspond à la valeur logique programmée.
Tous les registres sont synchronisés par les signaux de contrôles du processeur comme l'horloge et les signaux de lecture-écriture.
Comme beaucoup de microcontrôleurs, les broches de l'atmega8 sont multi-fonctions, c'est à dire que chaque broche est associée à plusieurs interfaces. Parmi ces interfaces, on peut citer :
Une interface série permet d'échanger des données entre le processeur et les autres circuits numériques en utilisant un seul conducteur pour transmettre tous les bits de manière séquentielle dans le temps.
L'émetteur et le récepteur doivent avoir les mêmes configuration afin que l'échange puisse se faire sans erreurs. Ces paramètres sont :
Les paramètres de l'émetteur et du récepteur doivent être identique afin de permettre une transmission sans erreurs.
Les différents codages sont :
Les différentes parités sont :
La transmission la plus utilisée est 8N1 qui signifie 8 bits de données, pas de parité, 1 bit de stop.
La figure ci-dessus représente la transmission de 2816 sur 8 bits de données, une parité impaire et un bit de stop
Cette transmission se fait en bande de base, c'est à dire que le signal binaire est transmis sans transformation par modulation. On a donc 1 bits/s=1baud.
Transmission NRZ (Non retour à Zéro)
L'intérêt de ce type de transmission est que l'on peut distingué un état logique d'un problème de connexion. Si la connexion est défectueuse, le récepteur recevra une tension nulle, tandis qu'il revevra une tension positive ou négative pour un état logique.
RS232 | RS422 | RS485 | |
---|---|---|---|
Type de transmission | Référencé à la masse* | différentiel* | différentiel* |
Nombre maximum d'émetteurs | 1 | 1 | 32 |
Nombre maximum de récepteurs | 1 | 10 | 32 |
Longueur maximale du câble (m) | 15 | 1200 | 1200 |
Vitesse de transmission (kbs*) | 20 | 10000 | 10000 |
RS232 (normes V28 + V24)
De plus la liaison RS 485 utilise une sortie 3 états afin de permettre une liaison multipoints pour la connexion de plusieurs émetteurs.
Il existe également des normes pour les prises et câbles :
Appareil DTE pour Data Terminal Equipment qui représentait en général l'ordinateur
Appareil DCE pour Data Circuit-terminating Equipemnt qui représentait le modem pour la transmission
Exemple de prise DB9 (D sub-miniature) qui était utilisée sur les ordinateurs (côté soudure).
broche DB9 | signal (DTE) | Description |
---|---|---|
1 | DCD | Ligne prête à recevoir la transmission |
2 | RX | Réception de données |
3 | TX | Transmission de sonnées |
4 | DTR | Demande de transmission |
5 | GND | masse |
6 | DSR | Prêt à recevoir la transmission |
7 | RTS | Demande d'envoi de donnée |
8 | CTS | Prêt à recevoir une donnée |
9 | RI | Demande de communication |
Si le récepteur ne suit pas à traiter les données reçues, il faut qu’il puisse demander à l’émetteur de d’arrêter temporairement la transmission, c’est le rôle de la gestion de flux. Pour cela il existe des signaux de contrôle de flux qui sont :
Il existe plusieurs protocoles de gestion du flux des données qui utilisent ou non ces signaux de contrôle.
Protocole matériel pour une connexion entre DTE et DCE. En pratique on utilise un cordon série droit.
Liaison null modem pour une connexion entre DTE et DTE. En pratique on utilise un cordon série croisé.
Protocole logiciel pour une connexion entre DTE et DTE. En pratique on parle de connexion 3 fils et on utilise un cordon série croisé.
Bien que la liaison série soit toujours utilisée dans les systèmes embarqués et objets connectés pour le déboguage et le dépannage, les ordinateurs n'ont plus de sortie série. Pour assurer la connexion série, quand cela est nécessaire, on utilise un adaptateur usb<->série.
Elle possède uniquement les signaux RX et TX qui sont respectivement reliés aux bits 0 (nommé RXD) et 1 (nommé TXD) du port D. Les autres signaux ne sont pas implémentés.
Les possibilités de configuration sont :
Les niveaux électriques de l'atmega, comme tous les processeurs, ne sont pas compatibles avec les niveaux électriques des liaisons séries. Il faut donc utiliser un circuit d'adaptation, pour ne pas détruire le processeur.
La transmission ou bus SPI (Serial Peripheral Interface) permet de connecter plusieurs circuits sur les mêmes lignes de signaux, chaque circuit est activé par un signal nommé SS (Slave Select) ou CS (Chip Select).
C'est une transmission synchrone avec une ligne d'horloge séparée.
Elle est utilisée pour l'échange de données avec les mémoire flash comme les SD ou encore avec certains capteurs qui intègrent une interface numérique.
Elle est composée des signaux :
Le bus SPI peut fonctionner en transmission 4 fils avec MOSI et MISO séparés, qui donne une liaison full-duplex ou bien en transmission 3 fils avec MISO et MOSI sur le même fil qui donne une liaison half-duplex.
Le bus SPI possède 4 modes de fonctionnement et deux possibilités d'ordre de bits : bit de poids fort en premier ou bit de poids faible en premier
Les 4 modes de fonctionnement sont décrits par le tableau suivant :
Mode | Polarité horloge (CPOL) | Phase horloge (CPHA) | Commutation de bits | Capture du bit |
---|---|---|---|---|
0 | 0 | 0 | ↓ | ↑ |
1 | 0 | 1 | ↑ | ↓ |
2 | 1 | 0 | ↑ | ↓ |
3 | 1 | 1 | ↓ | ↑ |
Le mode le plus utilisé est le mode 0.
Demander un
Elle utilise les bits 2 (SS), 3 (MOSI), 4 (MISO) et 5 (SCK) du port B. Elle fonctionne donc en half-duplex (4 fils) et peut être configurée en maître ou esclave.
La fréquence de l'horloge SCK correspond à la fréquence de l'horloge du circuit divisée par un coefficient compris entre 2 et 128 par pas de puissance de 2.
Le bus I2C est un système de transmission synchrone avec une horloge séparée qui fonctionne en half-duplex. Ce type de transmission ne nécessite que deux fils, il n'y a pas de fil de sélection de circuit, celle -ci se fait avec la transmission de l'adresse dans la suite binaire.
Ce bus a été élaboré par Philips au début des années 1980 pour le grand public et utilisé dans les téléviseurs, récepteurs radio, autoradios,téléphones puis utilisé dans l’industrie, l’automobile, la domotique.
Il est également très utilisé comme bus de communication en robotique pour l'échange des données avec les capteurs et le commandes de moteurs.
Chaque circuit de ce bus se situe en fonctionnalités qui peuvent être combinées :
Le bus I2C comporte deux signaux : une horloge SCK (Serial Clock) et un signal de données SDA (Serial Data). Les entrées et sorties des circuits fonctionnent en collecteur ou drain ouvert. L'utilisation de cette technologie permet d'obtenir un état 0 prioritaire sur le bus.
La transmission commence toujours par l'adresse de l'esclave sur 7 bits plus un bit de sens d'échange de données (R/W) pour l'essentiel des bus mais peut être également sur 10 bits. Chaque esclave possède une adresse unique définie en partie à la construction du composant avec un ou deux bits de poids faible qui peuvent être définis par l'utilisateur. Ceci pour éviter les conflits lors de l'utilisation de composants fournis par le même constructeur sur le bus.
La priorité à l'état 0 permet de faire de ce bus, un système de transmission temps réel, car il permet de gérer les conflits d'accès au bus lorsque plusieurs maîtres se partagent le même bus. En effet chaque circuit qui émet une valeur sur le bus vérifie simultanément si la valeur qu'il veut émettre correspond à celle du bus. Si un circuit émet un 1 et qu'il lit un 0 sur le bus, cela signifie qu'il doit arrêter d'émettre, ce qui permet deux fonctions en mode multi-maîtres :
La trame des bits est composée de l'adresse du périphérique, suivie des bits de données. Après chaque valeur, le récepteur positionne la ligne à 0 pour accuser réception de la valeur transmise (en rouge sur le graphe).
SDA et SCL sont à l'état 1 : le bus est libre pour d'autres circuits
SCL = 1 : un front ↓ sur SDA indique le démarrage de la transmission
SCL = 0 : L'émetteur commute le bit de donnée SDA.
Cet état reste valable tout le long de la transmission.
SCL = 1 : SDA est stable la valeur du bit peut être lu par le récepteur.
Cet état reste valable tout le long de la transmission.
SCL = 1 : SDA ↑ pour indiquer la fin de transmission.
La technologie drain ou collecteur ouvert ne fourni pas d'état 1, cela est donc réalisée par des résistances connectées entre le plus VCC et les lignes SDA et SCL. Ces résistances sont appelées des résistances de tirage (pull-up).
Les niveaux de tensions des bus I2C sont adaptés aux tensions d'alimentations des circuits numériques qui utilisent ce bus. Un 0 est identifié si la tension de ne dépasse pas 0.3Vcc, un 1 est identifié si la tension ne descend pas en dessous de 0.7Vcc. A l'état bas la tension ne doit pas dépasser 0.4v pour un courant de 3mA.
Elle utilise les bits 4 (SDA) et 5 (SCL) du port C. Elle peut être utilisée en maître, esclave, émetteur ou récepteur. En esclave l'adresse est entièrement configurable.
Elle utilise 7 bits pour l'adresse et peut fonctionner avec une fréquence d'horloge allant jusqu'à 400kHz.