W pierwszej części opisałem sposoby taktowania mikrokontrolera zamontowanego na płytce Discovery czyli STM32F407VG.
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:
Kolejnym plikiem jaki należy edytować jest system_stm32f4xx.c. W nim trzeba odpowiednio ustawić wartość pętli powielającej sygnał taktujący.
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 - 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