Skocz do zawartości

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
  • 1 miesiąc później...

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?

  • 1 rok później...

 

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?

(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

@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

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...