Start z STM32 VL Discovery – 7 – I2C

Start z STM32 VL Discovery – 7 – I2C
Razem głosów: 5 co stanowi: 92% całości.

i2c_Bus

Myślę że nadszedł już czas na omówienie interfejsów komunikacyjnych bardziej złożonych niż UART,

ale jednocześnie bardzo przydatnych jakimi nie wątpliwie są SPI i I2C oraz inne zaimplementowane.

W tym miejscu zajmiemy się magistralą I2C zwana też często 2Wire czy też TWI.

Magistrala I2C jest jedną z podstawowych w mikrokontrolerach , używaną do komunikacji

z cyfrowymi termometrami, układami RTC i  pamięciami EEPROM oraz wieloma innymi.

W tej części zajmiemy się pamięcią EEPROM, która jest często stosowana przy mikrokontrolerach

wszystkich producentów.

Na pierwszy ogień pójdzie pamięć 24C02  z interfejsem szeregowym I2C o organizacji 256×8 bitów,

oczywiście może być też każda inna 24C04 , 24C08 , 24c016  ….

Przyglądnijmy się wyprowadzeniom naszego EEPROMa:

Free Image Hosting at www.ImageShack.us

Porty naszego układu mają następujące funkcje:

 

  • A0, A1, A2 – linie adresowe, które można wykorzystać do ustawienia adresu  pamięci (na przykład, gdy do I2C jest podłączone więcej układów I2C);
  • GND, VCC – (norma to 2,5 – 5V więc dostosowanie poziomów napięcia nie będzie stanowić problemu);
  • WP – zabezpieczenie zapisu, dzięki której można wyłączyć zapis do pamięci;
  • SCL – sygnał zegara magistrali I2C;
  • SDA – I2C dwukierunkowa szyna danych.


Pamięć I2C pobiera średnio ok. 5 mA. Adres układu ustalamy zgodnie z notą na  0-0-0. 

Datasheet.

PRZYKŁAD ZASTOSOWANIA:

Tak w skrócie transmisja na I2C wymaga 2 sygnałów SCL i SDA  (stąd nazwa 2Wire) oraz oczywiście GND :) Jak przebiega inicjacja transmisji oraz cała reszta z tym związana jest bardzo dobrze opisane w książkach Mirosława Kardasia , które znajdziecie w dziale Polecamy dlatego też nie będę tu opisywał  zagadnienia ,a cała reszta komend , adresów i kombinacji sygnałów SC i SDA jest w nocie danego układu EEPROM który chcemy użyć.

Dlatego skupię się na implementacji programowej obsługi szeregowych pamięci EEPROM bazując na układzie AT24C02 z adresem ustawionym na 000 o czym wspomniałem na początku w naszym STM32VLDiscovery. 

Oczywiście jest jeszcze wiele trybów pracy pamięci EEPROM, które każdy zainteresowany znajdzie nocie układu , a przerobienie i dostosowanie kodu nie będzie też stanowić problemu.

INICJACJA :

Piny związane z I2C w naszym MCU przedstawiają się następująco:

I2C1_SCL oraz I2C_SDA są na pinach  PB6 i PB7 

Więc piny SDA i SCL naszego EEPROMa podłączamy bezpośrednio do pinów PB6 i PB7 co odpowiada naszym ustawieniom w funkcji inicjującej:

Jak widać jest to tak samo proste jak w AVR  i nie wymaga większego opisu.

Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay