====== I²C rozbočovač I2Chub02B ====== [[http://www.mlab.cz/Modules/CommSerial/I2CHUB02A/DOC/I2CHUB02A.cs.pdf|Dokumentace k modulu]] [[http://www.ust.cz/shop/product_info.php?cPath=22_27&products_id=230|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 [[cs:pymlab|pymlab]] v [[cs:i2c|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 ===== * [[cs:i2c|MLAB a sběrnice I²C]] ===== Reference ===== * [[https://forum.openwrt.org/viewtopic.php?id=30224|I2Chub02A v OpenWRT]] ===== 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í.