Skocz do zawartości

Problem z pomiarem ADC na F103RB


kuba_z_lubina

Pomocna odpowiedź

Cześć!,

mam problem z modułem ADC- po przejściu wszystkich kroków zgodnie z instrukcją (konfiguracja środowiska, wklejenie kodu z akapitu "kod programu korzystającego z ADC") moduł ADC mojej płytki zwraca pomiary o wartościach około 2050, zamiast spodziewanych 1490. Właściwie za każdym razem po załadowaniu programu od nowa pierwszy pomiar jest zgodny z oczekiwaniami a reszta już nie. Tak samo po wciśnięciu przycisku RESET jeden, czasami dwa pomiary wynoszą 1490, a potem ADC z powrotem zwraca 2050. Zauważyłem że manipulowanie częstotliwością taktowania i preskalerem ma wpływ na zwracany wynik, mianowicie im niższą częstotliwość ustawię, tym wartość zwracana jest niższa. 

Korzystam z modelu F103RB (modelu z archiwalnego kursu STM32). 

Byłbym bardzo wdzięczny za pomoc.

Link do komentarza
Share on other sites

@kuba_z_lubina pytanie wydzieliłem z kursu STM32L4, bo Twój problem wynika z tego, że używasz płytki z innym mikrokatorem, który może wymagać innych ustawień - to taka ogólna uwaga, bo zdecydowanie odradzam wykonywania ćwiczeń z kursów na płytkach, które nie były przeznaczone do tego kursu. Takich problemów możesz napotkać dużo więcej, nie bez przyczyny zdecydowaliśmy się, aby w końcu zmienić rodzinę F1 na L4 🙂 

Źródło pytania: https://forbot.pl/forum/topic/20129-kurs-stm32l4---9---przetworniki-analogowo-cyfrowe-adc

Powiedz więc dokładnie co i gdzie masz podłączone i dodaj archiwum zip z całym Twoim projektem - jest szansa, że wtedy ktoś będzie mógł zweryfikować ten temat 🙂

Link do komentarza
Share on other sites

Podczas konfiguracji urządzenia wykonywałem po kolei czynności: 

1. Uruchomiłem debugger

2. Uruchomiłem USART2 w trybie asynchronicznym

3. Skonfigurowałem pin PA5 jako wyjście o nazwie LD2

4. Dodałem przekierowanie komunikatów przez printf

5. Włączyłem opcję "vrefint channel" dla modułu ADC1

u mnie nie pojawił się błąd w zakładce "clock configuration" taki jak w kursie, pewnie dlatego że nie zmieniałem częstotliwości taktowania. 

6. wkleiłem kod z kursu który kalibrował ADC (tutaj usunąłem drugi parametr, bo mój mikrokontroler nie posiada różnych trybów), oraz kod który dokonuje pomiaru napięcia i wypisania go. 

po wykonaniu tych kroków tera term pokazał takie wartości: (dwie pierwsze ~1500, potem ~1970):

image.thumb.png.6a085da768022b02aa1fb3be43e89e54.png

Mam wrażenie, że skopałem coś z tym ustawieniem częstotliwości (nie mogę ustawić 80MHz jak na kursie- max 72MHz).

Załączam poniżej archiwum zip z projektem i dziękuję za odpowiedź!

kurs9.zip

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.