Systemy dla Internetu Rzeczy (34). nRF5340 – pierwszy procesor komunikacyjny SOC z dwoma rdzeniami Arm Cortex-M33

Systemy dla Internetu Rzeczy (34). nRF5340 – pierwszy procesor komunikacyjny SOC z dwoma rdzeniami Arm Cortex-M33

Własnie został wprowadzony na rynek nowy dwurdzeniowy układ scalony nRF5340 System on Chip (SoC) firmy Nordic Semiconductor. Obsługuje on komunikację standardu Bluetooth Low Energy 5.1, Direction Finding, Bluetooth Mesh, Thread, Zigbee, IEEE 802.15.4, ANT oraz Near Field Communication (NFC). Unikalną cechą układu jest zastosowanie jako rdzeń aplikacyjny i komunikacyjny dwóch takich samych rdzeni ARM Cortex-M33. Połączenie najwyższego poziomu bezpieczeństwa, elastyczności dwurdzeniowej, zaawansowanego zestawu funkcji i temperatury roboczej do 105°C, czyni go idealnym wyborem dla wielu złożonych aplikacji IoT.

Podziękowania dla pana Macieja Michna z Centrum badań i rozwoju Nordic Semiconductor w Krakowie za udostępnienie modułów sprzętowych nRF5340 PDK.

Układ scalony nRF5340 SoC został zaprojektowany od podstaw z myślą o bezpieczeństwie, niezależnie od zastosowanego protokołu transmisji. Obsługuje wszystkie najnowsze funkcje Bluetooth LE 5.1, w tym funkcje dalekiego zasięgu i wszystkie funkcje wyszukiwania kierunku AoA oraz AoD. Umożliwia jednoczesną (concurrent) pracę w jednej sieci z protokołem Bluetooth LE oraz w drugiej sieci typu Mesh z protokołem Bluetooth Mesh, Thread lub Zigbee.

Funkcje bezpieczeństwa obejmują zaufane wykonanie kodu, root-trust i bezpieczne przechowywanie kluczy.

Procesor aplikacyjny może być taktowany częstotliwością 128 lub 64 MHz przy użyciu skalowania napięcia i częstotliwości, ma 1 MB Flash, 512 kB RAM, jednostkę zmiennoprzecinkową (FPU), 8 kB 2-drożnej asocjacyjnej pamięci podręcznej i obsługuje instrukcje DSP.

Procesor komunikacyjny (network) jest taktowany z częstotliwością 64 MHz i jest zoptymalizowany pod kątem niskiej mocy i wydajności, ma 256 kB pamięci Flash oraz 64 kB pamięci RAM i jest w pełni programowalny.

Oprogramowanie układu scalonego nRF5340 jest wspierane przez pakiet programowy nRF Connect SDK. Zestaw uruchomieniowy nRF5340 PDK (Preview Development Kit) firmy Nordic Semiconductor to wszechstronny zestaw do pracy z układem scalonym nRF5340 tej firmy. Posiada wbudowany debuger SEGGER J-Link umożliwiający programowanie i debugowanie zarówno zamontowanego układu SoC, jak i zewnętrznych układów SoC poprzez złącze debugowania. Posiada łącza rozszerzeń kompatybilne z Arduino Uno Revision 3, dzięki czemu można z łatwością montować płytki rozszerzeń (shields). Zestaw pracuje z dużą liczbą środowisk programowych i aplikacji narzędziowych.

Układ scalony nRF5340

Układ firmy Nordic Semiconductor posiada dwa rdzenie ARM Cortex-M33:

Rdzeń aplikacyjny:

  • 128/64 MHz ARM Cortex-M33, FPU oraz instrukcje DSP, 8 kB 2-drożnej asocjacyjnej pamięci podręcznej,
  • 1 MB Flash + 512 kB RAM,
  • 510/255 CoreMark, 65/76 CoreMark/mA.

Rdzeń komunikacyjny (network):

  • 64 MHz ARM Cortex-M33, 2 kB pamięci podręcznej,
  • 256 kB Flash + 64 kB RAM,
  • Bardzo niski pobór mocy,
  • 238 CoreMark, 101 CoreMark/mA.

Zasoby cyfrowe:

  • Oscillatory: 64 MHz z zewnętrznym kwarcem 32 MHz, 32 kHz z kwarcem, RC lub syntezowane,
  • Wiele układów peryferyjnych: 3×UART, 3×TWI (I2C), PDM, I2S, SPI (32 MHz), szyfrowane QSPI (96 MHz), 3×PWM, 12-bit ADC (200 ksps), komparator, NFC-A, USB 2.0 (12 Mbps full-speed), QDEC, 6×32 bit timer/counter, 4×24 bit licznik czasu rzeczywistego.

Transmisja:

  • Układ umożliwia w pasmie 2,4 GHz transmisję z protokołem: Bluetooth 5.1 (2 Mbps, 1 Mbps, Long Range), Direction Finding, Bluetooth Mesh, Thread, Zigbee, IEEE 802.15.4 (250 kbps), ANT oraz protokół autorski (2 Mbps/1 Mbps),
  • Dodatkowo układ umożliwia jednoczesną (concurrent) pracę w jednej sieci z protokołem Bluetooth LE oraz w drugiej sieci z protokołem Bluetooth Mesh, Thread lub Zigbee,
  • Programowana moc wyjściowa w zakresie od -20 dBm do +3 dBm z krokiem 1 dB,
  • Czułość odbiornika: Bluetooth LE: –97,5 dBm dla 1 Mbps, –94,3 dBm dla 2 Mbps,
  • Zasilanie (DC/DC 3 V): 4,7 mA dla +3 dBm TX, 3,2 mA dla 0 dBm TX, 2,6 mA dla RX (1 Mbps), 3,0 mA dla RX (2 Mbps).

Układ pracuje z napięciem zasilania 1,7 V do 5,5 V. Pobór mocy (DC/DC 3 V):

  • 1,1 μA – System OFF, 1,5 μA – System ON, 1,6 μA – System ON (+RTC), 1,8 μA – System ON (+64 kB RAM + RTC ).

