środa, 17 lutego 2016

[0] STM32F4 - Discovery - Ustawienie maksymalnej częstotliwości taktowania

W pierwszej części opisałem sposoby taktowania mikrokontrolera zamontowanego na płytce Discovery czyli STM32F407VG.

Keil uVision - zewnętrzne źródło taktujące


W celu odpalenia maksymalnej częstotliwości z zewnętrznego oscylatora należy dokonać następujących zmian w plikach programów.



Po stworzeniu projektu w programie należy otworzyć plik stm32f4xx.h. W nim trzeba odszukać deklarację częstotliwości taktowania zewnętrznego oscylatora. Fabrycznie w płytkach discovery stosowany jest 8MHz kwarc. W związku z tym taką wartość należy wprowadzić. Rysunek 1 obrazuje w jaki sposób te zmiany powinny być dokonane.

Przed zmianą:


Po zmianie:


Rys. 1. Wartość HSE przed i po zmianie w programie

Kolejnym plikiem jaki należy edytować jest system_stm32f4xx.c. W nim trzeba odpowiednio ustawić wartość pętli powielającej sygnał taktujący.


Rys. 2. Wartość PLL_M przed zmianą

Wpisaną wartość należy zmienić z 25 na 8. Dzięki temu przy zastosowaniu taktowania kwarcem otrzymuje się następującą wartość sygnału wyjściowego.

PLL_VCO = (HSE / PLL_M ) * PLL_N / PLL_P

PLL_VCO = (8000000 / 8 ) * 336 / 2 =  168000000 = 168 MHz

Keil uVision - wewnętrzny oscylator


Drugie źródło taktujące jakie można wykorzystać to HSI czyli wewnętrzny oscylator o częstotliwości 16MHz. Posiada ono mniejszą stabilność, ale w zupełności powinno wystarczyć, zwłaszcza do pracy w normalnych warunkach środowiskowych.

W przypadku wybrania tego zegara nie trzeba zmieniać pliku stm32f4xx.h, ponieważ jest tam już wszystko poprawnie ustawione. 


Rys. 3. Parametr HSI

Należy natomiast zmienić parametr PLL_M na wartość 16. Co pozwoli na otrzymanie częstotliwości wyliczonej w równaniu poniżej.

PLL_VCO = (16000000 / 16 ) * 336 / 2 =  168000000 = 168 MHz