MLAB
AVRUSB01A
USB modul pro AVR
Milan Horkel
Potřeboval jsem rychle připojit I2C zařízení k Linuxovému počítači.
Protože se mi nelíbilo "bastl" provedení USB rozhraní s procesorem
ATmega, zkomponoval jsem tento modul. Může sloužit jako ISP
programátor pro AVR procesory, jako převodník USB na I2C a na
další pokusy se softwarovou realizací USB na procesorech řadu
ATmega. Obsahuje také stabilizátor 3,3V.
1. Technické parametry
Parametr
Hodnota
Poznámka
Rozhraní
USB
Low Speed
Napájení
+5V
Z USB rozhraní
Napájení vnitřní
+5V / +3.3V
Vlastní stabilizátor, max 800mA
Funkce (dle firmwaru)
USBasp
i2c-tiny-usb
Programátor AVR
Převodník USB - I2C
Rozměry
60 x 30 x 18 mm
Výška nad základnou
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
1/8
AVRUSB01A
MLAB
2. Popis konstrukce
2.1. Úvodem
Pro procesory AVR existuje knihovna (ne jedna, dokonce několik), která realizuje USB Low Speed
(1.5Mbit/s) protokol čistě softwarovými prostředky. Jedná se o řešení kompromisní, protože
obyčejné vývody procesorů AVR nesplňují elektrické parametry USB specifikace. Nicméně
existuje spousta konstrukcí, které toto řešení používají a díky přeci jen laxnějším požadavkům pro
Low Speed USB se jedná o řešení funkční.
Pozor, novější operační systémy v souladu s USB specifikací zakazují Bulk přenosy pro Low Speed
USB zařízení. Takže některé firmwary nemusejí fungovat.
Původní řešení ve stavebnici MLAB bylo poněkud neelegantní. Posuďte sami:
Modul tedy slouží pro běh standardních firmwarů, nebo pro tvorbu a testování vlastních. Dále
poskytuje stabilizátor napětí 3.3V. Standardní firmwary poskytují tyto například tyto služby:
•
Programování procesorů AVR (firmware USBasp, http://www.fischl.de/usbasp)
•
Převodník USB na I2C (firmware i2c-tiny-usb, http://www.harbaum.org/till/i2c_tiny_usb)
•
a další...
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
2/8
MLAB
AVRUSB01A
2.2. Zapojení modulu
Zapojení vychází z předdefinovaného přiřazení vývodů USB knihovny usbdrv, různé firmwary
mohou mít přiřazení (USB) vývodů odlišné a je třeba je před překladem přenastavit (a případně
opravit, pokud autor nemá konfiguraci správně připravenou).
První částí zapojení je napájecí zdroj. Umožňuje pomocí propojky J2 použít jak napětí +5V přímo
z USB, tak i napětí +3.3V z vestavěného stabilizátoru. Na vstupu je ochranná pojistka, protože ji
některá zařízení (v rozporu s USB specifikací) nemají a při případné zkratu by mohlo někde něco
uhořet. Pozor, osazujeme jen jednu pojistku (na plošném spoji leží přes sebe).
J2
JUMP2
USB_VCC
VCC select
on 5V
off 3.3V
VCC
1
2
F1A
SR075-06
R0805
2
1
USB CONNECTOR
OWERCURENT
C
2
ADJ
LT1117-3.3
SOT223
max 800mA
C3
10uF
C0805
D2
1N4007SMD
A
C2
10uF
C0805
3
4
1
D1
1N4007SMD
OUT
OUT
1
2
Fuse 750mA
IN
1
C1
100nF
A
USBDM
USBDP
2
VCC
USBDM
USBDP
GND
M1
M2
1
5
6
1
2
3
4
U1
2
C
F1B
1812L075PR
F1812
1
2
J1
USB_B_01
POWER SUPPLY +3.3V
Další částí je procesor ATmega88, který je připojen na USB konektor.
R1
2k2
VCC
+5 / +3.3V
1
1
C
D7
BZV55C3.6
MINIMELF
ISP_RES
ISP_MOSI
ISP_MISO
2
2
X1
12MHz
A
B
C5
22pF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
PD3/INT1
PD4/XCK/T0
GND
VCC
GND
VCC
PB6/XTAL1/TOSC1
PB7/XTAL2/TOSC2
PD5/T1
PD6/AIN0
PD7/AIN1
PB0/ICP1
PB1/OC1A
PB2/OC1B/SS#
PB3/OC2/MOSI
PB4/MISO
INT0/PD2
TXD/PD1
RXD/PD0
RESET#/PC6
ADC5/SCL/PC5
ADC4/SDA/PC4
ADC3/PC3
ADC2/PC2
ADC1/PC1
ADC0/PC0
ADC7
GND
AREF
ADC6
AVCC
SCK/PB5
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
TXD
RXD
RESET
I2C_SCL
I2C_SDA
ISP_RES
SELF PROGRAMMING
LED_GREEN
LED_RED
VCC
ISP_SCK
C6
100nF
ATmega88-20AU
TQFP32
1
C4
22pF
1
1
A
A
D6
BZV55C3.6
MINIMELF
C
2
J5
JUMP2
1
2
USBDM
R4
4k7
U2
1
R3
68
2
2
1
R2
68
USBDP
2
2
ATmega AVR CPU
Pro jeho vlastní programování se používá konektor J9 a je nutné zapojit propojku J6, která umožní
programování.
Po nahrání firmwaru "programátor AVR" je konektor J9 použit pro připojení cílového zařízení,
které lze napájet napětím 3.3V z modulu přes spojku J10 a případně spojkou J2 nastavit napětí +5V.
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
3/8
MLAB
AVRUSB01A
R14
68
ISP_MISO 2
VCC
J9
JUMP2x3
1
1
3
5
R15
68
ISP_SCK 2
2 ISP_VTG
4
6
MISO VTG
SCK MOSI
RST# GND
1
R16
68
ISP_RES 2
J10
JUMP2
1
2
1
3
5
VTG
ON
J4
JUMP2X3
VCC
1
1
3
5
ISP6PIN
R17
68
ISP_MOSI 2
J3
JUMP2X3
USB_VCC
1
USB
POWER
+5V
LOCAL
POWER
+3.3V/5V
Po nahrání firmwaru "převodník I2C" je možné na konektor J8 připojit I2C sběrnici, případně
povolit její napájení +3.3V přes J7 (J2 zapíná +5V z USB). K dispozici jsou dále LED diody D4 a
D5 a případně vyvedené rozhraní RS232 (TTL úrovně).
VCC
J7
JUMP2
R12
4k7
R10
68
1
2
2
R13
4k7
2
I2C_SCL
R11
68
I2C_SDA
2
LEDS
2
LED_RED
2
LED_GREEN
2
R5
470
D3
HCL-1505-4(RED)
1 C
A
R6
470
D4
HCL-1505-4(RED)
1 C
A
R7
330
D5
HCL-1503-4(GREEN)
1 C
A
1
1
1
2
VCC
I2C
PWR ON
J8
JUMP2X5
1
3
5
7
9
I2C
BUS
1
I2C BUS
TXD
2
1
J6
JUMP3
R8
68
RXD
2
1
1
2
3
R9
68
RS232
TTL
2.3. Seznam součástek
Počet
Reference
Název
Pouzdro
10
R2, R3, R8, R9, R10, R11, R14, R15,
R16, R17
68
R0805
1
R7
330
R0805
2
R5, R6
470
R0805
1
R1
2k2
R0805
3
R4, R12, R13
4k7
R0805
Odpory
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
4/8
MLAB
AVRUSB01A
Keramické kondenzátory
2
C4, C5
22pF
C0805
2
C1, C6
100nF
C0805
2
C2, C3
10uF
C0805
D1, D2
1N4007SMD
MELF
BZV55C3.6
MINIMELF
Diody
2
Zenerovy diody
2
D6, D7
Svítivé diody
2
D3, D4
HCL-1505-4(RED)
LED1206REV
1
D5
HCL-1503-4(GREEN)
LED1206REV
1
F1A
SR075-06
R0805
0
F1B
1812L075PR
F1812
Pojistky
Integrované obvody
1
U1
LT1117-3.3
SOT223
1
U2
ATmega88-20AU
TQFP32
X1
12MHz
XTAL050
Krystaly
1
Mechanické součástky
1
J1
USB_B_01
USB_B_01
4
J2, J5, J7, J10
JUMP2
JUMP2
1
J6
JUMP3
JUMP3
2
J4, J3
JUMP2X3
JUMP2X3
1
J8
JUMP2X5
JUMP2X5
1
J9
JUMP2x3
JUMP2x3/B
Konstrukční součástky
4
Šroub M3x12
4
Podložka M3
4
Sloupek M3x5
2
JUMPER
1
Plošný spoj
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
5/8
AVRUSB01A
MLAB
2.4. Zapojení použitých IO
Použitý obvod ATmega88-20 v pouzdru TQFP je možné nahradit procesorem ATmega8, ale je
třeba použít správnou variantu firmwaru přeloženou pro použitý procesor. Rychlost procesoru a
krystal volíme dle požadavků firmwaru. USB knihovna podporuje jen vybrané kmitočty.
Knihovna USB umožňuje připojení USB datových signálů k libovolnému portu procesoru, ale
současně potřebuje, aby alespoň jeden signál vyvolával přerušení s dostatečně velkou prioritou. Zde
je přerušovacím signálem INT0 na signálu D+ (vývod PD2).
2.5. Mechanická konstrukce
Jedná se o standardní modul pro stavebnici MLAB určený k přišroubování k základní desce.
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
6/8
AVRUSB01A
MLAB
3. Osazení a oživení
3.1. Osazení
Na straně spojů nezapomeneme osadit drátové propojky (platí pro jednostranný plošný spoj).
Na straně spojů jsou osazeny standardní SMD součástky, jen LED diody se osazují opačně, svítící
stranou směrem do desky (je tam otvor velký tak akorát, aby se tam vešlo pouzdro standardní diody
v pouzdru 1206).
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
7/8
MLAB
AVRUSB01A
3.2. Oživení
Oživení spočívá v optické kontrole na zkraty a v elektrické kontrole funkčnosti stabilizátoru +3.3V.
Pak stačí externím programátorem nahrát příslušný firmware a ozkoušet jeho funkčnost.
4. Programové vybavení
Jednotlivé firmwary (nakonfigurované pro tento hardware) jsou součástí tohoto projektu spolu s
jejich přeloženými binárními soubory v adresáři SW.
Firmwary musejí být nakonfigurovány s těmito parametry:
Parametr
Hodnota
Poznámka
USB D+
PD2/INT0
Je současně signálem externího přerušení INT0, obvyklé provedení
programátoru USBasp používá port PB1.
USB D-
PD4
Obvyklé provedení programátoru USBasp používá port PB1.
Přerušení
PD2/INT0
Obvyklé provedení programátoru USBasp používá port PD2
spojený s portem PB1.
Krystal
12.0MHz
Obvyklá hodnota frekvence, nutno volit podle toho, jaké frekvence
jsou podporované v USB knihovně (například 12.0MHz, 12.8MHz,
15.0MHz, 16.0MHz, 16.5MHz, 18.0MHz 20.0MHz).
Procesor
ATmega88
Alternativně ATmega8 (nutný překlad firmwaru pro správně
nastavený procesor).
AVRUSB01A.cs.doc / 2014-03-02 / miho / http://www.mlab.cz/PermaLink/AVUSB01
8/8
Download

PDF verze