Bezpieczeństwo:

  • Układ zapewnia bezpieczne bootowanie oraz aktualizację oprogramowania poprzez radio,
  • ARM TrustZone – umożliwia zaufane wykonanie kodu,
  • ARM CryptoCell-312 – sprzętowe wykonanie większości Internetowych standardów szyfrowania,
  • Bezpieczne przechowywanie kluczy, 128-bit AES, SPU, KMU, ACL.

Tryby zasilania układu scalonego nRF5340

Organizację układu zasilania pokazuje rysunek 1. Układ posiada trzy regulatory zasilania:

  • Regulator wysokiego napięcia (VREGH): wejście 2,5...5,5 V, wyjście 1,8...3,3 V. Pracuje w trybie LD (domyślnie) lub DC/DC (wymaga zewnętrznego układu LC),
  • Regulator główny (VREGMAIN): wejście 1,7...3,6 V. Pracuje w trybie LD (domyślnie) lub DC/DC (wymaga zewnętrznego układu LC). Dostarcza zasilania do rdzenia aplikacyjnego,
  • Regulator radiowy (VREGRADIO), pracuje tak jak regulator główny. Dostarcza zasilanie do rdzenia komunikacyjnego.
Rysunek 1. Organizacja układu zasilania procesora nRF5340 [3]

Włączenie trybu DC/DC powoduje zwiększenie efektywności pracy regulatora. Moduł USB posiada osobny układ zasilania z własnym regulatorem LDO 3,3 V. Do wejścia tego regulatora jest podawane napięcie 5 V z szyny USB.

Regulatory pozwalają na skonfigurowanie dwóch trybów zasilania:

  • Tryb z normalnym napięciem zasilania – regulator wysokiego napięcia jest wyłączony. Wejściowe napięcie zewnętrzne jest dołączone do wyprowadzenia VDD a następnie do regulatora głównego, do regulatora radiowego oraz do układów sterowania wyprowadzeń (GPIO),
  • Tryb z wysokim napięciem zasilania – pracują wszystkie regulatory. Napięcie wyjściowe z regulatora wysokiego napięcia może być użyte do zasilania zewnętrznych układów z wyprowadzenia VDD.

Procesor nRF5340 posiada bardzo rozbudowany układ monitorowania zasilania z układami POR, BOR i komparatorem napięcia zasilania. Każdy rdzeń posiada osobny układ zarządzania zasilaniem oraz sygnałami zegarowymi. Układ zegarowy każdego rdzenia generuje kilka zegarów wysokiej i niskiej częstotliwości.

Architektura układu scalonego nRF5340

Schemat blokowy procesora nRF5340 jest pokazany na rysunku 2. Rdzeń aplikacyjny ARM Cortex-M33 zapewnia energooszczędną arytmetykę (DSP), obliczenia zmiennoprzecinkowe (FPU), kontroler przerwań (NVIC) oraz moduł ochrony pamięci (MPU). Może pracować z obniżoną częstotliwością zegara ze 128 MHz do 64 MHz co pozwala na zmniejszenie mocy zasilania. Ma dołączoną pamięć Flash (1 MB) oraz RAM (512 kB). Jest przeznaczony wyłącznie do pracy aplikacji użytkowej.

Rysunek 2. Schemat blokowy procesora nRF5340 [3]

Ma zastosowaną najnowszą technologię ARM TrustZone oraz ARM CryptoCell 312. Technologia ARM TrustZone oznacza, że moduł posiada obszary zabezpieczone oraz nie zabezpieczone. Aspekty krytyczne, jak obsługa kryptograficzna i klucze, mogą być umieszczone w obszarze zabezpieczonym, do którego nie ma bezpośredniego dostępu. Zapewnia to najwyższy poziom szyfrowania i zabezpieczeń aplikacyjnych na rynku. Obie technologie zapewniają również bardzo energooszczędną pracę.

Rdzeń komunikacyjny ARM Cortex-M33 jest przeznaczony do obsługi komunikacji radiowej. Rdzeń komunikacyjny ma dołączony koprocesor kryptograficzny do wykonywania w locie operacji zgodnych z 128-bit AES/ECB/CCM/AAR.

Każdy rdzeń posiada własny układ IPC (Inter-processor communication) służący do wysyłania i odbioru zdarzeń pomiędzy nimi. Komunikacja zachodzi poprzez wiele kanałów.

Pamięć dołączona do rdzenia aplikacyjnego jest wmapowana do przestrzeni adresowej rdzenia komunikacyjnego. Oznacza to, że rdzeń komunikacyjny może ją wykorzystywać jako pamięć współdzieloną do komunikacji.

Procesor posiada też układ MUTEX (Mutually exclusive peripheral), dostępny z obu rdzeni, służący do zablokowania zasobu współdzielonego przez oba rdzenie. Dzielony zasób może być użyty tylko przez jeden rdzeń i przez ten czas jest zablokowany. Do blokowania i odblokowania służą bity w specjalnych rejestrach MUTEX.

System debugowania procesora posiada sieć wyzwalania skrośniego, która może być zastosowana do jednoczesnego startowania i zatrzymywania pracy obu rdzeni. Każdy rdzeń posiada układ CTI (Cross-Trigger Interface), który może generować lub odbierać sygnały wyzwalania wystawiane przez rdzeń lub blok debugowania. Układ CTM (Cross-Trigger Matrix) ma cztery kanały do konfigurowania przesyłania sygnałów pomiędzy rdzeniami. Całość pozwala na synchroniczne zatrzymanie pracy rdzenia komunikacyjnego gdy zatrzymywany jest rdzeń aplikacyjny.

Każdy rdzeń procesora posiada zestaw własnych modułów peryferyjnych. Dodatkowo rdzeń komunikacyjny ma dostęp do układów peryferyjnych dołączonych do rdzenia aplikacyjnego.

