Autor: Deucalion
Redakcja: Dondu
Ten artykuł jest częścią cyklu: Kurs ARM: Spis treści
Poprzednia część kursu była poświęcona inicjalizacji. Nie zostały w niej opisane wszystkie bloki funkcyjne, skupiliśmy się tylko na podstawach, czyli inicjalizacji CGU , która musi być prawie zawsze wykonana. Bez takiego wstępu trudno byłoby dalej prowadzić naukę. W kolejnych częściach wrócimy jeszcze do inicjalizacji innych bloków w LPC11xx.
W kolejnych czterech artykułach będzie coś dla niecierpliwych, czyli obsługa portów mikrokontrolera, w skrócie GPIO.
Od czego należy zacząć ?
Od zapoznania się z parametrami elektrycznymi wszystkich pinów.
Należy prześledzić możliwości każdego pinu z osobna! Jeśli zbagatelizujemy tę czynność możemy narobić sobie kłopotów i dowiemy się o tym dopiero wtedy, gdy gotowa płytka PCB będzie leżała przed nami w oczekiwaniu na napisanie programu dla mikrokontrolera.
Zgodnie z tą regułą przyjrzyjmy się możliwościom GPIO mikrokontrolera LPC1114.
W zależności od obudowy mamy do dyspozycji różne ilości pinów I/O. Przykładowo procesor w obudowie LQFP48 posiada 42 piny I/O. Piny pogrupowane są w cztery porty P0, P1, P2 oraz P3. Grupowanie daje możliwość jednoczesnego sterowania wszystkimi pinami z grupy.
Wśród tych 42 pinów I/O są 3 rodzynki, które różnią się od pozostałych, ale o nich napiszę trochę później. Na razie przeanalizujmy ważniejsze właściwości większości. Zakres napięcia wejściowego (Vi) wynosi od 0 do 5V, z kilkoma uwagami.
Pierwsza to taka, że jeśli jest podane napięcie na pin to nie może być sytuacji, że mikrokontroler nie będzie zasilany.
Napięcie wyższe od napięcia zasilania może być tylko podane na piny skonfigurowane jako wejście lub piny skonfigurowane jako wyjścia, ale będące w stanie wysokiej impedancji.
Stan wysokiej impedancji na wyjściach ustawiony jest w momencie, gdy mikrokontroler ma włączony tryb obniżonego poboru mocy Deep Power-down mode.
Obciążalność większości pinów I/O ustawionych jako wyjścia waha się w zależności od napięcia zasilania. Im mniejsze napięcie tym mniejsza obciążalność. Minimalny prąd (dla VDD = 3,3V) jaki gwarantuje producent to 4mA.
W rzeczywistości prąd ten jest większy i może dochodzić do kilkunastu mA. Niestety, im wyższy prąd płynący przez pin I/O, tym większy spadek napięcia. Z wykresów widać, że dla 12mA spadek napięcia może wynieść nawet 0,6V- 0,8V, to dużo, ale wystarczy, żeby zasilić diodę LED, a w innych przypadkach i tak wykorzystuje się różnego rodzaju bufory i drivery. Krótkotrwałe zwarcie pinu do masy lub zasilania nie spowoduje uszkodzenia mikrokontrolera.
Poważnym ograniczeniem jest wydolność prądowa pinów zasilających mikrokontroler:
Przez jeden pin zasilania lub masy może maksymalnie przepływać prąd o natężeniu 100mA. W LPC1114/LQFP48 są po dwa piny masy i zasilania, czyli suma prądów przepływających przez piny może wynosić prawie 200mA. Prawie 200mA, ponieważ należy pamiętać o potrzebach własnych mikrokontrolera.
Przydatne charakterystyki z dokumentacji:
Wykresy charakterystyk prądowych standardowych pinów I/O:
Specyfikacja pinów P0.4, P0.5 i P0.7 różni się o specyfikacji pozostałych pinów I/O. Do pinów P0.4 i P0.5 dołączone są sygnały magistrali I2C i z tego powodu piny te jako wyjścia mogą pracować tylko w konfiguracji pełnego otwartego drenu. Prawdopodobnie ma to związek z zachowaniem kompatybilności do standardu I2C, czyli poziomem napięcia mogącym przekraczać 5V.
O ile odstępstwa pinów P0.4 i P0.5 zmniejszają ich możliwości, to pin P0.7 ma cechę na plus, a mianowicie w stanie wysokim jest pinem silnoprądowym, prąd wyjściowy może dochodzić do 20mA.
Tworząc projekt urządzenia trzeba pamiętać o tych odstępstwach zwłaszcza pinów P0.4 i P0.5
Pewną niedogodność na którą również należy zwrócić uwagę maja układy w wersji LPC111x/xx1. W tych układach tranzystory realizujące funkcję pull-up podłączone są do niższego napięcia niż napięcie zasilające procesor, i tak przy zasilaniu procesora z 3,3V napięcie dla pull-up wynosi 2,6V.
W niektórych przypadkach może to mieć wpływ na prawidłową interpretację wysokiego stanu.
Niedogodności tej pozbawione są już układy w wersji LPC111x/xx2.
Brak komentarzy:
Prześlij komentarz