Le transcodeur RC5 I2C permet de recevoir et enregistrer les mots "sous-adresse" et "commande" émis par une télécommande infra-rouge de type RC5 et de les transférer à un microcontroleur ou un PC via un simple bus I2C à 2 fils (SCL,SDA).

La norme RC5 émane de Philips et toutes les télécommandes de type Philips,Radiola,Schneider,etc rentrent dans cette catégorie

Le LPC28 est un composant programmé sur un microcontrôleur OTP P87LPC760 de Philips dont le logiciel a été développé pour palier à la fin de la commercialisation des SAA3028 SAA3049 de Philips.
Il présente l'avantage d'intégrer son circuit de reset et d'horloge.

Des tests ont été effectués avec une télécommade de TV Philips , une télécommande de magnétoscope Schneider et une télécommande de satellite standard.Son logiciel filtre les informations parasites que le recepteur infrarouge est susceptible de fournir.
Le fonctionnement est correct dans les 3 cas (S/adresse respectivement 00, 05,0AH).

En dehors d'une réception I2C ou RC5,le boitier est en mode idle permettant ainsi d'abaisser la consommation à 1,5 mA environ.

L'intérêt réside dans le fait qu'il n'est pas nécessaire de scruter le LPC28 car la réception d'une salve RC5 valide sur ce dernier provoque le passage à 0 de la broche /INT permettant de provoquer une interruption sur le master.Elle devra faire appel à une routine provoquant la lecture des deux octets S/adresse et commande via le bus I2C telle que celle qui est proposée sur ce site pour le 8051. Il est conseillé d'effectuer la lecture avant la fin des 85 ms qui suivent l'activation de /INT car la réception d'une nouvelle salve provoquerait le remplacement des deux octets non lus par les octets issus de la salve suivante.

La lecture I2C a été testée sur un bus I2C à 100Kb/s (vitesse standard).

Suivant le positionnement des straps sur A2,A1,A0 on peut donner huit adresses esclave différentes
au LPC28 permettant ainsi de disposer plusieurs LPC28 sur le même bus ou de faire fonctionner le bus
avec d'autres boitiers I2C possédant une adresse en 4Xh.

Lorsque la broche /Repeat est à 0 ,le master peut venir lire indéfiniment les deux derniers octets reçus.

/Repeat à 1 permettra une seule lecture des deux octets, lors de la lecture suivante de ces mêmes octets,le LPC28 retournera FFFFH indiquant qu'une lecture a déjà été effectuée.
Cette programmation est bienvenue
quand le boitier est utilisé en mode scrutation (/INT non utilisé) pour permettre au master de déterminer si une nouvelle trame RC5 a été reçue (FFFF = pas de nouvelle trame reçue).

La broche TIMEOUT permet d'activer un timer en début de trame I2C permettant de réinitialiser automatiquement la routine I2C du LPC28 dans le cas d'une réception I2C erronée (mauvaise trame,pas de stop ou absence d'horloge avant le stop).
L'utilisation de ce timer est conseillée en positionnant TIMEOUT à +5V.
Toutefois, dans le cas d'un bus I2C lent (bus sur PC à 5 khz par exemple), la réinitialisation interviendrait avant l'arrivée du stop et la lecture I2C serait impossible.
Il conviendrait,dans ce cas,d'inhiber la fonction TIMEOUT en positionnant cette broche à 0.

Les broches d'alimentation du LPC28 doivent être découplées par une capacité de 10nF au plus près du boitier.
La led de réception (présence facultative) représentée sur le schéma est un model faible consommation (2 mA).
Elle signale la réception de bits à 0 sur la sortie du détecteur IR .
Le LPC28 effectue un contrôle de vraisemblance sur les informations reçues et la patte /INT ne passera à 0 que si une trame RC5 viable et complète a été enregistrée.
Toutefois,il est à noter que si une trame incomplète ou erronée est reçue, la led s'allumera également même quant /INT ne passe pas à 0 ensuite.
Pour éviter des réceptions intempestives, il est conseillé de préférer au TSOP ou autres SFH à bas prix le récepteur Sony RX-IR ref 33.2044 Selectronic.

Me consulter si vous souhaitez mettre en oeuvre ce circuit.

Adressage du LPC28 en RD avec adresse I2C 47h

SCL
SDA

Important:
Le LPC28 comporte un dispositif de stretching interne qui tire le signal SCL à l'état bas en cas d'occupation interne du circuit.
C'est le cas dans le graphique précédent pour le bit 6 de SCL de l'adresse (2° pulse de syncro en partant de la gauche après le start).On constate que l'état bas entre le premier et le deuxième pulse est plus large que les états bas entre les autres pulses).

Voir spécifications du bus I2C page 13 8.3

Conséquence pour la routine master I2C qui envoie l'octet sur le bus:
La routine master qui vient de fixer SCL à l'état haut doit venir tester si SCL=1,attendre si nécessaire que cette condition soit vérifiée et fixer l'état haut à 5 µS max avec SCL=1 (100khz).
Toute routine I2C master bien écrite doit se comporter de cette manière afin de garantir la compatibilité avec tous les circuits I2C.

Datasheet LPC28
Routine I2C maître en assembleur pour 8051 I2C.A51
Fichier INC associé pour 8051 de base 8031.INC
Routines en C pour utiliser le LPC28 LPC28.C
Notice de première mise en service noticelpc28.txt