====== Převodník I²C na USB s AVR (známý jako i2c-tiny-usb) ====== Cílem této konstrukce je vyřešit častý problém přípojení I2C nebo SMBus zařízení, nebo čidla k počítači. Klasické řešení tohoto problému je připojení čidla k některému mikrokontroléru a pak následně k nadřazenému systému, Jednou z hlavních nevýhod tohoto přístupu je, že musí být dopředu známá konfigurace čidel připojených k mikroprocesoru a zároveň čtení čidel je vázáno na firmware v mikroprocesoru. Je proto žádoucí nechat při dnešním výpočetním výkonu, který je k dispozici čtení čidel přímo na nadřazeném systému v počítači, tak aby konfigurace čidel a verze driveru čidla mohla být libovolně změněna i za běhu a nebyla vázána na fixní firmware v MCU. ===== Konstrukce převodníku ===== ==== Zapojení ==== Principiální zapojení převodníku je následující: {{ :cs:designs:tools:original_schematic.png?direct&400 |}} Reálně je však v provedení MLABu zařízení složeno z několika modulů. {{ :cs:designs:tools:i2c-avr-usb_top_big.jpg?direct&500 |}} ==== Firmware ==== Firmware je dostupný v [[http://www.mlab.cz/WebSVN/listing.php?repname=MLAB&path=%2FDesigns%2FTools%2Fi2c_AVR_USB%2FSW%2F#_Designs_Tools_i2c_AVR_USB_SW_|dokumentační složce MLAB]] ===== Funkce ===== Po připojení konstrukce k počítači můžeme na USB nalézt následující zařízení. $ sudo lsusb -v -d 0403:c631 Bus 003 Device 018: ID 0403:c631 Future Technology Devices International, Ltd i2c-tiny-usb interface Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0403 Future Technology Devices International, Ltd idProduct 0xc631 i2c-tiny-usb interface bcdDevice 1.05 iManufacturer 1 Till Harbaum iProduct 2 i2c-tiny-usb iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 18 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 10mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 0 bInterfaceClass 0 (Defined at Interface level) bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 0 Device Status: 0x0000 (Bus Powered) Toto zařízení je pak automaticity enumerováno a rozpoznáno jako I2C rozhraní. ==== Enumerace na USB ==== [38601.270471] usb 3-3.1: new low-speed USB device number 18 using xhci_hcd [38601.292607] usb 3-3.1: New USB device found, idVendor=0403, idProduct=c631 [38601.292613] usb 3-3.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [38601.292616] usb 3-3.1: Product: i2c-tiny-usb [38601.292618] usb 3-3.1: Manufacturer: Till Harbaum [38601.312318] i2c-tiny-usb 3-3.1:1.0: version 1.05 found at bus 003 address 018 [38601.332450] i2c i2c-8: connected i2c-tiny-usb device [38601.332473] usbcore: registered new interface driver i2c-tiny-usb Obvykle je ale pro vytvoření zařízení /dev/i2c-8 do kernelu nahrát ještě modul i2c-dev. $ sudo modprobe i2c-dev Pak již vidíme všechna I2C a SMB rozhraní v počítači. $ sudo i2cdetect -l i2c-0 i2c i915 gmbus ssc I2C adapter i2c-1 i2c i915 gmbus vga I2C adapter i2c-2 i2c i915 gmbus panel I2C adapter i2c-3 i2c i915 gmbus dpc I2C adapter i2c-4 i2c i915 gmbus dpb I2C adapter i2c-5 i2c i915 gmbus dpd I2C adapter i2c-6 i2c DPDDC-C I2C adapter i2c-7 i2c DPDDC-D I2C adapter i2c-8 i2c i2c-tiny-usb at bus 003 device 018 I2C adapter ===== Související stránky ===== * [[cs:usbi2c|USBI2C]] - modernější modul určený k přímému převodu I2C na USB * [[cs:i2c-pic-usb|Konvertor I²C na USB s PIC]] * [[cs:i2c|Sběrnice I²C ve stavebnici MLAB]] ==== Reference ==== * [[http://www.harbaum.org/till/i2c_tiny_usb/index.shtml|i2c-tiny-usb]]