\ NetCarity

NetCarity

Vstupně-výstupní USB modul

Cílem návrh vstupně-výstupního USB modulu je poskytnout propojení mezi aplikační a fyzickou vrstvou projektu NetCarity. Pomocí bežně dostupných prostředků (čtení a zápis do souboru) musí být možné ovládat 3 výstupní a 2 vstupní kanály. Povaha USB speficikace dovoluje realizovat platformově nezávislé zařízení, které pro svůj běh využívá generické ovladače zařízení (nativně přítomné v operačním systému).

Vlastnosti:
  • 3 výstupní digitální kanály, 2 vstupní kanály (1 analogový a 1 digitální)
  • připojení k USB, multiplatformní návrh díky specifikaci Communication Device Class - Abstract Control Model (CDC ACM)
  • jednočipové řešení s obvodem Atmel ATmega8 a softwarovým řadičem USB
  • bez nároků na odbornost uživatele
  • malé rozměry, nízká cena

Rozhraní

USB modul je opatřen 10 pinovým konektorem. Rozsahy napětí jsou od 0 do 5V. Maximální povolený proud kanálem A je 500mA a kanály B,C 20mA. Vstupní rozsah kanálu D je shodný s TTL úrovněmi 5V. Analogový kanál měří napětí od 0 do 2,56V a je ze zdroje s vnitřním odporem 10k buzen obdélníkovým signálem 0-5V s frekvencí 1kHz.

Konektor 2x5 pinů (čelní pohled, zářez shora)

2

analog

4

D

in

6

C

out

8

B

out

10

A

out

1

GND

3

GND

5

GND

7

GND

9

+5V



Probíhající komunikaci po USB sběrnici indikuje zelená LED umístěná přímo na desce modulu.

Protokol

Výstup
Řízení výstupních kanálů se děje zasíláním znakových povelů. Příkaz je totožný s řádkem textového souboru (je zakončen znaky ASCII 13 10 nebo ASCII 10 nebo ASCII 13). Znaky v řádku se interpretují zleva doprava. Každý znak má vlastní význam a ovládá jeden kanál. Řádek smí být dlouhý maximálně 80 znaků, přesahující část bude ignorována. Pořadí a násobnost znaků může být libovolná.

Znaky
A - zapnout kanál A
a - vypnout kanál A
B - zapnout kanál B
b - vypnout kanál B
C - zapnout kanál C
c - vypnout kanál C

Vstup
Zařízení vysílá zprávy 6 znaků dlouhé, s maximální frekvencí cca 50 zpráv/s. Zpráva se skládá ze znaku D/d indikujícího úroveň kanálu D (D logická 0, d logická 1). Druhým znakem zprávy je mezera ASCII 32. Následují 3 hexadecimální znaky formující číslo od 0 do 4093, které kvantifikuje velikost stejnosměrného napětí na analogovém vstupu (od 0 do 2,56V). Posledním znakem zprávy je konec řádku ASCII 10.

Software

Příkazová řádka DOSu
V systému Windows bude zařízení přiřazen název COMn. Generický ovladač usbser.sys je zaveden na základě informačního souboru netcarity.inf.
Zápis:
C:\>echo AbC >> COM3
Čtení:
C:\>type COM3
Shell
Operační systém umístí soubor zařízení do /dev/ttyACMx. Pro prvotní konfiguraci zařízení je nutné spustit acmenable (zdroj acmenable.c).
Zápis:
user@pc:/# echo AbC >> /dev/ttyACM0
Čtení:
user@pc:/# cat /dev/ttyACM0
Při otevírání zařízení je nutné specifikovat atribut O_NOCTTY, aby se se zařízením nepracovalo jako s terminálem.

Deskriptory zařízení

Device Descriptor

OffsetPopisHodnota
0bLength0x12
1bDescriptorType0x01
2,3bcdUSB0x0110
4bDeviceClass0x02
5bDeviceSubClass0x00
6bDeviceProtocol0x00
7bMaxPacketSize0x08
8,9idVendor0x065d
10,11idProduct0x1021
12,13bcdDevice0x0004
14iManufacturer0x00
15iProduct0x01
16iSerialNumber0x00
17bNumConfigurations0x01


Configuration Descriptor (spojení Configuration, Interface a Endpoint descriptoru)

OffsetPopisHodnota
Configuration Descriptor
0bLength0x09
1bDescriptorType0x02
2,3wTotalLenght0x0043
4bNumInterfaces0x02
5bConfigurationValue0x01
6iConfiguration0x00
7bmAttributes0x80
8bMaxPower0x32
Interface 0 Descriptor
9bLength0x09
10bDescriptorType0x04
11bInterfaceNumber0x00
12bAlternateSetting0x00
13bNumEndpoints0x01
14bInterfaceClass0x02
15bInterfaceSubClass0x02
16bInterfaceProtocol0x01
17iInterface0x00
CDC - Header Functional Descriptor
18bLength0x05
19bDescriptorType0x24
20bDescriptorSubtype0x00 - Header Functional Descriptor
21,22bcdCDC0x0110
CDC - Call Management Functional Descriptor
23bLength0x05
24bDescriptorType0x24
25bDescriptorSubtype0x01 - Call Management Functional Descriptor
26bmCapabilities0x01
27bDataInterface0x01
CDC - Abstract Control Management Functional Descriptor
28bLength0x04
29bDescriptorType0x24
30bDescriptorSubtype0x02 - Abstract Control Management Functional Descriptor
31bmCapabilities0x08
CDC - Union Functional Descriptor
32bLength0x05
33bDescriptorType0x24
34bDescriptorSubtype0x06 - Union Functional Descriptor
35bMasterInterface0x00
36bSlaveInterface0x01
Endpoint 3 Descriptor
37bLength0x07
38bDescriptorType0x05
39bEndpointAddress0x83
40bmAttributes0x03
41,42wMaxPacketSize0x0008
43bInterval0xff
Interface 1 Descriptor
44bLength0x09
45bDescriptorType0x04
46bInterfaceNumber0x01
47bAlternateSetting0x00
48bNumEndpoints0x02
49bInterfaceClass0x0A
50bInterfaceSubClass0x00
51bInterfaceProtocol0x00
52iInterface0x00
Endpoint 1 Descriptor
53bLength0x07
54bDescriptorType0x05
55bEndpointAddress0x81
56bmAttributes0x02
57,58wMaxPacketSize0x0008
59bInterval0x00
Endpoint 2 Descriptor
60bLength0x07
61bDescriptorType0x05
62bEndpointAddress0x02
63bmAttributes0x02
64,65wMaxPacketSize0x0001
66bInterval0x00


Deskriptory budou odeslány v následujících paketech:

Device Descriptor:
4B 12 01 10 01 02 00 00 08 10 CF
C3 5D 06 21 10 04 00 00 01 1A D3
4B 00 01 3F 8F
Configuration Descriptor:
4B 09 02 43 00 02 01 00 80 03 75
C3 32 09 04 00 00 01 02 02 74 DC
4B 01 00 05 24 00 10 01 05 CE 3C
C3 24 01 01 01 04 24 02 08 D1 53
4B 05 24 06 00 01 07 05 83 E9 63
C3 03 08 00 FF 09 04 01 00 21 F8
4B 02 0A 00 00 00 07 05 81 E6 DC
C3 02 08 00 00 07 05 02 02 26 39
4B 01 00 00 DF FF

Schéma

Schéma USB modulu