Kolejny mechanizm precyzyjnej synchronizacji pracy modułów peryferyjnych dają moduły DPPI (Distributed Programmable Peripheral Interconnect) składające się z modułu konfiguracji DPPPC oraz kanałów. Synchronizacja jest wykonywana bez udziału CPU. Przy zastosowaniu modułu CTI synchronizacja pracy może być wykonywana pomiędzy modułami peryferyjnymi dołączonymi do różnych rdzeni.

Architektura modułów peryferyjnych jest podobna, jak w układach serii nRF52. Układ udostępnia 48 wyprowadzeń GPIO (w obudowie 7×7 mm aQFN94), cztery zegary RTC (24b), 6 tajmerów (32b), przetwornik ADC (12b, 200 ksps), interfejs mikrofonu cyfrowego (PDM), cztery wyjścia PWM, port I2S, cztery porty UART, trzy porty I2C oraz cztery porty SPI. Port QSPI (96 MHz) umożliwia wykonywanie kodu z dołączonej zewnętrznej pamięci Flash.

Dokumentacja

W artykule „Nordic Semiconductor unveils world’s first dual ARM Cortex-M33 processor wireless SoC for the most demanding low power IoT applications” zamieszczony jest opis układu scalonego [8]. W następnym artykule „Meet the nRF5340, Nordic’s New Dual-Core Flagship SoC” znajduje się opis zestawu i oprogramowania [7].

Dokumentacja dotycząca układu scalonego nRF5340 jest dostępna poprzez portal firmy Nordic Semiconductor na stronie produktu „nRF5340 System on Chip” [1]. Znajduje się tam odnośnik do krótkiego opisu zamieszczonego w pliku „nRF5340 SoC PB.pdf” [2].

Dolna część strony nRF5340 jest zorganizowana w postaci trzech zakładek:

  • Overview – Zwiera odwołanie do strony modułu nRF5340 PDK. Są też odwołania do stron z opisem oprogramowania: nRF Connect SDK [9], nRF Connect for Desktop [10], nRF Command Line Tools oraz Mobile apps,
  • Downloads – Zawiera odnośniki do źródłowych plików aplikacyjnych. Obecnie znajduje się odnośnik do sprzętowego projektu referencyjnego,
  • Get started – Zwiera odwołanie do strony modułu nRF5340 PDK oraz odnośnik do wideo Introducing the nRF5340 PDK [12].

Po kliknięciu na przycisk Documentation otwierany jest dokładny opis układu nRF5340 zawarty w dokumencie „nRF5340 Objective Product Specification v0.5.1” [3].

Dokumentacja dotycząca zestawu uruchomieniowego nRF5340 PDK jest dostępna poprzez portal firmy Nordic Semiconductor na stronie produktu „nRF5340 PDK Preview development kit” [4]. Znajduje się tam odnośnik do krótkiego opisu zamieszczonego w pliku „nRF5340 PDK PB.pdf” [5].

Dolna część strony nRF5340 PDK jest zorganizowana w postaci trzech zakładek:

  • Overview – Zwiera odwołanie do strony procesora nRF5340. Są też odwołania do stron z opisem oprogramowania: nRF Connect for Desktop [10], nRF Command Line Tools oraz nRF Connect for Mobile oraz odwołanie do strony z opisem zestawu Power Profiler Kit [11].
  • Downloads – Zawiera odnośnik do plików aplikacyjnych przykładowego projektu Heart Rate Monitor Demo. Schematy płytki zestawu i anteny NFC oraz pliki konstrukcyjne znajdują się w pliku zip „nRF5340 Preview Development Kit – Hardware files 0_8_0.zip” [3].
  • Get started – W polu Connect and test jest opisane postępowanie od wyjęcia modułu z pudełka. W polu Next Step jest odnośnik do dokumentu nRF53 Series: Developing with nRF Connect SDK Getting Started Guide v1.0 [13]. Poniżej opisu znajduje się prezentacja wideo [12] oraz wybrane posty z bloga „Nordic DevZone”.

Na stronie produktu „nRF5340 PDK Preview development kit” [4] nie ma odwołania do dokumentacji zestawu, choć znajduje się ona na portalu firmowym. Na portalach firmowych Nordic Semiconductor dosyć trudno znaleźć i zorientować się w odwołaniach do dokumentacji. Dosyć obszerna dokumentacja zestawu, narzędzi programowych i oprogramowania znajduje się w portalu Infocenter z dostępem do opisów w formacie plików pdf oraz stron html (rysunek 3).

Rysunek 3. Portal z dokumentacją firmową Nordic Semiconductor

W ścieżce nRF5 Getting Started znajduje się document nRF53 Series: Developing with nRF Connect SDK [13]. W ścieżce nRF53 Series znajduje się opis układu nRF5340 w dokumencie „nRF5340 Objective Product Specification v0.5.1” [3] oraz dokładny opis zestawu uruchomieniowego nRF5340 PDK w dokumencie „nRF5340 PDK User Guide, v1.0”, [6]. W ścieżce Software Develompent Kit znajduje się dokumentacja pakietu nRF Connect SDK [9]. W ścieżce nRF Tools znajduje się dokumentacja: nRF5x Command Line Tools [14], nRF Connect for Desktop [10] oraz Power Profiler Kit [11].

Udostępnione jest też krótkie wideo Introducing the nRF5340 PDK [12]. Kolejne wideo „nRF5340 PDK Unboxing!” znanego portalu Hackster.io zawiera prezentację zestawu uruchomieniowego, a także stron opisu na portalu producenta [16].

Budowa zestawu uruchomieniowego nRF5340 PDK

Zestaw uruchomieniowy nRF5340 PDK (PCA10095) ma dosyć skomplikowaną budowę. Sam układ scalony zajmuje tylko mały kawałek płytki drukowanej. Pozostałą powierzchnię zajmują złącza, rozbudowany układ zasilania oraz układ debugera sprzętowego. Sygnały i zasilanie jest podawane poprzez multipleksery co zdecydowanie pogarsza czytelność schematu. Dlatego bardzo istotny jest dobry opis działania zestawu. Na pojedynczej płytce drukowanej są umieszczone wszystkie elementy, oprócz anteny NFC (rysunek 4). Antena NFC jest dostarczona w zestawie osobno. Na płytce drukowanej zestawu jest zamontowane złącze NFC (J5) do dołączenia anteny NFC.

