Table of Contents

I²C rozbočovač I2Chub02B

Dokumentace k modulu E-shop UST

Modul určený k rozvětvení dvouvodičové sběrnice. Zapojení konektoru je zároveň uzpůsobeno k rozvodu napájení. A modul je tedy velice výhodné použít na robotech pro zasíťování čidel ve hvězdicové topologii.

Používání modulu

Před použitím modulu a připojením napájení se ujistěte, zda všechna připojená čidla mohou být provozována na zvoleném napájecím napětí. Neboť připojením +5V napájení na 3,3V čidlo dojde k jeho poškození, nebo zničení.

Modul má na standardy MLAB poměrně nezvyklé uspořádání výstupních konektorů, kdy konektory na I²C nejsou paralelně zdvojeny, ale naopak každá hřebínková řada je připojena k jednomu výstupnímu kanálu obvodu TCA9548A a číslována číslicemi 0 až 7.

Python

Ovládání modulu je implementováno v balíku pymlab v I²C subsystému stavebnice MLAB.

Linux

V jádře Linuxu existuje modul pca954x, který slouží k ovládání integrovaných obvodů řady pca9541-8, které jsou však programátorsky kompatibilní s obvodem TCA9548A, použitým v modulu I2HUB02A. Protože I2C není plug-and-play sběrnice. Musíme tento modul nahrát do jádra ručně:

sudo modprobe pca954x

Následně je možné modul přiřadit ke konkrétní I²C adrese na konkrétní sběrnici

root@OpenWrt:/# echo pca9548 0x70 > /sys/bus/i2c/devices/i2c-1/new_device 
root@OpenWrt:/# dmesg | tail
i2c i2c-1: Added multiplexed i2c bus 2
i2c i2c-1: Added multiplexed i2c bus 3
i2c i2c-1: Added multiplexed i2c bus 4
i2c i2c-1: Added multiplexed i2c bus 5
i2c i2c-1: Added multiplexed i2c bus 6
i2c i2c-1: Added multiplexed i2c bus 7
i2c i2c-1: Added multiplexed i2c bus 8
i2c i2c-1: Added multiplexed i2c bus 9
pca954x 1-0070: registered 8 multiplexed busses for I2C switch pca9548
i2c i2c-1: new_device: Instantiated device pca9548 at 0x70

Tento postup způsobí rozdělení hlavní zběrnice na několik segmentů, kdy ke každému segmentu I²C zběrnice lze z jádra přistupovat zvlášť.

Alternativně je však možné výstupy modulu přepínat ručně použitím přímého zápisu do routovacího registru. Například tento příkaz aktivuje všechny jeho porty (Pozor, pokud budeme v takovém případě na dva různé porty připojena zařízení se stejnými adresami, tak dojde velmi pravděpodobně k zablokování sběrnice.)

sudo i2cset -y -r  1 0x70 0xff

Související stránky

Reference

Problémy

U verze I2CHUB02A se vyskytla výrobní vada a některé PCB měly nevodivé některé prokovy. Závada se projevovala tak, že nebyly připojeny některé pull-up odpory na napájení.