[Clavier PS2]
Introduction
Les claviers PS2 fonctionnent sur le protocole MF2 (Multi Fonctions Version 2) développé par IBM.
Il s’agit d’un protocole série synchrone.
Chaque clavier incorpore un contrôleur qui interprète les commandes envoyées par le PC et renvoie le code de la touche enfoncée.
Fonctionnement
Quand une touche est enfoncée le contrôleur du clavier envoie le code de la touche correspondante. (Make code)
Si la touche reste enfoncée le code est envoyé régulièrement.
Les temps de réponse et de répétition sont paramétrables.
Quand une touche est relâchée, le contrôleur envoie un code d’arrêt. (Break code)
Les set d'instructions:
Les claviers reconnaissent 3 types de set d’instructions.
Le Set 1: Utilisé pour les ordinateurs compatibles PC/XT et PS2-30
Le Set 2: Utilisé pas les compatibles AT et le reste des ordinateurs compatibles PS2
Le Set 3: Utilisé pour les stations de travail et l'émulation de terminaux sur PC
Brochage
Connecteur male clavier PC PS2:
+5V: Alimentation du clavier
GND: Masse clavier
DATA: Transmission bidirectionnelle des données
CLK: Horloge de synchronisation
Caractéristiques électriques
CLK et DATA sont des signaux compatibles TTL
Niveau bas: <0.8V
Niveau haut: >2.4V
Ces lignes sont à collecteurs ouverts, forcées à +5V par des résistances de tirage dans le clavier.
Au repos CLK et DATA sont au niveau haut.
Protocole MF2
Protocole synchrone bibirectionnel
Le clavier envoie des codes touches et reçoit des commandes.
La réception est prioritaire, si le clavier est en cours d’envoi et que le PC envoie une commande, le clavier s’arrête, réceptionne la commande et continue l’envoi après avoir reçu la commande si cela est possible.
Trame:
L'horloge CLK:
Elle est toujours générée par le clavier, elle peut varier entre 10 et 20kHz
CLK est généré uniquement pendant l'envoi des données.
Le clavier répond à chaque commande reçue, sauf ECHO et RESEND, au bout de 20ms maximum, par l’octet de conformation FAh (ACK)
Transmission PC vers Clavier
-Le PC met DATA à la masse
-Le clavier envoie le signal d'horloge sur CLK et se met en attente d'un signal de synchronisation
-Le PC envoie une commande et termine par mettre DATA au niveau haut en temps que bit d’arrêt.
Les données sont copiées sur les fronts montants de CLK.
Si ces conditions ne sont pas remplies la synchronisation continue.
-Après la reconnaissance du bit d’arrêt le contrôleur du clavier place DATA à 0V pour la durée d’un bit.
Transmission Clavier vers PC
-le clavier contrôle la ligne d’horloge (CLK) et de donnée (DATA) pour voir si elles se trouvent à la masse.
Il est possible de bloquer la communication en figeant la ligne d’horloge au niveau bas.
Dans ce cas, les données à transmettre font l’objet d’une mémorisation interne.
Ce n’est que lorsque la ligne d’horloge et la ligne de transmission des données sont placées au niveau haut que le clavier peut transmettre des données.
La ligne de transmission des données est placée au niveau bas (bit de départ) et un signal d’horloge est engendré. Les données sont valables sur le front descendant du signal d’horloge.
Chronogrammes de transmission Clavier-PC
Exemple de transmission de code par le clavier après avoir appuyé sur la touche "M":
Tableau des codes
Le code envoyé pour la lettre « M » enfoncé est 01001100b -> 4Ch qui correspond à ( ;) dans le Set2 et non pas au M. Cela provient du fait que cette norme est basé sur les claviers Qwerty alors que les claviers Français sont de type Azerty.
Disposition des touches Qwerty:
Les commandes principales
SET/RESET MODE IDICATORS-> Code EDh
Cette instruction de 2 octets détermine le comportement des LED
Commande: EDh
Commande: 0000 0xxx
Bit 0: Scroll Lock
Bit 1: Num Lock
Bit 2: Caps Lock
1=allumer LED, 0 éteindre LED
ECHO-> Code EEh
Le clavier répond à cette commande par EEh ce qui permet de vérifier qu'il est présent
CHOIX DE CODES CLAVIER-> Code F0h
Ces 2 octets de commande permettent de choisir le groupe de code clavier
D'après une réinitialisation, le clavier choisit implicitement le set 2 de code clavier.
Il est plus facile de se servir du set 3 pour les applications sur les microcontroleur car presque aucune touche n'émet de code d'interuption et la fonctionde répétition n'est pas en service.
Commande: F0h
Commande: 0000 0xxx
01: Code clavier 1
10: Code clavier 2
11: Code clavier 3
LECTURE DU CODE D'IDENTIFICATION-> Code F2h
Après cette commande, le clavier transmet 3 octects codés par le fabricant
1 octet: FAh(ASK)
2 octet: xxxx xxxx
3 octet: xxxx xxxx
VITESSE DE REPETITION AUTOMATIQUE-> Code F3h
Ces deux octets ajustement le taux de répétition des touches et le delai précédant le début de la répétition
Commande: F3h
Commande: 0xxx 0xxx
| Bit 6 | Bit 5 | Delai (+/-20%) |
| 0 | 0 | 150ms |
| 0 | 1 | 500ms |
| 1 | 0 | 750ms |
| 1 | 1 | 1s |
| Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | Fréquence (+/-20%) |
| 0 | 0 | 0 | 0 | 0 | 30Hz |
| 0 | 1 | 1 | 1 | 1 | 8Hz |
| 1 | 1 | 1 | 1 | 1 | 2Hz |
CONFIGURER TOUTES LES TOUCHES-> Code F7h/F8h/F9h/FAh
Ces commandes donnent aux touches les attributs suivants:
F7h Fonction de répétition pour toutes les touches.
F8h Toutes les touches fournissent un code de travail (make) et un code repos (break).
F9h Toutes les touches ne fournissent qu'un code de travail.
FAh Toutes les touches comportent la fonction de répétition et fournissent un code de travail ainsi qu'un code de repos.
Ces commandes ne fonctionnent que si le set 3 de codes clavier a été sélectionné au préalable.
REINITIALISATION -> Code FFh
Cette commande restaure toutes les valeurs implicites de la configuration du clavier
Les codes de retour
ABOUTISSEMENT DE BAT -> Code AAh
Cet octet est envoyé au système externe lors de l'application de la tension d'alimentation au de la reconnaissance de la commande REINITIALISATION (FFh).
Indique la réussite de l'auto-test.
RENVOI D'UN NACK (accusé de reception négatif) -> Code AAh
Cet octet est envoyé lors de la détection d'une erreur de transmission.
ACK (accusé de reception) -> Code AAh
Cet octet est envoyé à l'appareil externe en réponses à chaque commande reçue.
DEPASSEMENT -> Code 00h/FFh
Toute les touches pressées sont mémorisées dans le clavier jusqu'à ce que leurs codes puissent être transmis à l'appareil externe par la liaison sérielle.
Un dépassement de capacité mémoire provoque l'envoi de l'octet 00h dans le cas des codes clavier 2 et 3 et de l'octet FFh dans le cas du code clavier1.
PREFIXE DU CODE DE REPOS -> Code F0h
Le code de repos des codes clavier 2 est précédé de l'octet F0h.
Microcontrôleur <-> Clavier
Etape 1:
On générale pour l'utilisation d'un clavier avec un µC on utilise le Set d'instruction 3.
µC->Clavier
-Envoi Choix de code clavier -> Code F0h
-Envoi Scan-Code-Set 3 -> Code 03h
Etape 2:
Réponse du clavier
Clavier->µC
-ASK -> Code FAh
Etape 3:
Configuration du délai de répétition et de la fréquence de répetition
µC->Clavier
-Configuration delai et fréquence -> Code F3h
-Delai: 500ms(bit6=0,bit5=1) Fréquence 8Hz(bit4=0,bit3=1,bit2=1,bit1=1,bit0=1) 00101111=2Fh -> Code 2Fh
Etape 4:
Réponse du clavier
Clavier->µC
-ASK -> Code FAh
Etape 5:
Les touches ne fournissent qu'un seul code de travail
µC->Clavier
-un code de travail-> Code F9h
Etape 6:
Réponse du clavier
Clavier->µC
-ASK -> Code FAh
Si le Clavier revoit le code NACK (FEh) détection d'erreur lors de la transission vous devez renvoyer le code.
Bibliographie:
TP-Transmission série synchrone - http://www.ac-orleans-tours.fr/sti-gel/
[...]