Rysunek 4. Rozmieszczenie elementów zestawu uruchomieniowego nRF5340 PDK [5]

Schemat blokowy zestawu uruchomieniowego nRF5340 PDK został pokazany na rysunku 5. Najważniejszym elementem płytki jest układ scalony procesora nRF5340, zalutowany po prawej stronie płytki drukowanej. Do układu scalonego dołączony jest kwarc 32,768 kHz oraz kwarc 32 MHz. Bezpośrednio obok układu scalonego nRF5340 (U1) umieszczone są elementy dopasowania anteny oraz antena wykonana w postaci ścieżki drukowanej (PCB). Zamontowane jest również gniazdko antenowe J1 typu SWF z wyłącznikiem (rysunek 4).

Rysunek 5. Schemat blokowy zestawu uruchomieniowego nRF5340 PDK [6]

Gdy wtyczka nie jest włożona do gniazdka to sygnał wyjściowy jest dołączony do anteny PCB.

Na górze układu scalonego U2 (debugera SEGGER) jest naklejona nalepka, na której są umieszczone istotne dane (od góry):

  • Numer typu płytki: PCA10095
  • Wersja sprzętu: 0.8.0
  • Data produkcji (rok. numer tygodnia): 2019.45
  • Numer seryjny płytki.

Na dolnej powierzchni płytki wykonany jest nadruk z opisem funkcji wyprowadzeń GPIO procesora.

Przycisk IF Boot/Reset

Podczas normalnej pracy przycisk IF Boot/Reset pełni funkcję przycisku Reset. Poprzez multiplekser elektroniczny U6 jest on dołączony do wyprowadzenia /RESET układu scalonego nRF5340 (U1). Aby wprowadzić zestaw uruchomieniowy nRF3840 PDK w tryb bootowania należy przytrzymać wciśnięty przycisk IF Boot/Reset podczas podawania napięcia zasilania do zestawu. Dioda LED5 zacznie pulsować, co sygnalizuje wejście zestawu w tryb bootowania. Ten tryb umożliwia załadowanie kodu nowego oprogramowania do zestawu i jego zaprogramowanie przez oprogramowanie narzędziowe pracujące na komputerze PC.

Gniazdko Interface MCU USB Connector

Podstawowym złączem do pracy z zestawem uruchomieniowym nRF5340 DK jest gniazdko Interface MCU USB Connector (J2) typu Micro-USB, umieszczone na lewej krawędzi płytki drukowanej (rysunek 4). Dostarcza ono zasilania VBUS dla płytki. Do sygnałów danych gniazdka dołączona jest dioda PRTR5V0U2X (Nexperia) zabezpieczająca przed ESD. Sygnały danych są dołączone do układu scalonego MK22FN128VLL10 (U2, NXP), który realizuje układ debugera SEGGER J-Link OB. Układ U2 obsługuje również cztery sygnały dołączone do modułu peryferyjnego UART układu scalonego nRF5340 (U1): P0.19 (RTS), P0.20 (TXD), P0.21 (CTS) oraz P0.22 (RXD). Port ten jest widoczny na komputerze jako wirtualny port COM o nazwie nRF Connect USB CDC ACM. Oprogramowanie obsługujące ten port musi obsługiwać sygnał DTR.

Gniazdko nRF USB Connector (J3)

Na górnej krawędzi płytki drukowanej jest jeszcze miejsce przewidziane na drugie gniazdko nRF USB Connector (J3) typu Micro-USB (rysunek 4) do obsługi portu USB. Po zamontowanie gniazdka dostarcza ono źródła zasilania VBUS_nRF dla modułu peryferyjnego USB układu scalonego nRF5340 (U1). Sygnały danych są bezpośrednio dołączone do wyprowadzeń D– oraz D+ układu scalonego nRF5340 (U1). Do sygnałów danych gniazdka dołączona jest miejsce na diodę PRTR5V0U2X (Nexperia) zabezpieczająca przed ESD.

Diody LED

Diody LED1...LED4 są dołączone do wyprowadzeń P0.28...P0.31 układu scalonego nRF5340 (U1). Diody świecą po podaniu napięcia zerowego. Oznacza to, że podanie na wyjście GPIO procesora sygnału niskiego aktywuje diody. Na płytce zestawu jest jeszcze dioda LED5 dołączona do debugera SEGGER.

Przyciski użytkownika

Na górnej stronie płytki drukowanej zestawu umieszczone są przyciski użytkownika SW1...SW4 zwierające do masy. Przyciski SW1...SW4 są bezpośrednio dołączone do wyprowadzeń (odpowiednio): P023, P0.23, P0.08 oraz P0.09 układu scalonego nRF5340 (U1). Jest jeszcze dioda LED5 dołączona do układu scalonego U2 debugera.

Złącza sygnałowe

Na płytce drukowanej zestawu zamontowane są złącza kołkowe ze standardowym odstępem 2,54 mm. Na złączu P1 wyprowadzone jest zasilanie VIO (VDD), V5V (5 V), VIN, masa (GND) oraz sygnał Reset (RESET). Złącza P1...P4 mają rozmieszczenie zgodne ze standardem Arduino Uno Revision 3 i zgodne z nim rozmieszczenie sygnałów.

Wyprowadzenia układu scalonego nRF5340 (U1) są dołączone do złącz P2, P3, P4, P6. Dodatkowo na płytce są umieszczone otwory do zamontowania dwurzędowych złączy P13...P17, gdzie w jednym rzędzie jest podana masa a w drugim sygnały ze złącz (odpowiednio) P1, P2, P3, P4, P6. Kolejne wyprowadzenia układu scalonego nRF5340 (U1) są dołączone do złącz P5 oraz P24. Na złączach założone są plastykowe nakładki (potrzebne w trakcie montażu płytki) – należy je zdjąć przed rozpoczęciem użytkowania złącz.

