« PC-I2C » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
=Principe Général= | |||
Afin de permettre la communication entre les différentes parties électroniques du robot nous avons choisi le bus I²C. Nous ne reviendrons pas ici sur le principe de ce bus tant les documentations à ce sujet sont nombreuses sur le net ([http://fr.wikipedia.org/wiki/I%C2%B2C au hasard]). | |||
==Nos utilisations== | |||
===Développement=== | |||
[[Image:Pci2c.jpg|Interface PC-I²C de type ELV|frame]] | [[Image:Pci2c.jpg|Interface PC-I²C de type ELV|frame]] | ||
Lors du développement des différentes cartes filles il nous est indispensable de disposer d'un moyen "sur" de communiquer sur le bus I²C. Nous avons donc cherché une interface utilisable facilement et ayant fait ses preuves. Il s'avère que de nombreuses interfaces existent et s'utilise très facilement avec Linux. Ces interfaces "communes" sont directement utilisables depuis les drivers du noyau. Leur gros défaut sont une consommation cpu élevée et leur interface parallèle (DB-25 is back !). | |||
= | Pour cette utilisation nous avons choisi une interface de type ELV. Disposant d'opto-coupleurs, le montage isole électriquement le PC de nos montages. Celui-ci est reconnu nativement par le noyau linux. | ||
===Embarqué=== | |||
Dans le cadre de l'utilisation embarquée nous devons disposer d'un système capable de fonctionner sur n'importe quel OS et sur port USB. Nous avons donc décidé de développer notre propre interface USB-I²C. Celle-ci est vue par le PC comme un simple port COM grace au [http://en.wikipedia.org/wiki/USB_communications_device_class CDC]. <br /> | |||
La communication se fait selon un protocole visant à maximiser la compatibilité et la lisibilité. Un simple terminal permet d'envoyer et de recevoir des données. | |||
Nos développements sont détaillés ci-dessous. | |||
<br clear="all" /> | |||
==Nos développements== | |||
===USB-I²C v1=== | |||
[[Image:Usb-i2c.jpg|Interface USB-I²C v1 en cours d'assemblage|frame]] | |||
Cette première interface utilise un PIC 18F4550. Celui-ci intègre un port USB et un port I²C, un cible de choix donc. En pratique l'utilisation de l'USB et d'une émulation du CDC provoque un charge cpu importante. Dés lors il devient difficile d'assurer une fiabilité optimale ... | |||
<br clear="all" /> | |||
===USB-I²C v2=== | |||
Cette seconde interface utilise un PIC 18F. Ici nul besoin d'USB natif : le support de l'USB et du CDC sont assurés par un composant spécifique. Le PIC ne voit alors qu'un port série classique. Ainsi libéré il ne s'occupe que de l'interprétation/transcription du protocole série vers I²C. | |||
De nombreux composants existent pour réaliser la conversion USB<=>RS232. Le plus connus est sans conteste le [http://www.ftdichip.com/Products/FT232BM.htm FT232] de FTDI. Cependant il existe une solution beaucoup plus simple et économique : utiliser un convertisseur déjà assemblé ! On trouve par exemple des câbles USB<=>RS22 destinés aux téléphones portables. L'utilisation de de ce genre de câble possède de nombreux avantages : | |||
* économique: moins de 4€ | |||
* petite taille : généralement tous les composants sont intégrés à la prise USB | |||
* aucun développement : plug and play :) | |||
<br clear="all" /> | |||
Version du 29 septembre 2008 à 19:43
Principe Général
Afin de permettre la communication entre les différentes parties électroniques du robot nous avons choisi le bus I²C. Nous ne reviendrons pas ici sur le principe de ce bus tant les documentations à ce sujet sont nombreuses sur le net (au hasard).
Nos utilisations
Développement
Lors du développement des différentes cartes filles il nous est indispensable de disposer d'un moyen "sur" de communiquer sur le bus I²C. Nous avons donc cherché une interface utilisable facilement et ayant fait ses preuves. Il s'avère que de nombreuses interfaces existent et s'utilise très facilement avec Linux. Ces interfaces "communes" sont directement utilisables depuis les drivers du noyau. Leur gros défaut sont une consommation cpu élevée et leur interface parallèle (DB-25 is back !).
Pour cette utilisation nous avons choisi une interface de type ELV. Disposant d'opto-coupleurs, le montage isole électriquement le PC de nos montages. Celui-ci est reconnu nativement par le noyau linux.
Embarqué
Dans le cadre de l'utilisation embarquée nous devons disposer d'un système capable de fonctionner sur n'importe quel OS et sur port USB. Nous avons donc décidé de développer notre propre interface USB-I²C. Celle-ci est vue par le PC comme un simple port COM grace au CDC.
La communication se fait selon un protocole visant à maximiser la compatibilité et la lisibilité. Un simple terminal permet d'envoyer et de recevoir des données.
Nos développements sont détaillés ci-dessous.
Nos développements
USB-I²C v1
Cette première interface utilise un PIC 18F4550. Celui-ci intègre un port USB et un port I²C, un cible de choix donc. En pratique l'utilisation de l'USB et d'une émulation du CDC provoque un charge cpu importante. Dés lors il devient difficile d'assurer une fiabilité optimale ...
USB-I²C v2
Cette seconde interface utilise un PIC 18F. Ici nul besoin d'USB natif : le support de l'USB et du CDC sont assurés par un composant spécifique. Le PIC ne voit alors qu'un port série classique. Ainsi libéré il ne s'occupe que de l'interprétation/transcription du protocole série vers I²C.
De nombreux composants existent pour réaliser la conversion USB<=>RS232. Le plus connus est sans conteste le FT232 de FTDI. Cependant il existe une solution beaucoup plus simple et économique : utiliser un convertisseur déjà assemblé ! On trouve par exemple des câbles USB<=>RS22 destinés aux téléphones portables. L'utilisation de de ce genre de câble possède de nombreux avantages :
- économique: moins de 4€
- petite taille : généralement tous les composants sont intégrés à la prise USB
- aucun développement : plug and play :)
Liens
Quelques liens vers des sites ou des documents traitant de la réalisation d'interfaces PC/ I²C.
- Interface sur port // avec optocoupleurs. Fonctionne avec le driver linux, type ELV (type=3). Il est possible de remplacer le PC817 par un CNY-4.
- Interface sur port // avec optocoupleurs. Fonctionne avec le driver linux, type Philipps (type=0) et Velleman (type=2). Le site présente également quelques montages I²C.
- La K8000 de Velleman. Superbe carte, hors de prix ;)
- Une doc sympa
- eeprog is a Linux C program that allows you to read and write to 24Cxx EEPROM