MIC7340 Entrées sorties de base – ports sériels Mounir Boukadoum
Transmission sérielle Transmet un mot binaire bit par bit, sur un seul fil La durée d’un bit est spécifiée par une horloge En théorie, plus lente que la transmission parallèle ; en pratique, moins de fils => moins d’interférence électromagnétique => liens plus rapides et câbles plus longs
Types de transmission sérielle Asynchrone : L’intervalle séparant 2 caractères transmis est quelconque. Simple mais demande de détecter les débuts et fin des caractères (« overhead » lourd) Utilisation: liaisons locales (pour la simplicité de l`interface), vitesses faibles. Synchrone : Les caractères sont transmis par blocs, sans temps mort entre caractères successifs (« overhead » léger) Architecture plus complexe qu’en mode asynchrone Les intervalles de temps entre les blocs doivent être remplis avec des caractères de synchronisation (« padding »). Une horloge précise doit assurer la synchronisation entre émetteur et récepteur Utilisation: liaisons distantes, vitesses grandes.
Exemple de trame dans un système de communication sériel synchrone
Synchronisation des données
Vitesses de transmission normalisées (bits/s ou bps) Asynchrones : 5 (code Morse), 75 (Baudot), 110-150-300- 600 (TTY, compteurs électriques avec modem), 1200- 2400-4800-9600-(14400)-19200-(28800)-(33400)- 38400, (56000, ), 57600, 115200 Synchrones : 8k (voix) à 64k (ISDN), 1,536 M (T1), 2,048 (E1), 1 M-7M (ADSL), 12 M-3 (USB), etc. Baud ou bits/s ? Baud = bit/s en tenant compte des bits de “gestion”
Modes de liaison Simplex : transmission unidirectionnelle Exemple: télédistribution À l’alternat (half-duplex) : transmission bidirectionnelle non simultanée Exemple: émetteur/récepteur radio, tranmission par packets (Ethernet/Internet), intercom Duplex : transmission bidirectionnelle simultanée Exemple : téléphone, la plupart des ports sériels d’ordinateurs
Transfert sériel asynchrone Phases (protocole RS-232) : Repos Bit de départ Données Parité Bit d’arrêt Repos ou début du transfert suivant
UART Universal Asynchronous Receiver-Transmitter Encapsule la fonctionnalité d’un port sériel asynchrone dans trois types de registres Contrôle État Données Peut détecter diverses erreurs Inclut les tampons d’attente Inclut des signaux de commande de MODEM et de gestion de canal Certains génèrent l’horloge
Protocole RS-232 Protocole populaire pour le raccordement physique de deux ports sériels Définit plusieurs traits d’un canal de communication par UART Équipements (DCE et DTE) Signaux et règles de synchronisation entre émetteur et récepteur Niveaux des signaux Connecteur physique Signaux de contrôle pour Modem
Contrôle de flux Permet de contrôler le débit de l`émetteur Adapte les capacités de transmission différences entre émetteur et récepteur Peut être implémenté en logiciel et en matériel Logiciel Codes XON/XOFF Matériel Lignes RTS/CTS
Connecteurs RS-232
Liaison en série asynchrone générale Contrôle Statut Vitesse Data R x D T x D 0 ou 5V ± 12V 12V Adaptateur à l'interface RS-232-C (MC1488 et MC1689 ou MAX230) Connecteur DB9, DB25 ou autre 68HC11, UART ou autre Périphérique externe (modem, terminal, ... UARTS: Motorola 6850 ACIA General Instruments AY-3-1015D UART National Semiconductor 8250 ACE Intel 8251A USART (Synchrone / asynchrone) Intel 82050, 16450, 16550 Asynchronous Communications Controller (utilisé dans les PCs) Motorola MC2681 DUART
Connection RS232 populaire (et simpliste !)
Régistres du port SCI du 68HC11
Programmation du débit ( registre BAUD)
Exemple d’erreur de transmission : débordement
Exemple d’erreur de transmission : encadrement
Autres standards sériels RS
Autres interfaces sériels SPI I2C USB (souvent associé à un port UART) 1-Wire, Fire-wire et autres SPI/I2C populaires pour ajouter des boîtiers dans un design USB populaire pour ajouter des périphériques externes
SPI Serial Peripheral Interface Basé sur des registres à décalage Synchronisation des transferts assurée par une horloge Opère comme une courroie crénelée : pendant que des bits sortent, d’autres entrent Un seul maître et un ou plusieurs esclaves http://www.mct.net/faq/spi.html Terminologie MOSI ou SDI : master out & slave in MISO ou SDO : Master in & slave out CLK : Horloge de synchronisation ; transferts sur front montant ou descendant (programmable) SS ou CS : Slave select venant du maitre, habituellement actif bas
Un exemple de port sériel synchrone
Système SPI avec boîtiers en cascade
SPI Séquence d’événements lors d’un échange Les périphériques opèrent souvent en semi duplex
I2C Séquence d’évènements lors d’un échange (gérée par le maitre) Génération du bit Start (S). Génération de l’adresse de l’esclave (ADDRESS) Génération du bit Read(R)=1 / Write(W)=0 Attente du bit d’acquiescement de l’esclave (A) Génération/réception de l’octet de données (DATA). Attente/envoi du bit d’acquiescement (A) Génération du bit STOP (P) ou d’un nouveau bit Start (S) Lors d’un échange de plusieurs octets, les étapes 5 et 6 sont répétées
USB Universal Serial Bus Un maître et un ou plusieurs esclaves Utilise 4 lignes +5 V et masse (le maître peut générer 500 MA par prise) 2 lignes de données torsadées différentielles avec encodage NRZ Souvent utilisé dans les microordinateurs (apparait comme un port COM) Plusieurs versions 1.1 : 5 à 12 Mb/s 2.0 : 480 Mb/s 3.0 : 4.8 Gb/s (à venir) Les connecteurs sont tels que l’alimentation est appliquée avant les données, permettant aux esclaves d’être branchés et retirés en tout temps (“Plug-and-Play”). À la mise sous tension, l’hôte scrute chaque esclave pour déterminer son type et vitesse et lui attribue une adresse (processus d’énumération). Le processus d’énumération est mis à jour lorsqu’un dispositif est branché ou retiré du réseau Standard privé (payement de royautés ou usage d’un composant qui l’a déjà) Protocole compliqué et difficile à déboguer ; mieux vaut utiliser des composants qui l’ont déjà !
Ports sériels dans un C Exemple du ADuC7026 (ARM7) : 4 ports sériels intégrés, 1 UART et 3 synchrones (SPI ou I2C) Broches multiplexées
Port UART du ADuC7026 COMCON0 Baud rate Configuration de base des trames Baud rate Diviseur pour l’horloge