Na dolnej stronie płytki drukowanej zamieszczone są pola lutownicze do zamontowania złączy powierzchniowych P7...P12 oraz P26. Zamontowany jest też uchwyt do standardowej baterii CR2032 z założoną baterią.

Na płytce jest rozmieszczonych dużo zwór lutowniczych do konfigurowania pracy oraz sporo punktów pomiarowych. Dokładny opis ich znaczenia i rozmieszczenia jest zamieszczony w dokumencie [6] oraz na schemacie, dostępnym do pobrania ze strony produktu [4].

Na złączu P28 udostępnione są wyprowadzenia dodatkowego wzmacniacza operacyjnego U19B.

Układ zasilania

Układ zasilania zestawu uruchomieniowego nRF5340 DK jest dosyć skomplikowany. W jego zrozumieniu nie wystarczają opisy w dokumencie „nRF5340_PDK_User_Guide_v1.0” [6], bardzo przydaje się schemat płytki zestawu zamieszczony w pliku „PCA10095_Schematic_And_PCB” [4]. Układ zawiera wiele scalonych przełączników mocy z dosyć skomplikowanym systemem sterowania.

Zestaw może być zasilany z kilku źródeł:

  • Zasilanie VBUS (5 V): Pobierane z gniazdka Interface MCU USB Connector (J2) typu Micro-USB. Jest to podstawowe źródło zasilania,
  • Zasilanie VBUS_nRF (5 V): Pobierane z gniazdka nRF USB Connector (J3) typu Micro-USB (nie zamontowane). Przede wszystkim jest to źródła zasilania VBUS_nRF dla modułu peryferyjnego USB układu scalonego nRF5340 (U1). Może też być źródłem zasilania dla regulatora napięcia V5V,
  • Zasilanie zewnętrzne VLi-Ion (2,5...5,0 V): Z baterii Lithium polymer (Li-Po) pobierane z gniazdka „Li-po” J6 lub P27,
  • Zasilanie zewnętrzne VIN3-5V: Pobierane z gniazdka P20 (P20.9).
  • Zasilanie zewnętrzne VEXT (1,7...3,6 V, punkt testowy TP27): Pobierane z gniazdka „External Supply” (P21),
  • Zasilanie zewnętrzne VBAT (punkt testowy TP26): Z baterii CR2032, pobierane z uchwytu baterii zainstalowanego na spodzie płytki drukowanej zestawu (punkt testowy TP26).

Napięcie V5V

Napięcie V5V (5 V, 1 A, punkt testowy TP36) jest generowane przez przetwornik DC/DC XC9131 (U10) typu Boost regulator. Napięcie wejściowe regulatora U10 jest pobierane z kilku źródeł: Z1, Z2, Z3 oraz Z4. Każde źródło zasilania jest zabezpieczone poprzez szeregową diodę przed przepływem prądu wstecznego.

Napięcie VREG

Napięcie VREG (3 V, 0,6 A) jest generowane przez przetwornik DC/DC XC9236 (U11) typu Buck regulator z napięcia V5V. Jest to napięcie zasilania układów peryferyjnych dołączonych do układu scalonego nRF5340 (U1).

Napięcie VDD płytki

Napięcie VDD (punkt testowy TP30) jest głównym zasilaniem płytki zestawu. Jest ono generowane przez wtórnik napięciowy U9A/Q7 [6]. Źródłem zasilania wtórnika napięciowego jest napięcie V5V. Napięcie wyjściowe wtórnika jest ustalane jako równe napięciu na wyprowadzeniu VDD układu scalonego nRF5340 (U1) lub napięciu zewnętrznego zasilania tego układu. Jest też możliwość pobierania napięcia VDD z napięcia VREG, VBAT oraz VEXT. Wykorzystane może być tylko jedno źródło zasilania.

W przypadku zestawu uruchomieniowego nRF5340 PDK nazwa VDD występuje niefortunnie dwa razy w zupełnie innym znaczeniu: raz jako nazwa sieci zasilania płytki oraz drugi raz jako nazwa wyprowadzenia układu scalonego nRF5340. Linia doprowadzająca napięcie do wyprowadzenia VDD układu scalonego nRF5340 (U1) ma na schemacie jednoznaczną nazwę VDD_nRF. Co nie powinno prowadzić do pomyłek.

Wybór sposobu zasilania układu scalonego nRF5340

Sposób zasilania układu scalonego nRF5340 (U1) jest wybierany przełącznikiem suwakowym „nRF power source” (SW9). Udostępnia on trzy położenia:

  • VDD (ustawienie środkowe, domyślne) – Oba wyprowadzenia (VDD, VDDH) zasilania układu scalonego nRF5340 U1 są połączone razem. Zasilanie układu scalonego nRF5340 (U1) pracuje w trybie normalnym. W zależności od ustawienia przełącznika „VEXT → nRF” (SW10) źródło napięcia zasilania może być wybrane jako:
  • (OFF) Napięcie VDD.
  • (ON) Zasilanie zewnętrzne VEXT (1,7...3,6 V): Pobierane z gniazdka „External Supply” (P21). Także może być pobierane z zamontowanej pod płytką drukowaną baterii CR2032,
  • Li-Po – Zasilanie zewnętrzne VLi-Ion (2,5...5,0 V): Z baterii Lithium polymer (Li-Po) pobierane z gniazdka „Li-po” J6 lub P27. Używamy nazwy „bateria” ale jest to oczywiście akumulatorek umożliwiający wielokrotne ładowanie,
  • USB – Zasilanie VBUS_nRF (5 V): Pobierane z gniazdka „Interface MCU USB Connector” (J3) typu Micro-USB.

W dwu ostatnich przypadkach układ scalony nRF5340 (U1) pracuje w trybie wysokiego napięcia.

Aby reszta płytki była zasilana napięciem należy dołączyć do płytki drugie źródło zasilania Z1...Z4. Wtórnik napięciowy ustawia poziom napięcia głównego VDD na poziom zgodny z napięciem wyprowadzenia VDD układu scalonego nRF5340 (U1). Napięcie wyprowadzenia VDD jest ustawiane przez oprogramowanie.

