-
1. Data: 2016-12-23 16:17:29
Temat: STM32F4, problem z PLL (asm)
Od: Marcin Kulas <h...@k...net>
Witam.
Odzywam się bardzo rzadko, bo czasu coraz mniej na hobby,
ale tym razem muszę, bo zaraz nie będę miał czego rwać z głowy.
Do tej pory grzebałem w 8-bitowych AVR-ach i je rozumiałem.
Postanowiłem liznąć ARM-a. Padło na Cortex M4, konkretnie
płytkę Discovery z STM32F429ZI. Interesuje mnie wyłącznie
assembler i od tej strony się do tego zabrałem, chcąc poznać
rdzeń i dostępne peryferia.
Problem:
Podczas inicjacji MCU chcę ustawić SYSCLK=168MHz.
Konfiguruję PLL następująco:
wejście = HSE, kwarc 8MHz
PLL_M = 4
PLL_N = 168
PLL_P = 2
PLL_Q = 7
Na razie rdzeń zasilam prosto z HSE, a na MCO1 i MCO2 wypluwam
sobie wyjście PLL/4 oraz (dla porównania) SYSCLK/4.
SYSCLK wynosi 8MHz, co nie budzi wątpliwości, natomiast PLL
nie potrafię zmusić, by zachowywała się zgodnie z dokumentacją.
Przy powyższych dzielnikach mam za nią ok. 46.4MHz:
http://hit.kropka.net/adhoc/ST32F4_halp/PLL_4_168_2_
7.png
Co dziwniejsze, jeśli ustawię PLL_M=8 i PLL_N=336, na wyjściu
powinienem mieć taką samą częstotliwość, a nie mam:
http://hit.kropka.net/adhoc/ST32F4_halp/PLL_8_336_2_
7.png
Takie same rezultaty mam na STM32F446ZE, więc błąd jest
po mojej stronie, nie układu. Od tygodnia go szukam i nie
mogę zrozumieć, co robię źle. Prośba o wskazanie, jeśli komuś
się będzie bardzo nudziło. Powoli zaczynam w siebie wątpić.
Źródła, na których się męczę:
http://hit.kropka.net/adhoc/ST32F4_halp/
Oczywiście Datasheet, Errata, Reference Manual i Programming Manual
zajmują u mnie cały drugi monitor. Zwykle takie podejście działało.
Tym razem poległem i nie wiem nawet na czym. Będe wdzięczny za pomoc.
--
[ ,,Bądź uczynny, pomagaj innym - a wtedy wszyscy wokół pomyślą, ]
[ że to co dla nich robisz, jest twoim zasranym obowiązkiem." ]
-
2. Data: 2016-12-23 17:37:01
Temat: Re: STM32F4, problem z PLL (asm)
Od: w systemie siła 'PO/EU <N...@g...pl>
też dopiero zaczynam, ale może jednak użyć stm cube i zobaczyć co
wygeneruje?
-
3. Data: 2016-12-23 17:58:58
Temat: Re: STM32F4, problem z PLL (asm)
Od: a...@m...uni.wroc.pl
Marcin Kulas <h...@k...net> wrote:
> Witam.
>
> Odzywam si? bardzo rzadko, bo czasu coraz mniej na hobby,
> ale tym razem musz?, bo zaraz nie b?d? mia? czego rwa? z g?owy.
>
> Do tej pory grzeba?em w 8-bitowych AVR-ach i je rozumia?em.
> Postanowi?em lizn?? ARM-a. Pad?o na Cortex M4, konkretnie
> p?ytk? Discovery z STM32F429ZI. Interesuje mnie wy??cznie
> assembler i od tej strony si? do tego zabra?em, chc?c pozna?
> rdze? i dost?pne peryferia.
>
> Problem:
>
> Podczas inicjacji MCU chc? ustawi? SYSCLK=168MHz.
> Konfiguruj? PLL nast?puj?co:
>
> wej?cie = HSE, kwarc 8MHz
> PLL_M = 4
> PLL_N = 168
> PLL_P = 2
> PLL_Q = 7
Z datasheeta o PLL_N:
: Caution: The software has to set these bits correctly to ensure that
: the VCO output frequency is between 192 and 432 MHz.
> Na razie rdze? zasilam prosto z HSE, a na MCO1 i MCO2 wypluwam
> sobie wyj?cie PLL/4 oraz (dla por?wnania) SYSCLK/4.
>
> SYSCLK wynosi 8MHz, co nie budzi w?tpliwo?ci, natomiast PLL
> nie potrafi? zmusi?, by zachowywa?a si? zgodnie z dokumentacj?.
> Przy powy?szych dzielnikach mam za ni? ok. 46.4MHz:
> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_4_168_2_
7.png
To by odpowiadalo VCO 185.6 -- pewnie mniej nie potrafi.
> Co dziwniejsze, je?li ustawi? PLL_M=8 i PLL_N=336, na wyj?ciu
> powinienem mie? tak? sam? cz?stotliwo??, a nie mam:
> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_8_336_2_
7.png
To jest normalne ustawienie jak chcesz 168 MHz.
--
Waldek Hebisch
-
4. Data: 2016-12-23 18:16:53
Temat: Re: STM32F4, problem z PLL (asm)
Od: Marcin Kulas <h...@k...net>
a...@m...uni.wroc.pl wrote:
> Z datasheeta o PLL_N:
>
>: Caution: The software has to set these bits correctly to ensure that
>: the VCO output frequency is between 192 and 432 MHz.
U mnie VCO output powinien mieć 336MHz.
>> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_4_168_2_
7.png
> To by odpowiadalo VCO 185.6 -- pewnie mniej nie potrafi.
Pytanie, dlaczego nie wskakuje na właściwe tory?
Nawet zalecają przy PLL_M:
Caution: The software has to set these bits correctly to ensure that the
VCO input frequency ranges from 1 to 2 MHz. It is recommended to select
a frequency of 2 MHz to limit PLL jitter.
>> Co dziwniejsze, je?li ustawi? PLL_M=8 i PLL_N=336, na wyj?ciu
>> powinienem mie? tak? sam? cz?stotliwo??, a nie mam:
>> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_8_336_2_
7.png
> To jest normalne ustawienie jak chcesz 168 MHz.
Ale u mnie nie daje oczekiwanego rezultatu. Co skopałem?
--
[ ,,Bądź uczynny, pomagaj innym - a wtedy wszyscy wokół pomyślą, ]
[ że to co dla nich robisz, jest twoim zasranym obowiązkiem." ]
-
5. Data: 2016-12-23 19:11:17
Temat: Re: STM32F4, problem z PLL (asm)
Od: a...@m...uni.wroc.pl
Marcin Kulas <h...@k...net> wrote:
> a...@m...uni.wroc.pl wrote:
> > Z datasheeta o PLL_N:
> >
> >: Caution: The software has to set these bits correctly to ensure that
> >: the VCO output frequency is between 192 and 432 MHz.
>
> U mnie VCO output powinien mie? 336MHz.
>
> >> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_4_168_2_
7.png
> > To by odpowiadalo VCO 185.6 -- pewnie mniej nie potrafi.
>
> Pytanie, dlaczego nie wskakuje na w?a?ciwe tory?
> Nawet zalecaj? przy PLL_M:
>
> Caution: The software has to set these bits correctly to ensure that the
> VCO input frequency ranges from 1 to 2 MHz. It is recommended to select
> a frequency of 2 MHz to limit PLL jitter.
Faktycznie, te ustawienia wygladaja OK.
> >> Co dziwniejsze, je?li ustawi? PLL_M=8 i PLL_N=336, na wyj?ciu
> >> powinienem mie? tak? sam? cz?stotliwo??, a nie mam:
> >> http://hit.kropka.net/adhoc/ST32F4_halp/PLL_8_336_2_
7.png
> > To jest normalne ustawienie jak chcesz 168 MHz.
>
> Ale u mnie nie daje oczekiwanego rezultatu. Co skopa?em?
Sprawdzales czy w rejestrze RCC_PLLCFGR jest to co do niego
wpisales? No i jak wpisujesz: ja uzywam procedure biblioteczna
ktora wpisuje dane do RCC_PLLCFGR w jednym kawalku.
PS: U mnie na F1 Discovery (STM32F407VGT6) w RCC_PLLCFGR jest
0x07405408.
--
Waldek Hebisch
-
6. Data: 2016-12-23 21:20:30
Temat: Re: STM32F4, problem z PLL (asm)
Od: Marcin Kulas <h...@k...net>
a...@m...uni.wroc.pl wrote:
> Sprawdzales czy w rejestrze RCC_PLLCFGR jest to co do niego
> wpisales?
Wydawało mi się, że tak, ale sprawdziłem ponownie i...
już widzę swój błąd.
Jak to zwykle bywa przy copy&paste, został mi tam ORR
reset value z tym co ustawiam, zamiast totalnie nadpisać
i, co gorsza, nie wyłapałem tego banału.
> No i jak wpisujesz: ja uzywam procedure biblioteczna
> ktora wpisuje dane do RCC_PLLCFGR w jednym kawalku.
A ja wynajduję koło przy pomocy krzesiwa i popełniam
własne błędy, tracąc potem swój i innych ludzi czas
na ich rozwiązywanie. :)
> PS: U mnie na F1 Discovery (STM32F407VGT6) w RCC_PLLCFGR jest
> 0x07405408.
U mnie (STM32F429ZIT6) 0x07402a04.
Będę się trzymał VCOin=2MHz póki co, skoro manual zaleca.
No nic, "Errare tumanum est."
Wielkie dzięki!
--
[ ,,Bądź uczynny, pomagaj innym - a wtedy wszyscy wokół pomyślą, ]
[ że to co dla nich robisz, jest twoim zasranym obowiązkiem." ]
-
7. Data: 2016-12-23 22:27:32
Temat: Re: STM32F4, problem z PLL (asm)
Od: w systemie siła 'PO/EU <N...@g...pl>
a mozna zapytać w czym to się pisze asemem stm32?
-
8. Data: 2016-12-24 13:41:25
Temat: Re: STM32F4, problem z PLL (asm)
Od: w systemie siła 'PO/EU <N...@g...pl>
o kur... mendziejewiczowy ekspert...
-
9. Data: 2016-12-27 09:27:53
Temat: Re: STM32F4, problem z PLL (asm)
Od: "J.F." <j...@p...onet.pl>
Użytkownik "Marcin Kulas" napisał w wiadomości grup
dyskusyjnych:s...@k...net...
a...@m...uni.wroc.pl wrote:
>> Sprawdzales czy w rejestrze RCC_PLLCFGR jest to co do niego
>> wpisales?
>Wydawało mi się, że tak, ale sprawdziłem ponownie i...
>już widzę swój błąd.
>Jak to zwykle bywa przy copy&paste, został mi tam ORR
>reset value z tym co ustawiam, zamiast totalnie nadpisać
>i, co gorsza, nie wyłapałem tego banału.
Takie glupie to nie jest, bo tam jest pare bitow ktore trzeba
zachowac, przynajmniej dokumentacja tak sugeruje, wiec prawie dobrze
zrobiles.
Trzeba tylko jedngo AND wczesniej.
J.
-
10. Data: 2016-12-27 11:27:38
Temat: Re: STM32F4, problem z PLL (asm)
Od: Marcin Kulas <h...@k...net>
J.F. wrote:
> Takie glupie to nie jest, bo tam jest pare bitow ktore trzeba
> zachowac, przynajmniej dokumentacja tak sugeruje, wiec prawie dobrze
> zrobiles. Trzeba tylko jedngo AND wczesniej.
No właśnie nie, bo reset value rzutuje jedynie na ustawienie
PLL_Q, PLL_N i PLL_M. Pozostałe bity są zerami. Być może w innych
MCU jest nieco inaczej.
--
[ ,,Bądź uczynny, pomagaj innym - a wtedy wszyscy wokół pomyślą, ]
[ że to co dla nich robisz, jest twoim zasranym obowiązkiem." ]