cs:usbi2c
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
cs:usbi2c [2014/09/02 09:51] – [Ubuntu 14.04] kaklik | cs:usbi2c [2024/11/07 12:36] (aktuální) – [HIDAPI] kaklik | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
- | ====== Převodník USB na I²C USBI2C01A ====== | + | ====== Převodník USB na I²C - USBI2C01A ====== |
[[cs: | [[cs: | ||
Řádek 9: | Řádek 9: | ||
===== Použití modulu ===== | ===== Použití modulu ===== | ||
- | Modul se po připojení k USB chová, jako standardní HID zařízení. | + | Modul se po připojení k USB chová, jako standardní HID zařízení. |
==== HIDAPI ==== | ==== HIDAPI ==== | ||
Řádek 16: | Řádek 16: | ||
- | === Ubuntu | + | === Ubuntu |
- | Na počítač, ke kterému převodník připojíme, | + | Na počítač, ke kterému převodník připojíme, |
sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-pip python-smbus cython | sudo apt-get install libudev-dev libusb-1.0-0-dev libhidapi-dev python-setuptools python-pip python-smbus cython | ||
Řádek 26: | Řádek 26: | ||
sudo pip install pymlab | sudo pip install pymlab | ||
| | ||
+ | == Nastavení USBI2C v pymlabu s HIDAPI == | ||
+ | Převodník USBI2C lze používat s [[cs: | ||
+ | |||
+ | Nastavení může vypadat takto: | ||
+ | | ||
+ | cfg = config.Config( | ||
+ | i2c = { | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | | ||
+ | bus = [ | ||
+ | { << Dalsi Pymlab zarizezi >>}, | ||
+ | ], | ||
+ | ) | ||
+ | cfg.initialize() | ||
+ | | ||
+ | |||
== Příklad blikání LEDkami na USBI2C01A pomocí Pythonu: == | == Příklad blikání LEDkami na USBI2C01A pomocí Pythonu: == | ||
Řádek 67: | Řádek 86: | ||
Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři **/ | Aby se skript nemusel spouštět s právy roota, je třeba vytvořit v adresáři **/ | ||
- | SUBSYSTEM==" | + | SUBSYSTEM==" |
- | SUBSYSTEM==" | + | SUBSYSTEM==" |
| | ||
- | ==== Linux Kernel ==== | + | Aby se tato konfigurace stala aktivní, tak je potřeba USB zařízení odpojit a opět připojit. |
+ | |||
+ | === Windows 8 === | ||
- | Linux je případem operačního systému, kde existuje systémové řešení komunikace se sběrnicí I2C, takže je výhodné generický HID ovladač vyměnit za jiný. Zatím ale neexistuje vhodný ovladač integrovaný v jádře, ale vyvíjí se mimo něj. <wrap info> Podle současného vývoje by driver měl být stabilně integrován v jádře 3.15. </ | + | Pokud ve windows jeste nemame, tak stahneme a nainstalujeme |
+ | Spolecne s nim potrebujeme mit nainstalovany i nastroj pip. V pripade, ze se nenainstaluje spolecne s pythonem (sel by spustit z prikazoveho radku), tak jej musime nainstalovat samostatne, podle navodu na teto strance: https:// | ||
- | To lze udělat buď kompilací nového modulu do aktuálního jádra které používáme, | + | Dale pak stahneme a nainstalujeme |
+ | pip install C: | ||
- | === Kompilace samostatného modulu === | + | Pri instalaci se muze stat, ze pip odmitne balik nainstalovat kvuli spatne zdetekovane architekture win32 viz. [[http:// |
- | <WRAP info round> | + | Po uspesne instalaci vsech zavislosi muzeme nainstalovat hidapi. |
- | Tato metoda použití modulu zatím nefunguje úplně správně. Zatím však není ale ani dokončen driver do jádra linuxu. Zde popisovaný návod funguje správně až od verze kernelu 3.15. Používejte poroto zatím rozhraní HIDAPI popsané výše. | + | |
- | </ | + | |
- | Nejdříve zkompilujeme modul hid-cp2112 | + | H:\>pip install hidapi |
+ | Collecting hidapi | ||
+ | Using cached hidapi-0.7.99-6.tar.gz | ||
+ | Building wheels for collected packages: hidapi | ||
+ | Running setup.py bdist_wheel for hidapi | ||
+ | Stored in directory: C: | ||
+ | 4967b124ee3c5de267640f1b6fd0da760d99cf4e81181aab7 | ||
+ | Successfully built hidapi | ||
+ | Installing collected packages: hidapi | ||
+ | Successfully installed hidapi-0.7.99.post6 | ||
+ | H:\> | ||
+ | ==== Linux Kernel ==== | ||
- | git clone https:// | + | Linux je případem operačního systému, kde existuje systémové řešení komunikace |
- | cd hid-cp2112 | + | |
- | make | + | |
- | + | ||
- | Kdyby jsme se v této chvíli pokusili modul vložit do jádra pomocí //insmod//, tak se modul sice do jádra | + | |
- | | + | |
- | [34842.870424] usb 3-4: New USB device found, idVendor=10c4, | + | |
- | [34842.870427] usb 3-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | + | |
- | [34842.870428] usb 3-4: Product: CP2112 HID USB-to-SMBus Bridge | + | |
- | [34842.870429] usb 3-4: Manufacturer: | + | |
- | [34842.870430] usb 3-4: SerialNumber: | + | |
- | [34842.874171] hid-generic 0003: | + | |
- | + | ||
- | Na poslední řádce vidíme, že přidělený identifikátor je v tomto případě **0003: | + | |
- | + | ||
- | | + | |
- | echo -n " | + | |
- | + | ||
- | A připojíme na něj náš nově přeložený ovladač: | + | |
- | + | ||
- | insmod ./ | + | |
- | echo -n " | + | |
- | + | ||
- | Následně ověříme, že v systému vidíme novou sběrnici I²C. | + | |
- | + | ||
- | | + | |
i2c-0 i2c | i2c-0 i2c | ||
i2c-1 i2c | i2c-1 i2c | ||
Řádek 117: | Řádek 125: | ||
i2c-4 i2c | i2c-4 i2c | ||
i2c-5 i2c | i2c-5 i2c | ||
- | i2c-6 i2c | + | i2c-6 i2c |
- | i2c-7 i2c | + | i2c-7 smbus |
i2c-8 smbus | i2c-8 smbus | ||
+ | kaklik@UST-vyvoj: | ||
- | | + | Pokud ano, tak rozhraním můžeme pracovat stejně jako s klasickou SMBus sběrnicí. S tím rozdílem, že modul neumí SMBus Quick Write, musíme proto použít parametr //-r//, jako je uvedeno v následujícím příkladu: |
- | + | ||
- | | + | |
| | ||
00: -- -- -- -- -- -- -- -- -- -- -- -- -- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
Řádek 132: | Řádek 141: | ||
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | ||
- | 70: -- -- -- -- -- -- -- -- | + | 70: 70 -- -- -- -- -- -- -- |
- | | + | |
- | + | Vidíme, že je na sběrnici připojeno zařízení s adresou //0x70//, které je v tomto případě [[cs: | |
- | === Kompilace celého jádra | + | |
- | V terminálu se přepneme do složky ve které chceme kernel zkompilovat. Následně stáhneme zdrojový balíček aktuálně běžícího kernelu: | + | ==== Ukázky |
- | apt-get source linux-image-$(uname -r) | + | === CLKGEN01B === |
- | Následně nainstalujeme nástroje potřebné pro kompilaci. | + | [[cs: |
- | sudo apt-get install kernel-package libncurses5 libncurses5-dev | + | {{: |
- | sudo apt-get build-dep linux-image-$(uname -r) | + | |
- | V této fázi by již měl být k dispozici nový adresář obsahující zdrojové kódy jádra. V našem případě linux-3.11.0. Přepneme se do něj a vytvoříme konfiguraci jádra identickou s aktuálně běžícím jádrem. | ||
- | cd linux-3.11.0 | ||
- | make oldconfig | ||
- | Následně aplikujeme [[https:// | + | === MAG01A === |
- | patch -Np1 --ignore-whitespace | + | [[cs:mag]] |
- | Pravděpodobně se stane, že některé soubory nebude možné automaticky upravit. Proto je potřeba to udělat ručně | + | {{: |
- | Takto najdeme odmítnuté změny. | + | |
- | find . -name " | + | === GPIO === |
- | + | ||
- | A postupně je upravíme ručně. A násdne spustíme menuconfig ve kterém nový modul zapneme. Na cestě: //> Device Drivers > HID support > Special HID drivers; | + | |
- | + | ||
- | make menuconfig | + | |
- | + | ||
- | Ukončíme menuconfig a zapneme kompilaci kernelu | + | |
- | + | ||
- | sudo make-kpkg -j 8 --initrd --append-to-version=i2c-test kernel-image | + | |
- | + | ||
- | Ta bude chvíli trvat a spotřebuje cca 10 GB místa pro vytvoření objektových souborů.. Po skončení operace by se v nadřazeném adresáři měl objevit .deb balíček, který můžeme naistalovat pomocí: | + | |
- | + | ||
- | sudo dpkg -i linux-image-3.11.10i2c-test_3.11.10i2c-test-10.00.Custom_amd64.deb | + | |
- | sudo reboot | + | |
- | + | ||
- | Pokud k převodníku máme připojené nějaké I²C zařízení, | + | |
- | + | ||
- | kaklik@popelnice: | + | |
- | | + | |
- | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 50: -- -- -- -- -- 55 -- -- -- -- -- -- -- -- -- -- | + | |
- | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- | + | |
- | 70: -- -- -- -- -- -- -- -- | + | |
- | kaklik@popelnice: | + | |
- | + | ||
- | V tomto případě je k modulu USBI2C01A připojen modul [[cs: | + | |
- | + | ||
- | ==== Ukázky připojených I²C modulů ==== | + | |
- | + | ||
- | === CLKGEN01B === | + | |
- | + | ||
- | {{: | + | |
- | + | ||
- | + | ||
- | + | ||
- | === MAG01A | + | |
- | {{ :cs:modules: | + | [[cs:i2cio]] |
+ | {{youtube> | ||
===== Související stránky ===== | ===== Související stránky ===== | ||
cs/usbi2c.1409651498.txt.gz · Poslední úprava: 2014/09/02 09:51 (upraveno mimo DokuWiki) · Právě zamknuto: 3.143.218.84