Systèmes électroniques
Fermer ×

Les périphériques ou interfaces

Interfaces parallèles

Présentation

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.

Les ports parallèles de l'atmega8

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.

  • Pxn est la broche physique du circuit qui est connecté aux broches des autres circuits.
  • DDxn est le registre qui gère la mise en haute impédance de la broche du circuit.
  • PORTxn est le registre qui positionne la valeur de la broche en sortie.
  • PINxn permet de connaître en permanence la valeur de la broche du circuit.
  • Le transistor MOS commandé par PUD permet de connecter une résistance au +Vcc pour garantir un état logique haut en entrée si la broche n'est pas connectée. Cette résistance se nomme résistance de "pull-up".

Tous les registres sont synchronisés par les signaux de contrôles du processeur comme l'horloge et les signaux de lecture-écriture.

Partages des périphériques

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 :

Interfaces séries

Présentation

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.

On distingue différents modes de transmissions nommés duplex :
  • simplex : un seul sens de transmission de données comme par exemple les chaînes de télévision, les chaînes radio
  • semi-duplex (half-duplex) : deux sens de transmission de données en alternance avec une procédure de changement de sens.
  • duplex intégral (full-duplex) : deux sens simultanés de transmission, on a un canal physique par sens de transmission
Et deux types de transmissions
  • Asynchrone
    • Transmission octet par octet
    • Chaque octet est précédé d'un bit de start
  • Synchrone
    • Transmission par trame de bits
    • Utilisation d'un signal d'horloge pour la synchronisation qui peut être un signal physique supplémentaire, un signal mélangé avec le signal de donnée, ou encore une entête contenant des octets connus pour permettre la synchronisation.

Transmission asynchrone

Caractéristiques générales

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.

  • Emetteur :
    les bits sont transmis au rythme de l'horloge avec une fréquence définie par la vitesse de transmission.
  • Récepteur :
    le signal reçu est échantillonné avec une horloge de fréquence 16 fois supérieure à la fréquence de l'émetteur comme le monter la figure ci-contre. Cette information est transparente pour l'utilisateur qui doit paramétrer le récepteur avec la même vitesse de transmission que le récepteur.

Les différents codages sont :

  • 8 ou 7 bits de données
  • bit de parité ou non
  • 1, 1.5 ou 2 bits de stop

Les différentes parités sont :

  • paire (even) : nombre de bits de la donnée avec la parité est pair
  • impaire (odd) : nombre de bits de la donnée avec la parité est impair
  • espace : toujours à 0
  • marque : toujours à 1

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

Transmission du signal

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.

Normes

RS232RS422RS485
Type de transmissionRéférencé à la masse*différentiel*différentiel*
Nombre maximum d'émetteurs1132
Nombre maximum de récepteurs11032
Longueur maximale du câble (m)1512001200
Vitesse de transmission (kbs*)201000010000
*kbs : kilo bits par seconde
*Référencé à la masse signifie qu'il y a un fil actif et un fil de masse. La différence de potentiel des signaux se fait entre le fil actif et la masse.
*Différentiel signifie qu'il y a deux fils actifs et un fil de masse, les fils actif supportent la différence de potentiel des signaux.

RS232 (normes V28 + V24)

  • Le niveau 0 se situe entre +3v et +25v, en général +12v
  • Le niveau 1 se situe entre -3v et -25v, en général -12v

RS422 et RS485 (norme V11)

  • Le niveau 0 se situe entre +0,3v et +6v
  • Le niveau 1 se situe entre -0,3v et -6v

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 DB9signal (DTE)Description
1DCDLigne prête à recevoir la transmission
2RXRéception de données
3TXTransmission de sonnées
4DTRDemande de transmission
5GNDmasse
6DSRPrêt à recevoir la transmission
7RTSDemande d'envoi de donnée
8CTSPrêt à recevoir une donnée
9RIDemande de communication

Gestion des flux et protocoles

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.

Interface série sur l'atmega8

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.

Transmission synchrone

Transmission SPI

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 :

  • SCLK (Serial Clock) : généré par le maître ou SPC, SCL, SCK (Serial Clock) sur l’esclave.
  • MOSI (Master Output Slave Input) : généré par le maître ou SDI (Serial Data In) sur l’esclave.
  • MISO (Master Input Slave Output) : généré par l’esclave ou SDO (Serial Data Out) sur l’esclave.
  • SS (Slave Select) : généré par le maître ou CS (Chip Select) sur l’esclave à raison d'un signal par circuit esclave.

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 :

ModePolarité horloge (CPOL)Phase horloge (CPHA)Commutation de bitsCapture du bit
000
101
210
311

Le mode le plus utilisé est le mode 0.

Jeu de SPI

Demander un

Solution [ Voir ]
Interface SPI sur l'atmega8

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.

Transmission I2C

Présentation

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 :

Signaux et modes de fonctionnement

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 :

Transmission des données sur le bus

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).

  • S : start
  • A7 ...A1 : adresse sur 7 bits
  • R/W : lecture/écriture
  • ACK : acquittement envoyé par l’esclave
  • D7 ...D0 : donnée ou commande
  • P : arrêt

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.

Caractéristiques

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.

Interface I2C sur l'atmega8

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.