Skocz do zawartości

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


Komentator

Pomocna odpowiedź

@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
Link do komentarza
Share on other sites

@Martyna dokładnie tak, 72MHz to maksymalna częstotliwość pracy tego układu, ale na tym konkretnie zestawie jest ona "ograniczona" do 64MHz. Przy okazji polecałbym przesiąść się na nowszą wersję tego kursu tj. tutaj » Kurs STM32 F1, migracja na HAL – #1 – wstęp, spis treści

Link do komentarza
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?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

 

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?

Link do komentarza
Share on other sites

@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
Link do komentarza
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...

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.