Uživatelské nástroje

Nástroje pro tento web


cs:i2c

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
cs:i2c [2014/12/21 10:28] – [Použití modulů jádra] fluktuaciacs:i2c [2022/09/02 21:20] (aktuální) – [Použití I²C v systému Linux] kaklik
Řádek 1: Řádek 1:
 ====== Sběrnice I²C ve stavebnici MLAB ====== ====== Sběrnice I²C ve stavebnici MLAB ======
  
-[[http://cs.wikipedia.org/wiki/I%C2%B2C|Sběrnice I²C]], nebo také TWI je velmi rozšířená elektronická sběrnice určená pro nízko rychlostní komunikaci mezi různými periferiemi. V případě stavebnice MLAB je to nejčastěji komunikace mezi mikroprocesorem a čidly. Existuje od ní také varianta [[http://cs.wikipedia.org/wiki/System_Management_Bus|SMUus]], která je její podmnožinou. Avšak obsahuje i definici timeoutů a Packet Error Checking, proto je v jistém smyslu robustnější, než I2C.+[[http://cs.wikipedia.org/wiki/I%C2%B2C|Sběrnice I²C]], nebo také TWI je velmi rozšířená elektronická sběrnice určená pro nízko rychlostní komunikaci mezi různými periferiemi. V případě stavebnice MLAB je to nejčastěji komunikace mezi mikroprocesorem a čidly. Existuje od ní také varianta [[http://cs.wikipedia.org/wiki/System_Management_Bus|SMBus]], která je její podmnožinou. Avšak obsahuje i definici timeoutů a Packet Error Checking, proto je v jistém smyslu robustnější, než I2C(([[http://www.nxp.com/documents/user_manual/UM10204.pdf|Specifikace sběrnice I²C]])).
  
 Avšak díky[[cs:arm| novým možnostem]] ve výpočetní technice lze sběrnici použít i pro komunikaci s čidly přímo z Linuxového systému. Navíc v případě použití některého [[cs:usbi2c|adaptéru na I2C]] lze tuto sběrnici připojit i ke klasickému PC Avšak díky[[cs:arm| novým možnostem]] ve výpočetní technice lze sběrnici použít i pro komunikaci s čidly přímo z Linuxového systému. Navíc v případě použití některého [[cs:usbi2c|adaptéru na I2C]] lze tuto sběrnici připojit i ke klasickému PC
Řádek 49: Řádek 49:
  
 Mají společný problém s kvalitou driverů. Navíc i2c-tiny-usb nesplňuje úplně I²C specifikaci a už vůbec ne USB physical layer specifikaci a jeho nejvyšší komunikační rychlost je 50 Kbps. Nicméně v MLABu jsou tyto konstrukce nahrazeny zařízením [[cs:i2c_avr_usb|I2C AVR USB]], což je ekvivalent konstrukce i2c-tiny-usb ale postavené modulů MLAB. Alternativou je také nedokončená konstrukce [[cs:i2c-pic-usb|Konvertor I²C na USB s PIC]]. Mají společný problém s kvalitou driverů. Navíc i2c-tiny-usb nesplňuje úplně I²C specifikaci a už vůbec ne USB physical layer specifikaci a jeho nejvyšší komunikační rychlost je 50 Kbps. Nicméně v MLABu jsou tyto konstrukce nahrazeny zařízením [[cs:i2c_avr_usb|I2C AVR USB]], což je ekvivalent konstrukce i2c-tiny-usb ale postavené modulů MLAB. Alternativou je také nedokončená konstrukce [[cs:i2c-pic-usb|Konvertor I²C na USB s PIC]].
 +
 +==== Linux kernel device ====
 +
 +V současné době existují dva obvody, které mají podporu v linuxovém kernelu: 
 +
 +  * [[cs:usbi2c|CP2112]] - Implementován v MLABU. 
 +  * [[https://www.microchip.com/wwwproducts/en/MCP2221|MCP2221]] - Podpora zřejmě až v novém kernelu 5.x. 
 +
 +
  
 ==== USB HID ==== ==== USB HID ====
  
 Pro připojení bez nutnosti použití driverů určených pro specifický hadrware je možné použít specifikaci [[http://en.wikipedia.org/wiki/USB_human_interface_device_class|USB HID]]. V MLABu tuto specifikaci splňuje modul [[cs:usbi2c|USBI2C01A]], který lze ovládat například přes Python a HIDAPI. viz níže.  Pro připojení bez nutnosti použití driverů určených pro specifický hadrware je možné použít specifikaci [[http://en.wikipedia.org/wiki/USB_human_interface_device_class|USB HID]]. V MLABu tuto specifikaci splňuje modul [[cs:usbi2c|USBI2C01A]], který lze ovládat například přes Python a HIDAPI. viz níže. 
 +
 +
  
 ==== UART/RS232 na I2C ==== ==== UART/RS232 na I2C ====
Řádek 63: Řádek 74:
 ===== Použití I²C v systému Linux ===== ===== Použití I²C v systému Linux =====
  
-Pro Ubuntu existuje balík nástrojů pro práci se sběrnicí I²C. Nainstalujeme jej přes: +Pro Ubuntu existuje [[https://github.com/MLAB-project/i2c-tools| balík nástrojů]] pro práci se sběrnicí I²C. Nainstalujeme jej přes: 
   sudo apt-get install i2c-tools   sudo apt-get install i2c-tools
      
-Jádro však obvykle nemá instalovaný modul //i2c-dev// (([[https://i2c.wiki.kernel.org/index.php/Main_PageLinux I²C Subsystem]])), přidáme jej proto do systému: +V případě, že ve zvolené aplikaci potřebujeme i instrukce write_i2c_block a read_i2c_block, tak je potřeba nainstalovat [[https://github.com/MLAB-project/i2c-tools upravenou verzi i2c-tools]].  
-  sudo modprobe i2c-dev +  
- +
-<WRAP tip>   +
-Příkaz modprobe přidá modul pouze do běžící instance jádraPo rebootu nám tento modul pravděpodobně bude chybět. Pokud nechceme modprobe používat i po následujícím startu počítače, tak  do souboru /etc/modules přidáme řádek: +
-  i2c-dev   +
-</WRAP> +
 Nyní již můžeme vypsat dostupné I²C sběrnice v systému: Nyní již můžeme vypsat dostupné I²C sběrnice v systému:
  
Řádek 84: Řádek 89:
   i2c-5 i2c        i915 gmbus dpd                  I2C adapter   i2c-5 i2c        i915 gmbus dpd                  I2C adapter
   i2c-6 i2c        i2c-tiny-usb at bus 001 device 030 I2C adapter   i2c-6 i2c        i2c-tiny-usb at bus 001 device 030 I2C adapter
 +
 +Může se všák stát, ze jádro nemá instalovaný modul //i2c-dev// (([[https://i2c.wiki.kernel.org/index.php/Main_Page| Linux I²C Subsystem]])), přidáme jej proto do systému:
 +  sudo modprobe i2c-dev
 +
 +<WRAP tip>  
 +Příkaz modprobe přidá modul pouze do běžící instance jádra. Po rebootu nám tento modul pravděpodobně bude chybět. Pokud nechceme modprobe používat i po následujícím startu počítače, tak  do souboru /etc/modules přidáme řádek:
 +  i2c-dev  
 +</WRAP>
 +
  
 Pomocí programu  //i2cdetect// pak můžeme prohledat sběrnici I²C například na počítači [[cs:odroid-x2|Odroid-X2]], který má I²C vyvedené na GPIO konektor. Pomocí programu  //i2cdetect// pak můžeme prohledat sběrnici I²C například na počítači [[cs:odroid-x2|Odroid-X2]], který má I²C vyvedené na GPIO konektor.
cs/i2c.1419157697.txt.gz · Poslední úprava: 2014/12/21 10:28 (upraveno mimo DokuWiki)