Re: [LA-discussions] Fonera avec OpenWrt et bus I2C - Appel à l'aide !!

[ Thread Index | Date Index | More linuxarverne.org/discussions Archives ]


Bonsoir,

Le jeudi 12 mars 2009 01:54:13 RAULT Alexandre, vous avez écrit :
> Lignes GPIO 3, 4, 1 et 7 respectivements sur leds #1, #2, #3, #4
>
> Au boot, les états sont 'incertains', puis, passe visiblement à 0
> (sorties à collecteurs ouverts à priori)
> Dans la console ça fini en
> i2c /dev entries driver
> i2c-gpio: probe failed: -19
[...]
> La grosse interrogation actuelle : i2c-gpio a peut-être besoin de
> paramètres voir d'un bus I2C réellement connecté....
[...]
> En fait, étrangement, gpio-custom ne semble pas compilé avec open-wrt....
Si gpio-custom designe i2c-gpio-custom, pourquoi ne tente tu pas d'utiliser 
`opkg install kmod-i2c-gpio-custom` ?
Je pense qu'il va falloir utiliser i2c-gpio-custom, car comme son nom 
l'indique, il est plus configurable (ce qui peut nous aider).

Si i2c-gpio-custom utilise deux gpio par bus i2c et que la fonera est 
electroniquement compatible avec ce mode, il faut configurer le module i2c-
gpio-custom au boot, en lui passant les parametres requis dans l'ordre : 
<id>,<sda>,<scl>,<udelay>,<timeout>,<sda_od>,<scl_od>,<scl_oo>
Quelques explications dans le fichier include/i2c-gpio.h :
 @sda_pin: GPIO pin ID to use for SDA
 @scl_pin: GPIO pin ID to use for SCL
 @udelay: signal toggle delay. SCL frequency is (500 / udelay) kHz
 @timeout: clock stretching timeout in jiffies. If the slave keeps
     SCL low for longer than this, the transfer will time out.
 @sda_is_open_drain: SDA is configured as open drain, i.e. the pin
     isn't actively driven high when setting the output value high.
     gpio_get_value() must return the actual pin state even if the
     pin is configured as an output.
 @scl_is_open_drain: SCL is set up as open drain. Same requirements
    as for sda_is_open_drain apply.
 @scl_is_output_only: SCL output drivers cannot be turned off.
Et d'après la structure déclarée dans le code,<sda_od>,<scl_od>,<scl_oo> sont 
des booleans.

Je ne sais pas si c'est valable mais j'ai lu dans un post (dont je n'ai plus 
la source sous la main) qu'un utilisateur avait eu quelques soucis pour 
charger correctement un module i2c si un périphérique i2c n'était pas relié au 
chargement du module... Ça ne coute rien d'essayer...

> Le top :
>  Sda0 = GPIO 3 et Scl0 = GPIO4 si le bus se contente de 2 I/O et en
> 3.3V direct non bufferisé
Donc si je ne me trompe pas :
 - Tu installes i2c-gpio-custom en utilsant opkg, 
 - Tu crée le fichier /etc/modules.d/59-i2c-gpio-custom dans le quel tu mets 
"i2c-gpio-custom 0 3 4" (sans les "")
  0 pour bus0
  3 4 pour les <sda>,<scl>

Si ça ne marche pas, il faudra peut-être que tu initialises aussi les autres 
paramètres : 
"i2c-gpio-custom 0 3 4 50 ?? 1 1 0"
  50 pour udelay correspond à une fréquence de 10Khz et 5 à 100 Khz
  ?? pour timeout je n'en ai aucune idée...
  1 1 pour le flag "collecteur ouvert" sur les broches sda scl
  0 pour "sortie seulement sur scl"
 - Tu branches un périphérique I2C,
 - Tu reboot pour voir si le module se charge correctement
 - Enjoy !

Amuse-toi bien...

-- 
neomilium

---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/