Wiele wyprowadzeń układu scalonego nRF5340 (U1) jest dołączonych do multiplekserów sygnałowych zasilanych z napięcia VDD. Przełącznik „nRF ONLY|DEFAULT” (SW6) ustawia pracę multiplekserów interfejsu:

  • nRF ONLY – wyłączone jest zasilanie multiplekserów. Układ scalony nRF5340 jest maksymalnie oddzielony od otoczenia co ustawia optymalne warunki pomiaru poboru prądu. Również wyłączane jest napięcie zasilania diod LED1…4 oraz zewnętrznej pamięci Flash.
  • DEFAULT – domyślna praca z włączonym zasilaniem multiplekserów interfejsu i pamięci Flash.

Tryby pracy zestawu uruchomieniowego nRF5340 PDK

Zestaw może pracować w kilku trybach:

  • USB detect mode – Wykrywane jest zasilanie podawane z gniazdka Interface MCU USB Connector (J2) typu Micro-USB. Z tego zasilania jest generowane napięcie VDD - główne zasilanie płytki zestawu. Jest to domyślny tryb pracy zestawu. Ustawienia przełączników:
    • „nRF power source” (SW9) – VDD (ustawienie środkowe),
    • „nRF ONLY|DEFAULT” (SW6) – DEFAULT,
    • „VEXT → nRF” (SW10) – OFF,
  • nRF only mode – Tryb pracy samodzielnej układu scalonego nRF5340 (opis powyżej). Przełączniki ustawione tak jak w trybie USB detect mode jedynie przełącznik „nRF ONLY|DEFAULT” (SW6) ustawiony na pozycję nRF ONLY.

Wejście i wyjście debugowe

Gniazdko Debug In (P18) 2×5 ze standardowym odstępem 1,27 mm umożliwia dołączenie zewnętrznego układu debugera. Można go używać tylko wtedy, gdy nie jest dołączony kabelek do z gniazdka Interface MCU USB Connector (J2) lub gdy płytka pracuje w trybie nRF only mode (przełącznik „nRF ONLY|DEFAULT (SW6) ustawiony na pozycję nRF ONLY). Sygnały z gniazdka P18 są doprowadzone do układu scalonego nRF5340 (U1).

Do wyprowadzenia 1 gniazdka P18 (napięcie referencyjne) jest doprowadzone napięcie z wyprowadzenia VDD układu scalonego nRF5340 (U1).

Gniazdko powierzchniowe TRACE (P25) 2×10 ze standardowym odstępem 1,27 mm umożliwia prowadzenie śledzenia debugowego. Na płytce jest dostępne pole lutownicze do jego zainstalowania.

Gniazdko Debug out (P19) 2×5 ze standardowym odstępem 1,27 mm umożliwia dołączenie układu debugera SEGGER J-Link OB (zamieszczonego na płytce zestawu) do układu scalonego serii nRF53 znajdującego się na innej płytce drukowanej. Układ debugera pracuje z napięciem zasilania VDD, typowo 3 V. Gdy zostanie wykryte napięcie zasilania dołączonego układu na nóżce 1 gniazdka P19 to debuger pracuje tylko z zewnętrznym układem.

Na złączu P20 są dostępne sygnały do debugowania kart rozszerzeń standardu Arduino Uno Revision 3.

Przy używaniu gniazdek debugowych P18 oraz P19 należy zwrócić uwagę na położenie wyprowadzenia numer 1.

Program nRF Connect for Desktop

Program nRF Connect for Desktop jest platformą do uruchamiania aplikacji (app) przeznaczonych do obsługi specyficznych zadań [10]. Jest cała lista takich aplikacji: Power Profiler, Programmer, Bluetooth Low Energy oraz RSSI Viewer. Służą one do obsługi połączeń standardu BLE, optymalizacji zasilania, programowania układów SoC itd. Po zainstalowaniu programu, przy pierwszym uruchomieniu może być informacja o konieczności aktualizacji programu. Nawet jeśli została pobrana najnowsza wersja ze strony produktu.

Aktualizację należy koniecznie wykonać.

Rozpoczęcie pracy z zestawem uruchomieniowym nRF5340 PDK

Przed dołączeniem zestawu uruchomieniowego nRF5340 PDK do komputera trzeba na nim zainstalować sterowniki:

  1. Pobierz program nRF Connect for Desktop ze strony produktu [10]. Do wyboru są wersje dla trzech systemów operacyjnych: Windows 7/8/10, Ubuntu Linux 14.04/16.04/18.04 oraz OSX 10.
  2. Zainstaluj program. To spowoduje zainstalowanie na komputerze sterowników dla nRF5340 USB Device Firmware Upgrade (DFU).

Teraz można wykonać poniższą sekwencję czynności:

  1. Na płytce zestawu uruchomieniowego nRF5340 PDK ustaw przełącznik „nRF power source” (SW9) na pozycję VDD (środek).
  2. Na płytce zestawu ustaw przełącznik „nRF ONLY|DEFAULT (SW6) w pozycję DEFAULT.
  3. Na płytce zestawu ustaw przełącznik „VEXT → nRF” (SW10) w pozycję OFF.
  4. Dołącz kabel USB do gniazdka USB-A komputera oraz do gniazdka nRF USB Connector (J2) typu Micro-USB, znajdującego się po lewej stronie płytki zestawu uruchomieniowego nRF5340 PDK.
  5. Na płytce zestawu ustaw przełącznik „Power” (SW8) na pozycję ON.
  6. Dioda czerwona stanu LED5 oraz dioda LED1 zacznie pulsować. Sygnalizuje ona, że zestaw uruchomieniowy nRF5340 PDK jest zasilany oraz pracuje poprawnie. Przyciśnięcie przycisku SW1...SW4 powoduje zmianę wyboru diody LED, pulsuje dioda LED o tym samym numerze co przycisk.
  7. Po kilku sekundach komputer rozpozna zestaw uruchomieniowy nRF5340 PDK. Zostaną zainstalowane drajwery dla trzech komponentów: urządzenie złożone USB, JLink CDC UART Port oraz J-Link driver.
  8. Do komputera zostanie dołączony też dysk zewnętrzny „JLINK”. Pojawi się okienko z informacją o możliwości pracy z tym dyskiem. Można je zamknąć.
  9. Otwórz okno „Menedżer urządzeń” i sprawdź, czy są widoczne trzy wirtualne porty COM: JLink CDC UART Port.

