Wyniki testów
Układ z rysunku 2 można uruchomić na „motylu”, który trzeba doposażyć w kwarc zegarkowy i dwa kondensatory – odpowiednie miejsce zostało przewidziane na płytce. Potrzebne dwie diody świecące są podłączone tak samo jak na rysunku 2. Do wyprowadzenia PA0 trzeba podłączyć rezystor ściągający do masy i przycisk do zasilania. Wyprowadzenie PA0 jest dostępne na PIN2 złącza JP1 modułu ethernetowego – w omawianym przykładzie moduł ten nie jest używany. Do styków 1 i 2 złącza JP6 zamiast zworki podłączamy amperomierz, który mierzy prąd pobierany przez mikrokontroler. Do wyprowadzenia FREQ (PE7) podłączamy częstościomierz.
Tab. 1. Prąd zasilania w zależności od częstotliwości taktowania w poszczególnych trybach oszczędzania energii
Częstotliwość nominalna HCLK | 12 MHz | 18 MHz | 24 MHz | 36 MHz | 48 MHz | 72 MHz |
Częstotliwość nominalna SYSCLK | 48 MHz | 72 MHz | 48 MHz | 72 MHz | 48 MHz | 72 MHz |
Dzielnik AHB | 4 | 4 | 2 | 2 | 1 | 1 |
Tryb aktywny | 10,8 ± 0,5 mA | 15,4 ± 0,8 mA | 17,3 ± 1,0 mA | 24,5 ± 1,3 mA | 28,3 ± 1,3 mA | 35,7 ± 1,4 mA |
Tryb uśpienia | 5,9 ± 0,2 mA | 7,6 ± 0,4 mA | 7,1 ± 0,4 mA | 9,4 ± 0,6 mA | 9,3 ± 0,6 mA | 12,7 ± 1,0 mA |
Tryb zatrzymania – regulator 1,8 V włączony | 35 ± 1,5 µA | |||||
Tryb zatrzymania – regulator 1,8 V w stanie niskiego poboru energii | 27 ± 1,4 µA | |||||
Tryb czuwania | 3,36 ± 0,04 µA |
W tabeli 1 zestawiono zmierzone wartości prądu zasilania dla sześciu wartości HCLK, po trzy dla minimalnej i maksymalnej częstotliwości SYSCLK, jakie można uzyskać z wyjścia PLL1. Pomiary zostały wykonane przy odłączonym interfejsie JTAG, którego działanie wpływa na ich wyniki, szczególnie istotnie zwiększając pobór prądu w trybie zatrzymania. W trybie aktywnym i uśpienia prąd zasilania powinien zależeć od częstotliwości taktowania. Widać jednak, że nie jest on dokładnie proporcjonalny do częstotliwości HCLK i zależy też od częstotliwości SYSCLK. Najprawdopodobniej istotna część prądu zasilania jest pobierana przez układy taktujące. Potwierdzają to pomiary dla trybu uśpienia, w którym przestają być taktowane rdzeń i pamięci. Ponieważ w testowanym układzie aktywna jest stosunkowo niewielka część peryferii, to za pobór prądu w tym trybie muszą odpowiadać głównie oscylator HSE i pętle PLL. W trybach głębokiego uśpienia (zatrzymania i czuwania) pobór prądu nie zależy od częstotliwości taktowania, gdyż wtedy HSE jest wyłączony. Wartości prądu zasilania w tych trybach są, zgodnie z oczekiwaniem, rzędu mikroamperów. Należy podkreślić, że dla uzyskania tak niskiego poboru prądu konieczne jest wywołanie funkcji AllPinsDisable. Jej pominięcie i pozostawienie „wiszących” wejść niweczy uzyskane oszczędności, zwłaszcza w trybie zatrzymania, gdyż mikrokontroler pobiera wtedy dodatkowo ponad 1,5 mA.
Tab. 2. Pomiary rzeczywistych czasów opóźnień
Częstotliwość nominalna HCLK | 18 MHz | 36 MHz | 72 MHz |
Częstotliwość f0 iteracji pętli bez funkcji opóźniających | 300 kHz | 563 kHz | 912 kHz |
Częstotliwość f1 iteracji pętli z opóźnieniami 1 µs + 1 µs | 47,9 kHz | 85,3 kHz | 136,4 kHz |
Częstotliwość f20 iteracji pętli z opóźnieniami 20 µs + 20 µs | 22,6 kHz | 24,3 kHz | 24,4 kHz |
Częstotliwość f1m iteracji pętli z opóźnieniami 1 ms + 1 ms | 0,498 kHz | 0,499 kHz | 0,500 kHz |
Najkrótsze możliwe opóźnienie: 0,5(1/f1 – 1/f0) | 8,8 ± 0,1 µs | 4,97 ± 0,04 µs | 3,12 ± 0,02 µs |
Opóźnienie 20 µs: 0,5(1/f20 – 1/f0) | 20,4 ± 0,4 µs | 19,7 ± 0,3 µs | 20,0 ± 0,3 µs |
Opóźnienie 1 ms: 0,5(1/f1m – 1/f0) | 1002 ± 7 µs | 1001 ± 7 µs | 999,5 ± 7 µs |
Dokładność pomiaru częstotliwości ± (0,1% + 3)
W tabeli 2 zestawiono wyniki pomiarów opóźnień. Minimalne opóźnienie, jakie daje się uzyskać, wołając funkcję USleep z parametrem 1, zależy od częstotliwości taktowania rdzenia, czego należało oczekiwać, gdyż wynika ono z ilości instrukcji, które musi wykonać ta funkcja i procedura obsługi przerwania licznika. Przy maksymalnej dopuszczalnej częstotliwości taktowania 72 MHz nie udało się uzyskać opóźnienia krótszego niż 3 µs. Należy uznać, że dokładność realizacji opóźnień jest zadowalająca.
Marcin Peczarski