Title

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait

Comment activer le bus i2c du Raspberry-pi 4

J’ai récemment réalisé le Proof of Concept de projet d’un client utilisant Linux embarqué. Dans ce cadre, j’ai utilisé le bus I2C de mon nouveau Raspberry-Pi 4. Malheureusement le bus i2c n’était pas fonctionnel par défaut. Voici comment l’activer et l’utiliser avec Buildroot, la procédure est très similaire sous Raspbian :

Raspberry Pi i2c
Un Raspberri-Pi 4 avec un device connecté sur son bus i2c-1

Configurer le firmware du Raspberry-Pi 4 pour activer le bus i2c

Par défaut tous les bus non indispensables (i2c, SPI, etc) sont désactivés sur le Raspberry-Pi. Il faut donc commencer par configurer son firmware pour qu’il active le bus i2c-1 via le fichier config.txt

Ce fichier est présent sur la partition de boot de la carte SD, mais le plus efficace reste de l’activer directement dans le package rpi-firmware dans buildroot. Pour cela, éditez le fichier package/rpi-firmware/config.txt depuis le dossier de sources de Buildroot et ajoutez-y cette ligne.

dtparam=i2c1=on

Sur Raspbian, vous trouverez ce fichier directement dans /boot/config.txt. Vous pouvez simplement faire la modification, redémarrer puis passer à l’étape suivante.

Le fichier config.txt est l’équivalent du BIOS sur un PC. Il vous permet de configurer le système.

Maintenant il vous faut recompiler le package rpi-firmware :

make rpi-firmware-rebuild

Puis, vous devez générer votre l’image de la carte Micro-SD du Raspberry-pi :

make

Flashez le firmware sur la carte et démarrez le Raspberry-pi 4

Ajouter manuellement les modules manquants pour le activer le bus i2c du Raspberry-pi

Le Processeur du Raspberry-Pi 4 est un Broadcom 2711, il réutilise un certain nombre de modules qui étaient déjà présents dans des versions plus anciennes du SoC (Système on Chip, processeur multifonctions), dont le bcm2835. Pour cette raison vous pouvez charger les modules suivants. Par défaut les modules nécessaires sont présents sur le système donc il ne reste plus qu’à les démarrer manuellement:

modprobe i2c-bcm2835
modprobe i2c-dev
[   37.740438] i2c /dev entries driver

Maintenant, vous devriez trouver le bus i2c-1 dans /dev :

 ls -la /dev/i2c-1 
crw-------    1 root     root       89,   1 Jan 18 15:19 /dev/i2c-1

Le bus i2c-1 est maintenant utilisable, il dispose des fonctions nécessaires pour utiliser vos périphériques I2C, mais également pour SMBus (l’ancêtre d’i2C):

# i2cdetect -F 1
Functionalities implemented by bus #1
I2C                              yes
SMBus quick command              yes
SMBus send byte                  yes
SMBus receive byte               yes
SMBus write byte                 yes
SMBus read byte                  yes
SMBus write word                 yes
SMBus read word                  yes
SMBus process call               yes
SMBus block write                yes
SMBus block read                 no
SMBus block process call         no
SMBus PEC                        yes
I2C block write                  yes
I2C block read                   yes

Julien Grossholtz

Expert en logiciel embarqué, j'accompagne les entreprises dans la création de leurs objets intelligents et leurs IoT.

6 comments so far

Utilisez le MPU6050 sur Raspberry-Pi – OpenestPosted on 11:08 - Jan 21, 2020

[…] de l’étudier. Pour cela j’ai obtenu sa Register map, je l’ai connecté sur le bus i2c-1 de mon Raspberry-pi et j’ai joué avec i2cget & […]

ClaudePosted on 5:03 - Août 1, 2020

Bonjour

Je viens d’installer une carte hat (SUSVD) sur un raspi pi4 qui communique par le bus i2c (carte hat gestion alimentation + shut off si perte de courant + chargement Lipo + horloge)
J’ai installer le paquet fourni par le constructeur et j’ai bien accès au deux adresses (horloge et fonctionnalités du SUSVD) en faisant sudo i2cdetect -y 1

Par acquis de conscience j’ai été aussi dans raspi-config….et j’ai activé le bus i2c…..

L’activation telle que présenté ici ne fait elle pas doublon ?

    Julien GrossholtzPosted on 3:20 - Août 5, 2020

    Bonjour,

    Je ne suis pas certain, mais oui, je pense que raspi-config active le bus i2c dans config.txt. Il ne s’y trouvait pas ?
    Simple curiosité, quel hat utilisez vous pour l’alimentation ?

ClaudePosted on 3:45 - Août 17, 2020

Bonjour
je réponds avec beaucoup de retard (milles excuses…)

J’utilises la version advanced du site ici :
https://s-usv.de/?lang=en

Je suis sur une version advanced mobile qui ne se fait plus c’est dommage….
Si vous le souhaitez je peux vous donner mes retours d’expériences sur cette carte ou ici ou directement par mail (je pense qu’en tant que modérateur vous l’avez …)

Si je tapes la commande dans le raspberry PI 4 :

# i2cdetect -F 1

Cela devrait fonctionner et me dire quoi est activé ?? non ?

Merci

Julien GrossholtzPosted on 11:04 - Août 26, 2020

Bonjour Claude,

Le bus i2c-1 est-il bien présent dans /dev ?
$ ls -la /dev/i2c-1

Si oui, le bus est correctement configuré et le problème vient de la carte, si non il y à un problème avec la configuration du raspberry.
Si le bus est présent, le constructeur de la cape que vous utilisez recommande de faire:
$ i2cdetect -a -y 1
Afin de déterminer l’adresse i2c de la cape sur le bus.

Que retournent ces deux commandes ?

ClaudePosted on 9:55 - Sep 8, 2020

Bonjour Julien
J’ai remis ma carte Olmatic sur mon PI 2 et fait les paramétrages => tout fonctionne parfaitement
Même OS et même hat sur un PI4 et cela manque de stabilité (je me demandes si le PI4 n’est pas un peu différent du PI2 (à la marge) qui rendrait certaine carte hat instable…

Je viens d’acheter un strompi 3 + sa batterie et j’avoue être un peu déçu (gros souci de paramétrage au départ…..) et j’ai à quasiment chaque démarrage une alerte visuelle sur le manque de puissance alors que l’ensemble est alimenté en 12volts et une intensité bien supérieure à ce qu’il faudrait….
Peut être que la détection faite par le PI 4 se fait peut être par erreur entre les basculements secteur et batterie (dans le creux….)

il faut avouer aussi que après avoir gouté à la olmatic (qualité chère mais qualité tout de même….) c’est dur de revenir à du bricolage….

Je vais peut être me laisser tenter par la carte olmatic industrial mais ni mouser france ni olmatic me disent ou trouver la batterie 3400ma LiFePO4 qui va avec ….

Leave a Reply