Jeśli ma być używane połączenie standardu NFC to należy po kroku 4 dołączyć antenę NFC do gniazdka „NFC” (J5) znajdującego po prawej stronie, na dole płytki (rysunek 4). Następnie po kroku 5 należy przybliżyć smartfon do anteny.

Dysk „JLINK” może być zastosowany do programowania zestawu uruchomieniowego nRF5340 PDK poprzez przeciąganie na niego (drag-and-drop) pliku obrazu aplikacji w formacie HEX.

Pomiary prądu zasilania

Płytka zestawu uruchomieniowego nRF5340 PDK umożliwia dosyć łatwe monitorowanie poboru prądu układu scalonego nRF5340. Do pomiaru poboru prądu można użyć różnych przyrządów pomiarowych jak analizator mocy (z pomiarem dynamicznym), oscyloskop lub miernik prądu. Dla zestawu uruchomieniowego nRF5340 PDK można użyć, także dedykowanego zestawu Power Profiler Kit (PCA63511).

Typowy pomiar prądu zasilania układu scalonego nRF5340 jest wykonywany dla jego wyprowadzenia zasilania VDD. W tym celu należy:

  • Przeciąć mostek lutowniczy SB40, znajdujący się po lewej stronie płytki drukowanej, na lewo od złącza P20,
  • Zalutować rezystor SMD0402 10 Ω, na pole lutownicze R90 znajdujące się zaraz obok SB40.

Pomiar należy wykonywać na gniazdku „nRF current measurement VDD” (P22), znajdującym się zaraz obok SB40.

Można także wykonywać pomiar prądu dla wyprowadzenia zasilania VDDH. W tym celu należy:

  • Przeciąć mostek lutowniczy SB41, znajdujący się po lewej stronie płytki drukowanej, na lewo od złącza P20.
  • Zalutować rezystor SMD0402 10 Ω, na pole lutownicze R91 znajdujące się zaraz obok SB41.

Pomiar należy wykonywać na gniazdku „nRF current measurement VDD_HV” (P23), znajdującym się zaraz obok SB43. Po wykonaniu pomiarów należy przywrócić standardową konfigurację płytki. Można wtedy albo zalutować mostek lutowniczy SB40 (i/lub SB41) albo założyć zworę na gniazdko P22 (i/lub P23).

W przypadku konieczności programowania układu scalonego nRF3840 zamontowanego na płytce zestawu należy odłączyć urządzenia pomiarowe i przywrócić standardową konfigurację płytki (zwarcie R90 i R91). Lutowanie rezystorów na płytkę może nie być łatwe, a za to może być kosztowne i niewygodne. Aby pomiary miały odpowiednią jakość należy zastosować rezystor z tolerancją 0,1%. Nie jest łatwo je zakupić i są dosyć kosztowne. Co więcej rezystory nie mogą być zamontowane gdy do pomiarów prądu jest używany dedykowany zestawu Power Profiler Kit (PCA63511). Dlatego wydaje się, że lepszym rozwiązaniem jest zastosowanie rezystora zalutowanego na wtyczkach wkładanej do gniazdka P22 i P23.

Oprogramowanie narzędziowe

Zestaw uruchomieniowy nRF5340 DK jest obsługiwany przez kilka środowisk programowania (IDE) przeznaczonych dla procesorów serii nRF53: SEGGER Embedded Studio (SES), MDK-ARM Keil mVision, GNU/GCC oraz IAR.

Dostępny jest firmowy pakiet programowy nRF Connect SDK (Software Development Kit) przeznaczonych dla obsługi różnych protokołów komunikacyjnych: Bluetooth, ANT, Bluetooth Mesh, Thread oraz Zigbee.

Dostępnych jest kilka firmowych aplikacji narzędziowych : nRF5x Command Line Tools, nRF Connect for Desktop (z aplikacjami: Power Profiler, Programmer, Bluetooth Low Energy oraz RSSI Viewer), nRF Connect for Mobile, nRF Sniffer, nRF Thread Topology Monitor i inne.

Dostępnych jest też kilka aplikacji mobilnych: nRF Toolbox App (kontener aplikacji z komunikacją BLE) i wiele innych. Więcej informacji można znaleźć na stronie produktu „nRF5340 PDK” [4].

Pierwszy test programowania

Zgodnie z sugestią na zakładce Getting Started strony nRF5340 PDK [4] pierwsze próby z programowaniem zestawu można przeprowadzić z wykorzystaniem firmowego demo. Oprogramowanie to integruje system operacyjny czasu rzeczywistego Zephyr, stos komunikacyjny BLEN oraz drajwery sprzętowe.

Najpierw należy rozpocząć pracę z zestawem uruchomieniowym nRF5340 PDK zgodnie z opisem zamieszczonym powyżej.

  1. Na stronie nRF53 Series: Developing with nRF Connect SDK Getting Started Guide v1.0 [13] przejdź do rozdziału Running a first test,
  2. Ze strony produktu „nRF5340 PDK” [4] pobierz na zakładce Download plik Peripheral_Heart_Rate.zip z kodem aplikacji demonstracyjnej Heart Rate Monitor Demo,
  3. Rozpakuj plik zip w folderze o krótkiej ścieżce, np. C:\NRF5\HRM.

