Jako další uvádím sběrnici I2C , někdy nazývanou také jako TWI (two-wire), která je běžně používaná pro připojení až 128mi zařízení po dvou vodičích (obr. 1). Sběrnice je obousměrná, ale v jeden okamžik může vysílat pouze jedno zařízení (poloviční duplex). Oba vodiče musí být připojeny přes rezistor na napájecí napětí (tzv. pull-up rezistory), tím se předejde poškození vysílacích a přijímacích obvodů při kolizi a poškodí se pouze úrovně signálů.
Přenos dat
Na linku je připojen jeden master (řídicí) a několik slave (podřízených) obvodů. Pro poslání datového rámce některému slave zařízení, master vyšle v prvních 7mi bitech adresu slave zařízení, v osmém bitu log. 1 a čeká na příjem potvrzovacího bitu ACK. Poté master vyšle data po lince SDA. V případě, že je potřeba získat data ze slave zařízení, pak master opět pošle adresu, ale v osmém bitu pošle log. 0, aby slave poznal, že má volno a může poslat data. Synchronizace přenosu dat probíhá impulsy na lince SCL o frekvenci 10 kHz až 400 kHz. Průběh dat na linkách SDA a SCL je zřejmý z obrázku 2.
Některé vlastnosti I2C u mikrokontroléru ATmega32
- Jednoduché, výkonné a přizpůsobitelné rozhraní.
- Podpora práce v režimu master nebo slave.
- Mikrokontrolér může pracovat jako vysílač i přijímač.
- 7bitový adresovací prostor dovolující rozlišit až 128 adres podřízených obvodů.
- Přenosová rychlost až 400 kHz.
- TWI obvodem.Možnost probuzení mikrokontroléru z režimu spánku v případě adresace vnějším
Nastavení a popis registrů I2C u mikrokontroléru ATmega32
- TWBR: Registr pro nastavení přenosové rychlosti podle vzorce (1.1).
- TWCR: Nastavuje a inicializuje přenos (tabulka 1).
- TWSR: Uchovává informace o stavu přenosu a nastavuje předděličku rychlosti (tabulka 2).
- TWDR: Datový registr.
- TWAR: Adresa slave zařízení.
Vzorec pro výpočet hodnoty registru TWBR
fCLK = fOSC/(16+2*TWBR *4TWPS) (vzorec 1.1)
kde fCLK je frekvence synchronizačních impulsů na lince CLK, fOSC je frekvence krystalu a TWPS je hodnota nastavení předděličky.
Tabulka 1: Popis jednotlivých bitů registru TWCR
BIT | TWCR | |
7 | TWINT | příznak přerušení |
6 | TWEA | povoluje potvrzování ACK |
5 | TWSTA | generuje START stav |
4 | TWSTO | generuje STOP stav |
3 | TWWC | detekuje kolizi zápisu |
2 | TWEN | povuleje I2C |
1 | nepoužito | |
0 | TWIE | povoluje přerušení sběrnice |
Tabulka 2: Nastavení předděličky u I2C
TWPS1 | TWPS0 | hodnota předděličky |
0 | 0 | 1 |
0 | 1 | 4 |
1 | 0 | 16 |
1 | 1 | 64 |
Připravuje se:
- Knihovna I2C ke stažení pro ATMEL AVR
- Knihovna I2C ke stažení pro STM32F4 Discovery
{jcomments on}