Start z STM32 VL Discovery – 10 — ADC

Start z STM32 VL Discovery – 10 — ADC
Razem głosów: 4 co stanowi: 95% całości.

 

Skoro już tyle wiemy, ba nawet umiemy używać LCD oparty o sterownik HD44780 to myślę że czas spróbować użyć przetwornika A/D do pomiaru napięcia i prezentacji wyniku na LCD.

Zrobimy więc sobie prosty woltomierz na którym zmianę napięcia będziemy symulować potencjometrem, a wynik wysyłać na LCD w Voltach :)  Prawda, że prosty przykład użycia, dokładnie jak na AVR?

Niemniej w tym miejscu muszę jak zwykle przytoczyć kilka ważnych informacji dotyczących przetwornika ADC, który jest zaimplementowany w rdzeniu naszego mikrokontrolera.

Właściwości ADC w STM32:

  • 12-bitowa precyzja
  • 16 kanałów wejściowych
  • generowanie przerwania na koniec konwersji
  • analog watchdog
  • ciągły i pojedynczy tryby pracy
  • tryb automatycznego pomiaru z wybranej liczby kanałów
  • auto-kalibracja przetwornika
  • wyrównanie danych dzielonych wybranym preskalerem
  • programowany czas próbkowania dla każdego kanału
  • możliwe zewnętrzne uruchomienie pomiaru
  • czas konwersji: 1,17 ms dla 24 MHz CLK
  • napięcie pracy ADC: 2.4V do 3.6V
  • generowania żądania DMA podczas konwersji napięcia
To tylko takie ogólne dane , ale warto wiedzieć ze co nieco potrafi :)
Ciekawy jest na pewno analog watchdog – który reaguje na spadki konwertowanego napięcia w zakresie ustawianej wartości.

Free Image Hosting at www.ImageShack.us

 

Jak widać jako wejście wartości napięcia możemy użyć nie tylko kanałów wejściowych , ale też
wbudowanego czujnika temperatury — co przedstawiłem jako ciekawostkę w jednym z artykułów,
a nawet wewnętrzne źródło napięcia odniesienia.
Plac Budowy:
W poprzednim artykule mamy podłączony LCD do pinów PC0 – PC3, PC6, PC7, PC8, oraz PC9
gdzie jest LED3, dzięki czemu możemy wybrać PC4. Jak widać, ten pin jest przypisany do alternatywnej
funkcji ADC1_IN14 (14 kanał wejściowy przetwornika A / D), więc musimy użyć przydatnej funkcji jaką
jest mapowanie pinów.  Teraz podłączymy sobie potencjometr o wartości 10 – 100K , jedno wyprowadzenie podłączamy do GND , drugie do +3,3V  i rotor (środkowy pin) do pinu PC4.
Program….
W programie użyjemy znanej już biblioteki SunLCD.c  której pliki musicie sobie zaimportować do projektu.
Kompilator może drukować ostrzeżenia … jakoś mnie nie lubi i mojej SunLCD głównie jeśli chodzi
o rodzaje funkcji dotyczących przesyłanych ciągów :( Może ktoś z was znajdzie haczyk ??
W każdym razie funkcje inicjacji przetwornika A/D oraz konwertujące wynik na Char
znajdują się w pliku main.c który widzicie niżej:

Wiecie już wystarczająco dużo by zrozumieć kod który opieram o te same początkowe zasady.

Niemniej do wathdoga jeszcze wrócimy ….
Miłej zabawy z ADC.
Podziel się na:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Blogplay