Folder zawiera dwa pliki HEX z kodem programu:

  • hci_open_amp.hex – przeznaczony dla rdzenia komunikacyjnego,
  • peripheral_hr.hex – przeznaczony dla rdzenia aplikacyjnego.
  1. Ze strony nRF Command Line Tools pobierz plik instalacyjny nRF-Command-Line-Tools_10_5_0_Installer.exe [14],
  2. Zainstaluj aplikację nRF Command Line Tools v10.5.0 w domyślnym folderze,
  3. Dołącz kabel USB do gniazdka USB-A komputera oraz do gniazdka nRF USB Connector (J2) typu Micro-USB, znajdującego się po lewej stronie płytki zestawu uruchomieniowego nRF5340 PDK,
  4. Na płytce zestawu ustaw przełącznik „Power” (SW8) na pozycję ON. Dioda czerwona stanu LED5 oraz dioda LED1 zacznie świecić, dioda LED 1 pulsuje,
  5. Otwórz okno Command Prompt i ustaw ścieżkę na folder z kodami źródłowymi (rysunek 6),
  6. Wpisz polecenie: nrfjprog –version
  7. Sprawdź czy wersja jest równa 10.5.0 lub nowsza,
  8. Wpisz polecenie: nrfjprog -f NRF53 --coprocessor CP_NETWORK --eraseall
  9. Wpisz polecenie: nrfjprog -f NRF53 --coprocessor CP_NETWORK --program hci_open_amp.hex
  10. Wpisz polecenie: nrfjprog -f NRF53 --eraseall
  11. Wpisz polecenie: nrfjprog -f NRF53 --program peripheral_hr.hex
  12. Wpisz polecenie: nrfjprog --pinreset

Powyższa sekwencja kasuje i programuje pamięć Flash obu rdzeni procesora.

Rysunek 6. Sekwencja programowania obu rdzeni procesora nRF5340

Kopiowanie ze strony internetowej linii polecenia (8) powoduje zgłoszenie błędu składni. Spowodowane jest to zastosowaniem przed opcją „eraseall” jako drugi myślnik (kreska) innego znaku (pauza?).

  1. Pobierz aplikację Nordic nRF Toolbox z Google Play lub App Store i zainstaluj na komórce [15],
  2. Włącz na komórce obsługę komunikacji Bluetooth,
  3. Otwórz aplikację nRF Toolbox,
  4. Kliknij na ikonkę HRM (rysunek 7a),
  5. Kliknij Connect (rysunek 7b),
  6. Wybierz Zephyr Heartrate Sensor (rysunek 7c). Pokazywane są symulowane dane częstości pracy serca (HR) oraz poziomu naładowania baterii (rysunek 7d).
Rysunek 7. Praca z aplikacją Nordic nRF Toolbox (a, b, c, d)

Podsumowanie

Budowa układu scalonego nRF5340 sprawia imponujące wrażenie. Zwłaszcza bardzo niski pobór mocy przez moduł radiowy, możliwość wykonywania kodu z zewnętrznej pamięci Flash QSPI, współbieżna praca sieci BLE i sieci mesh z protokołem IEEE 802.15.4 oraz praca do 105°C.

Zestaw uruchomieniowy nRF5340 PDK ma budowę bardzo zbliżoną do zestawu uruchomieniowego nRF52840 DK [S29]. Bardzo ułatwia to rozpoczęcie pracy. Jednak pierwsze dołączenie zasilania do płytki raczej rozczarowuje. Wpisany na płytkę program pozwala tylko na mruganie diodami LED. Nie umożliwia on jednak komunikacji BLE. Jednak już pierwszy test programowania pokazuje potencjał układu scalonego nRF5340 i daje spory wgląd w możliwości różnorodnego firmowego oprogramowania, przygotowanego do pracy z układami scalonymi rodziny nRF53x. Dalsze prace programowe wymagają zastosowania pakietu nRF Connect SDK i zainstalowania środowisk programistycznych.

Henryk A. Kowalski
Instytut Informatyki Politechnika Warszawska

 

Wybrane pozostałe artykuły kursu Systemy dla Internetu Rzeczy:
[S29] Zestaw uruchomieniowy nRF52840 DK, EP 9/2019

Literatura:
[1] nRF5340, System on Chip, Product Page, Nordic Semiconductor, http://bit.ly/2v3VMAI
[2] nRF5340 Product Brief, Version 1.1, Nordic Semiconductor, http://bit.ly/2RaCv9s
[3] nRF5340 Objective Product Specification, v0.5.1, 2019-12-06, Nordic Semiconductor, http://bit.ly/366E2RZ
[4] nRF5340 PDK, Preview development kit, Product Page, Nordic Semiconductor, http://bit.ly/3alFvY9
[5] nRF5340 PDK Product Brief, Version 1.1, Nordic Semiconductor, http://bit.ly/366E2RZ
[6] nRF5340 PDK User Guide, v1.0, 2019-11-13, Nordic Semiconductor, http://bit.ly/3ap8Y3k
[7] Meet the nRF5340, Nordic’s New Dual-Core Flagship SoC, Petter Myhre, November 20, 2019, Nordic Semiconductor, http://bit.ly/2sAOW4G
[8] Nordic Semiconductor unveils world’s first dual Arm Cortex-M33 processor wireless SoC for the most demanding low power IoT applications, 14 Nov 2019, Nordic Semiconductor, http://bit.ly/2R6Djfi
[9] nRF Connect SDK, v1.0.99, Oct 03, 2019, Nordic Semiconductor, http://bit.ly/2MUbLYk
[10] nRF Connect for Desktop, Product Page, Nordic Semiconductor, http://bit.ly/2Cugbz5
[11] Power Profiler Kit, Strona produktu, Nordic Semiconductor, http://bit.ly/2JWA0Cx
[12] Introducing the nRF5340 PDK, Video 5:39, 14 lis 2019, Nordic Semiconductor, http://bit.ly/2TE1nI1
[13] nRF53 Series: Developing with nRF Connect SDK Getting Started Guide v1.0, 2019-11-13, Nordic Semiconductor, http://bit.ly/2TONPd9
[14] nRF5x Command Line Tools, Nordic Semiconductor, http://bit.ly/3654N9n
[15] nRF Toolbox App, http://bit.ly/30Llm9z
[16] nRF5340 PDK Unboxing!, 18:40, Hackster.io, 14 lis 2019, http://bit.ly/2TzJZ7v
Artykuł ukazał się w
Elektronika Praktyczna
luty 2020
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów