User Tools

Site Tools

Translations of this page?:

Action disabled: register
cs:i2c_avr_usb

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í:

Reálně je však v provedení MLABu zařízení složeno z několika modulů.

Firmware

Firmware je dostupný v 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

Reference

cs/i2c_avr_usb.txt · Last modified: 2014/12/12 23:44 (external edit)