STM32F4, problem z PLL (asm)

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:

formatting link
Co dziwniejsze, jeśli ustawię PLL_M=8 i PLL_N=336, na wyjściu powinienem mieć taką samą częstotliwość, a nie mam:
formatting link
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ę:

formatting link
Oczywiście Datasheet, Erratę, 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.

Reply to
Marcin Kulas
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.