Precision32 – nowe mikrokontrolery firmy Silicon Labs z rdzeniem ARM Cortex-M3

Zasoby połączone są ze sobą przy pomocy dwóch magistral. Pierwsza magistrala o nazwie AHB (Advanced High-performance Bus) łączy rdzeń z zasobami pamięci, blokiem zegarów oraz modułem DMA. Druga magistrala, nazwana APB (Advanced Peripheral Bus), odpowiada za sterowanie i komunikację między peryferiami.

 

Rys. 2. Budowa wewnętrzna mikrokontrolerów Precision32 SiM3U1xx

Rys. 2. Budowa wewnętrzna mikrokontrolerów Precision32 SiM3U1xx

 

 

Jako że nie sposób jest w jednym artykule opisać szczegółowo wszystkich aspektów rodziny mikrokontrolerów Precision32, czytelnicy chcący dowiedzieć się więcej szczegółów powinni sięgnąć do dokumentacji technicznej opracowanej przez producenta – not katalogowych [1] i przewodników użytkownika [2].

Rdzeń ARM Cortex-M3

Sercem każdego mikrokontrolera z rodziny Precision32 jest 32-bitowy rdzeń ARM Cortex-M3, który może pracować z maksymalną częstotliwością 80 MHz. Jego budowę przedstawiono na rysunku 3. Poniżej wymieniono jego najważniejsze cechy.

  • Cortex-M3 wykorzystuje architekturę ARMv7M. Jest ona zgodna z architekturą harwardzką, co oznacza, że pamięć programu jest oddzielona od pamięci danych.
  • Jest to rdzeń typu RISC (Reduced Instruction Set Computer).
  • Rdzeń Cortex-M3 cechuje się 3-stopniowym przetwarzaniem potokowym instrukcji. Oznacza to, że proces przetwarzania każdej instrukcji składa się z trzech etapów (pobrania, zdekodowania i wykonania) i są one wykonywane jednocześnie (podczas gdy jedna instrukcja jest pobierana, inna może być dekodowana, a jeszcze inna wykonywana).
  • Cortex-M3 obsługuje listę instrukcji Thumb-2. Zawiera ona polecenia umożliwiające wykonywanie operacji zarówno na danych 16-, jak i 32-bitowych.
  • W rdzeniu zaimplementowano sprzętowy moduł wykonujący operacje dzielenia liczb.
  • Rdzeń wyposażony jest w 16 32-bitowych rejestrów podstawowych (R0…R15) oraz rejestry specjalne.
  • Wydajność rdzenia wynosi 1.25 DMIPS/MHz (2.17 CoreMark/MHz).
  • Elementami rdzenia są kontroler przerwań NVIC (Nested Vectored interrupt Controller), interfejsy debugowania, śledzenia i programowania (JTAG, ETM, SWD).

Jako że rdzeń Cortex-M3 nie jest przedmiotem tego artykułu, został opisany jedynie w sposób bardzo ogólnikowy. Czytelnicy zainteresowani bardziej szczegółowymi informacjami mogą skorzystać z bogatej literatury zarówno anglojęzycznej [3][4][5], jak i polskojęzycznej [6][7].

 

Rys. 3. Rdzeń Cortex-M3

Rys. 3. Rdzeń Cortex-M3

 

 

Blok pamięci

Zasoby pamięci mikrokontrolerów Precision32 obejmują pamięć Flash oraz pamięć RAM. W zależności od modelu, układ może być wyposażony w pamięć Flash od 32 do 256 kB (32 kB, 64 kB, 128 kB, 256 kB) oraz pamięć RAM od 8 do 32 kB (8 kB, 16 kB, 32 kB). W pamięci RAM wydzielony został odrębny obszar o pojemności 4 kB, o nazwie retention RAM. Pamięć ta, w przeciwieństwie do pozostałej części pamięci RAM, jest w stanie przechowywać dane w każdym stanie uśpienia mikrokontrolera, nawet w najgłębszym PM9 (Power Mode 9, opisany w dalszej części artykułu), gdy zawartość wspomnianej standardowej pamięci RAM nie jest podtrzymywana.

Rozszerzenie zasobów pamięci jest możliwe za pomocą interfejsu EMIF (External Memory Interface), przy użyciu którego można do mikrokontrolera dołączyć pamięć zewnętrzną.

Blok zasilania

Firma Silicon Labs zintegrowała w mikrokontrolerach Precision32 rozbudowany blok zasilania. Omawianie go zaczniemy od opisania dwóch regulatorów napięcia, z których każdy może być zasilany z wyprowadzeń zasilających (VDD, VSS) i może służyć do zasilania mikrokontrolera gwarantując jego w pełni funkcjonalną pracę. Pierwszy z nich to regulator typu LDO (Low Drop Out), o nazwie LDO0. Dopuszczalne napięcie wejściowe tego regulatora wynosi od 1.8 do 3.6 V. Napięcie wyjściowe zasilające rdzeń, pamięć i peryferia to 1.8 V. Drugi regulator napięcia oznaczono jako VREG0. Akceptuje on napięcie wejściowe z zakresu 2.7 – 5.5 V. Może on służyć jako źródło zasilania opisanego wyżej regulatora LDO0. Dzięki szerokiemu przedziałowi napięcia zasilania regulatora VREG0, istnieje możliwość zasilania mikrokontrolera bezpośrednio z gniazda USB (występuje w nim napięcie o wartości 5 V). Budowę obu regulatorów przedstawiono na rysunku 4.

 

Rys. 4. Regulatory napięcia mikrokontrolera Precision32: z lewej strony regulator LDO0, z prawej strony regulator VREG0

Rys. 4. Regulatory napięcia mikrokontrolera Precision32: z lewej strony regulator LDO0, z prawej strony regulator VREG0

 

 

O autorze