Skocz do zawartości
Komentator

Kurs STM32 - #6 - Pomiar napięcia, przetwornik ADC

Pomocna odpowiedź

(edytowany)

@TrekerWięc mimo, że maksymalne taktowanie podane w dokumentacji wynosi 72MHz (Cortex-M3 F1) ta płytka może maksymalnie osiągnąć 64 MHz, przez brak kwarcu i lutowania elementów?

Screen z części: https://forbot.pl/blog/kurs-stm32-2-podstawowe-informacje-o-stm32-id4651

Przechwytywanie.PNG

Zastanawiam się też na obliczaniem częstotliwości próbkowania. W dokumentacji(Reference Manual) znalazłam tylko informację o obliczaniu Tconv  - total conversion time.

Nie znalazłam niestety wzorów na obliczanie częstotliwości.

Przechwytywanie.PNG

Edytowano przez Martyna

Udostępnij ten post


Link to post
Share on other sites

Propozycja poprawki:

Zarówno w kodach: "Włączenie przetwornika ADC i kalibracja" jak i "STM32 - pomiar napięcia zewnętrznego" mamy linie:

gpio.GPIO_Pin = GPIO_Pin_3;
gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &gpio);

Jeśli dobrze rozumiem wcześniejsze części to są one niepotrzebne, bo ten pin i mod służą przyjmowaniu przez mikro kontroler sygnałów przez USB przychodzących z komputera. 

Podobnie jak włączanie zegarów dla wszystkich portów GPIO można by zastąpić włączeniem ich tylko dla jednego, którego używamy.

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

Czy rozwiązanie dla zadania 6.1 to 1.007 MHz?

Udostępnij ten post


Link to post
Share on other sites

 

Natrafiłem na pewien problem, którego nie potrafię rozwiązać. Przy próbie mierzenia napięcia referencyjnego pojawia się błąd w realizacji poniższej linijki kodu:

printf("Adc = %d (%3fV) \n", adc, adc * 3.3f / 4096.0f);

wraz z komentarzem:

The float formatting support (-u_print_float) is not enabled from linker flags

Efektem jest bliżej nieokreślony ciąg znaków na ekranie konsoli, jakieś rady?

Udostępnij ten post


Link to post
Share on other sites

@Micak witam na forum 🙂 Czy próbowałeś postąpić zgodnie z treścią tego błędu? Tj. zmienić flagę tego ustawienia w opcjach linkera?

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

@Treker Dzięki za przywitanie. Poprzedni problem rozwiązałem dodając formułę "-u_printf_float" w opcjach linkera. Niestety to nie rozwiązało problemu i przy kompilacji kodu nadal otrzymuję ciąg niezrozumiałych znaków w konsoli Tera Term. Cały kod kompiluje się bez zastrzeżeń (skopiowany z kursu), nie pojawiają się żadne błędy, przez co trudniej mi zlokalizować problem. Poprzednie wywołania funkcji printf działały dobrze, tylko przy pomiarze napięcia referencyjnego występuje problem

real_term.thumb.png.d3ba5365d16356b7b703c4603254bfe7.png tera_term.thumb.png.98db7fa6afb3b3992bb88cc578fb1102.png

Edytowano przez Micak

Udostępnij ten post


Link to post
Share on other sites

@Micak takie niezrozumiałe znaki to najczęściej problem błędnego ustawienia prędkości transmisji - czy na pewno masz takie same ustawienia w programie wgranym na STM-a oraz w terminalu?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Treker Gdzieś mi umknęło, żeby zmienić prędkość transmisji w terminalu, błąd naprawiony. Dzięki za pomoc!

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@Micak cieszę się, że działa - powodzenia w dalszych eksperymentach 🙂

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...