Skocz do zawartości

Kurs STM32 F1 HAL - #6 - pomiar napięcia, przetwornik ADC


Pomocna odpowiedź

Testowałem używając OpenSTM32 i win10, ale u mnie wszystko działa poprawnie. Czy na pewno używasz tego samego mikrokontrolera co w kursie?

  • 1 miesiąc później...

Aldenham - dziękuję za informację.

U mnie ten sposób działa ale wtedy gdy w Projct Explorer  podświetlony jest projekt.

Taki mały błąd  a był problem

W święta miałem więcej czasu - była przerwa urlopowa - i znalazłem ten błąd.

Dziękuję .

Tadeusz

 

 

Przepraszam kolego  Fullkozod  -  kolega Aldenham miał ten sam problem co ja

Tadeusz

  • Lubię! 2
  • 6 miesiące później...
  • 1 miesiąc później...
(edytowany)

Witam wszystkich.

Widzę że kilka osób miało ten sam problem jak ja z zadaniem 6.1 a sam autor milczy na ten temat.

Piszę bo wyliczyłem zgoła odmienny wynik niż tu mieli inni kursowicze mianowicie:

korzystając z tego wzoru: Tconv = Sampling time + 12.5 cycles (RM 11.6)

Pierwsza wersja kursu to 64MHz i dielnik 6

ADCCLK = 10.66 MHz = 0.093uS

ADC_SampleTime = 71.5 cycles

Tconv = 71.5 +  12.5 = 84 cycles 

fconv = 1/(84*0.093) = 0.128MHz = 128kHz.

Wersja HAL to 8MHz i dzielnik 2

ADCCLK  = 4MHz = 0.25uS

ADC_SampleTime = 13.5 cycles

Tconv = 13.5 + 12.5 = 26cycles

fconv = 1/(26*0.25) = 0.153MHz = 153kHz

@TrekerProszę o ocenę autora bo jak widać nasze wyniki są różne w każdym poście.

Edytowano przez jackg
Dnia 1.09.2020 o 12:55, jackg napisał:

Widzę że kilka osób miało ten sam problem jak ja z zadaniem 6.1 a sam autor milczy na ten temat.

@jackg witam na forum 🙂 Możesz powiedzieć do czego się odnosisz w powyższym cytacie? Nie widzę, aby w żadnym z komentarzy (w tym temacie) padło pytanie co do tych obliczeń. Podlinkuj proszę o jakie wypowiedzi Ci chodzi - łatwiej będzie porównać rozwiązania.

@jackg Rozwiązanie, które podałeś wygląda poprawnie, chociaż zawsze warto byłoby sprawdzić na prawdziwej płytce (to praca domowa 6.1B).

Jedyne co można się przyczepić to zaokrąglenia:

Dla pierwszej wersji kursu mamy jak napisałeś Fcpu = 64MHz, dzielnik 6 i poprawnie policzone Tconv = 84. Obliczając fconv mamy więc:

fconv = Fcpu / div / Tconv = 64MHz / 6 / 84 = 126.98 kHz

Różnica nie jest duża, ale warto zwrócić uwagę, że wynik to nie "okrągłe" 128kHz, ale trochę poniżej 127 kHz. Czasem potrzebujemy faktycznie okrągłych wartości i wtedy trzeba dopasować Fcpu do możliwości przetwornika. W przykładach z kursu ta wartość akurat nie miała znaczenia.

W nowej wersji mamy Fcpu = 8MHz, dzielnik 2 i Tconv = 26, czyli:

fconv = Fcpu / div / Tconv = 153.85 kHz

  • Lubię! 1
  • Pomogłeś! 1
  • 2 tygodnie później...

Moje środowisko nie rozpoznaje stałej ADC_SAMPLETIME_1CYCLES_5, ale chyba podziałało podstawienie wartości 000 zgodnie ze stroną 244 w reference manual - reszta (np. ADC_SAMPLETIME_239CYCLES_5) jest ok.

Jeśli mam być szczery to nie zauważyłem żadnej znaczącej różnicy w dokładności pomiarów.

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