(7) Mikrokontrolery MSP430: obsługa ADC
W artykule przedstawiamy podstawy obsługi przetwornika A/C wbudowanego w mikrokontrolery MSP430FR5739. Prezentowany przykład został zrealizowany na bazie modułu startowego LaunchPad MSP-EXP430FR5739, który wyposażono w mikrokontroler z pamięcią FRAM.
Galeria zdjęć zestawu MSP-EXP430FR5739 jest dostępna pod adresem. |
W mikrokontrolerach MSP430FR5739 pomiarami analogowo/cyfrowymi zarządza moduł ADC10 w wersji B. Parametry pracy modułu są konfigurowane przy pomocy 10 rejestrów sterujących. Opis rejestrów sterujących pracą modułu ADC10_B pokazano w tabeli 1.
Tab 1. Rejestry konfiguracyjne
Rejestr |
Funkcja |
ADC10CTL0 |
parametry pracy modułu ADC10_B (tryby pracy, sposób taktowania pomiaru, metody wyzwalania pomiaru, forma prezentacji wyniku pomiaru, itd.) |
ADC10CTL1 |
|
ADC10CTL2 |
|
ADC10LO |
komparator analogowy (próg dolny , próg górny) |
ADC10HI |
|
ADC10MCTL0 |
parametry pracy modułu ADC10_B (kanały pomiarowe, potencjały referencyjne) |
ADC10MEM0 |
wynik pomiaru |
ADC10IE |
obsługa przerwań (źródła przerwań, flagi przerwań, rejestr wektora przerwań) |
ADC10IFG |
|
ADC10IV |
* szczegółowy opis rejestrów zamieszczono w materiałach dołączonych do artykułu
Konfigurując pracę modułu ADC10_B należy pamiętać, że niektóre bity sterujące z rejestrów konfiguracyjnych można modyfikować wyłącznie, gdy bit zezwolenia na konwersję ENC jest wyzerowany.
Przetwornik A/C, moduł ADC10_B
Przetwornik A/C zainstalowany w module ADC10_B może pracować z rozdzielczością 8, albo 10 bitów. Maksymalna prędkość pomiarów to 200 000 próbek na sekundę. Obsługiwanych jest 16 kanałów pomiarowych: 12 zewnętrznych oraz 4 wewnętrzne. Pomiary mogą być wyzwalane programowo, bądź w sposób sprzętowy (przy pomocy zegarów). Moduł przetwornika obsługuje 4 tryby pracy oraz posiada wbudowane mechanizmy oszczędzania energii. Źródło sygnału zegarowego taktującego konwersję konfigurowane jest programowo (częstotliwość sygnału regulowana jest za pomocą dwóch preskalerów). Napięcie referencyjne może być podane „z zewnątrz”, albo z wewnętrznego generatora napięcia REF. Moduł ADC10_B wyposażono w układ komparatora analogowego, który pozwala wykryć zmianę napięcia na wejściu analogowym. Przetwornik może być obsługiwany w trybie przerwań (obsługiwanych jest 6 typów przerwań).
Najważniejszym, a zarazem centralnym elementem modułu ADC10 jest 10-bitowy rdzeń SAR. Poza rdzeniem, główne bloki funkcjonalne przetwornika tworzą: moduł próbkowania S/H, multiplekser analogowy, bufor napięć referencyjnych, moduł komparatora analogowego. Budowę przetwornika pokazano na rysunku 1.
Rys. 1. Schemat blokowy modułu ADC10_B
Tryby pracy
Moduł ADC10_B może pracować w jednym z czterech trybów:
- pomiar napięcia na jednym kanale
- pomiar napięcia na kilku kanałach (grupa kanałów)
- cykliczny pomiar napięcia na jednym kanale
- cykliczny pomiar napięcia na kilku kanałach (grupa kanałów)
Tryb pracy przetwornika konfiguruje bit ADC10CONSEQx z rejestru ADC10CTL1. Konfigurację trybu pracy przetwornika pokazano w tabeli 2.
Tab. 2. Tryby pracy przetwornika
Rejestr |
Bit |
Opis |
ADC10CTL1 |
ADC10CONSEQ_0 |
pojedynczy pomiar napięcia na jednym kanale |
ADC10CONSEQ_1 |
pojedynczy pomiar napięcia dla grupy kanałów |
|
ADC10CONSEQ_2 |
cykliczny pomiar napięcia na jednym kanale |
|
ADC10CONSEQ_3 |
cykliczny pomiar napięcia dla grupy kanałów |
Kanały pomiarowe
W MSP430FR5739 dostępnych jest 16 kanałów pomiarowych. Kanały pomiarowe wybiera multiplekser analogowy konfigurowany za pomocą bitu ADC10INCHx z rejestru ADC10MCTL0. Konfigurację kanałów pomiarowych pokazano w tabeli 3.
Tab. 3. Kanały pomiarowe
Rejestr |
Bit |
Opis |
ADC10MCTL0 |
ADC10INCH_0 |
kanał pomiarowy A0 |
ADC10INCH_1 |
kanał pomiarowy A1 |
|
ADC10INCH_2 |
kanał pomiarowy A2 |
|
ADC10INCH_3 |
kanał pomiarowy A3 |
|
ADC10INCH_4 |
kanał pomiarowy A4 |
|
ADC10INCH_5 |
kanał pomiarowy A5 |
|
ADC10INCH_6 |
kanał pomiarowy A6 |
|
ADC10INCH_7 |
kanał pomiarowy A7 |
|
ADC10INCH_8 |
kanał pomiarowy A8 |
|
ADC10INCH_9 |
kanał pomiarowy A9 |
|
ADC10INCH_10 |
kanał pomiarowy A10 |
|
ADC10INCH_11 |
kanał pomiarowy A11 |
|
ADC10INCH_12 |
kanał pomiarowy A12 |
|
ADC10INCH_13 |
kanał pomiarowy A13 |
|
ADC10INCH_14 |
kanał pomiarowy A14 |
|
ADC10INCH_15 |
kanał pomiarowy A15 |