Procesory osadzone ETD 7211 I 2 C, I 2 S, Timer, PWM, ARM W7 03.12.2018
Powtórka wiadomości
Dane MAM Memory Acceleration Module Zadanie: przyspieszenie dostępu do pamięci FLASH 3 Rdzeń ARM Interfejs adres 15 Pamięć FLASH Bufory Magistrala Local Bus 128 Pamięć RAM szybka Flash cykl zapis/odczyt ~50 ns Przy założeniu, że procesor działa przy 60 MHz, czas dostępu do pamięci to ~16,33 ns 128 bitowa organizacja pamięci odczyt czterech 32-bitowych rozkazów ARM lub osiem 16- bitowych Thumb Data Buffer Prefetch Buffer Branch Tail Buffer
Obniżony pobór mocy Układy LPC umożliwiają pracę w trybie obniżonego poboru mocy. Dostępne tryby: IDLE, Power Down, Sleep Mode, Deep Power-Down Mode IDLE Sleep Mode - wyłączony sygnał taktujący rdzeń - główny zegar wyłączony - wyłączony sygnał taktujący pamięć - pętla PLL zostaje automatycznie rozłączona - sygnał zegarowy podłączony do bloków obsługi przerwań - możliwość wznowienia pracy układu za pomocą RTC (działa zegar 32768 Hz) - pobór prądu na poziomie ma - pamięć FLASH w stanie podtrzymania - pobór prądu na poziomie µa 4
Obniżony pobór mocy Power Down - sygnał zegarowy całkowicie wyłączony Deep Power-Down - po wznowieniu działania, układ PLL oraz dzielniki sygnałów muszą zostać ponownie skonfigurowane - z trybu power down mikrokontroler mogą wyprowadzić jedynie te bloki, które do działania nie wymagają sygnału zegarowego - odłączone zostaje napięcia zasilające interfejsy logiczne - ekstremalnie niski pobór prądu - wznowienie działania: RTC lub RESET zewnętrzny 5
Peryferia SPI Serial Peripheral Interface - na przykładzie LPC2368 Parametry transmisji SPI: Brak arbitrażu, Dwukierunkowy interfejs, 4 linie kontrolne: MOSI, MISO, SCK, SSEL, Praca w trybie master lub slave, Tryb Master generuje sygnał SCK, Obsługa: Flash, A/C D/C, karty MMC itp 6
Peryferia SSP Synchronous Serial Port - na przykładzie LPC2368 Parametry transmisji SSP: Kompatybilność z trybami: Motorola SPI, 4-wire TI SSI, National Semiconductor Microwire Praca w trybie master lub slave, 8 ramek w trybie FIFO oba w trybie transmisji i odbioru danych Wspomaganie pracy w trybie DMA 7
I 2 C
Peryferia I 2 C - na przykładzie LPC2368 Parametry transmisji I 2 C: Komunikacja synchroniczna z wykorzystaniem arbitrażu, Magistrala szeregowa, Linie dwukierunkowe z otwartym drenem w trybie Master/Slave, Każde urządzenie na magistrali I 2 C ma swój 7-bitowy adres, Synchronizacja zegara na magistrali, 100 khz standard, 400 khz szybki 9
Peryferia I 2 C - na przykładzie LPC2368 I 2 C Wykorzystanie I 2 C Czujniki Pamięci (np.: 24C128) itp SPI 10 Uwaga: SDA0 i SCL0 są typu: otwarty dren
11 Rejestr Adresu: może być zapisany 7 bitami, po transmisji w trybie Slave Komparator: porównuje własne 7 bitów adresu z tymi co przyszły po magistrali, porównuje również 8 bitów z głównym adresem rozgłoszeniowym [0x00] Shift Register: przechowuje dane do transmisji wysyła je od MSB (7) do LSB (0) Układ do synchronizacji i arbitrażu: sprawdza stan 1 na lini SDA, w momencie gdy inne urządzenie ustawi ją w stan 0 wówczas arbitraż zostanie przerwany a Master Slave.
Peryferia I 2 C - procedura arbitrażu 1. Urządzenie wysyła dane na linii SDA, 2. Jedno z urządzeń przygotowuje się do wysyłania danych w trybie master, jednak drugie urządzenie (zaznaczone linią przerywaną) ustawia linię SDA w stan 0, arbitraż zostaje przerwany, a urządzenie pierwsze przechodzi w stan Slave, 3. Urządzenie pierwsze przechodzi w tryb odbioru ale nadal generuje zegar aż transmisja zostanie zakończona. Urządzenie nie wygeneruje już następnego przebiegu zegarowego, zrobi to urządzenie które wygrało wcześniej arbitraż. 12
13 Serial Clock Generator: kontroluje generowanie sygnału zegarowego gdy urządzenie jest w trybie Master, a jest wyłączona gdy jest w trybie Slave. Timing & Control Logic: generują i wykrywają sygnały startu i stopu, momenty transmisji danych, wysyła i odbiera bit ACK, Kontroluje tryb Master i Slave oraz przerwania, monitoruje pracę magistrali I 2 C Status decoder & register: zbiera najważniejsze bity statusowe i sprowadza do 5 bitowego kodu. Możliwe jest 26 stanów magistrali
Peryferia I 2 C Rejestry Do konfiguracji i kontroli magistrali I 2 C wykorzystywanych jest 7 głównych rejestrów: I2CONSET - I2C Control Set Register I2STAT - I2C Status Register I2DAT - I2C Data Register I2ADR - I2C Slave Address Register I2SCLH - SCH Duty Cycle Register High Half Word I2SCLL - SCL Duty Cycle Register Low Half Word. I2CONCLR - I2C Control Clear Register 14
Peryferia I 2 C Rejestry Zawartość rejestru I2CnCONSET - I 2 C Control Set Register 31:8 7 6 5 4 3 2 1 0 - I2 SA SO SI AA - AA włączenie obsługi wysyłania bitu potwierdzenia ACK, SI Flaga do obsługi przerwania z magistrali I 2 C zapala się gdy stan magistrali I 2 C zmienia się, w celu wykonania kolejnej akcji należy ją wyzerować, STO włączenie obsługi nadawania bitu stopu na magistrali I 2 C, STA przejście w tryb Master i nadanie bitu START, lub wysłanie bitu ponownego startu, Kasownie bitu odbywa się przez wpisanie 1 do rejestru CONCLR I2EN włączenie interfejsu I 2 C, wyłączenie przez zerowanie bitu powoduje przerwanie śledzenia zamian na liniach SDA i SCL 15
Peryferia I 2 C Rejestry I2CnCONSET - I 2 C Control Set Register 31:8 7 6 5 4 3 2 1 0 - I2 SA SO SI AA - I2CnCONCLR - I 2 C Control Clear Register 31:8 7 6 5 4 3 2 1 0 - I2 SA - SI AA - 16 AAC wyłączenie obsługi wysyłania bitu potwierdzenia ACK, SIC Flaga do obsługi przerwania z magistrali I 2 C zapala się gdy stan magistrali I 2 C zmienia się, w celu wykonania kolejnej akcji należy ją wyzerować, STAC przejście w tryb Master i nadanie bitu START, lub wysłanie bitu ponownego startu, I2ENC wyłaczenie interfejsu I 2 C, wyłączenie przez zerowanie bitu powoduje przerwanie śledzenia zamian na liniach SDA i SCL Uwaga: wpisanie jedynki do CONCLR powoduje wyzerowanie bitów w CONSET
Peryferia I 2 C Rejestry Zawartość rejestru I2CnSTAT - I 2 C Status Register 31:8 7 6 5 4 3 2 1 0 Status - Status 26 możliwych kombinacji bitów statusowych dla działania w 4-ch trybach: Tryb Master Transmitter Tryb Master Receiver Tryb Slave Receiver Tryb Slave Receiver 17 Tabele 454:457 W UM120211.pdf
Peryferia I 2 C Rejestry 18 Zawartość rejestru I2CnSTAT - I 2 C Status Register KOD Zdarzenie 0x08 Bit Start został nadany 0x10 Powtórzony bit startu został nadany 0x18 Adres urządzenia I 2 C (kierunek zapisu) został nadany z potwierdzeniem (ACK) 0x20 Adres urządzenia I 2 C (kierunek zapisu) został wysłany, brak potwierdzenia (ACK) 0x28 Dane zostały wysłane z potwierdzeniem (ACK) 0x30 Dane zostały wysłane, brak potwierdzenia (ACK) 0x38 Utrata magistrali (inne urządzenie master przejęło magistralę) 0x40 Adres urządzenia I 2 C (kierunek odczytu) został nadany z potwierdzeniem (ACK) 0x48 Adres urządzenia I 2 C (kierunek odczytu) został wysłany, brak potwierdzenia (ACK) 0x50 Dane zostały odebrane i wysłano potwierdzenie (ACK) 0x58 Dane zostały odebrane i nie zostało wysłane potwierdzenia (ACK) 0xF8 Stan jałowy na magistrali nic się nie dzieje
Peryferia I 2 C Rejestry I2CnDAT - I 2 C Data Register 31:8 7 6 5 4 3 2 1 0 Data DATA zawiera dane do wysłania lub do odbioru I2CnADR - I 2 C Slave Address Register 31:8 7 6 5 4 3 2 1 0 Adres GC GC General Call: odpowiedź na adres rozgłoszeniowy (0x00) Adres zawiera adres dla interfejsu I 2 C urządzenia pracującego w trybie Slave 19
Peryferia I 2 C Rejestry I2CnSCLH - I 2 C SCL High Duty Cycle Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 SCLH I2CnSCLL - I 2 C SCL Low Duty Cycle Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 SCLL I 2 C bitfreq = f PCLK I2CSCLH + I2CSCLL 20
Peryferia I 2 C Rejestry I 2 C bitfreq = f PCLK I2CSCLH + I2CSCLL f I2C = 0 400 khz 21
I 2 S
Peryferia I 2 S - na przykładzie LPC2368 Parametry transmisji I 2 S: Magistrala specjalizowana dla interfejsów Audio, Wybór kanałów, Praca na 8, 16 i 32 bitach, Czas akwizycji można dowolnie zmieniać od 16 96 khz 16, (22.05, 32, 44.1, 48, 96 khz) 8 kolejkowe FIFO 23
Peryferia I 2 S - na przykładzie LPC2368
Peryferia I 2 S - rejestry
Peryferia I 2 S - FIFO
Timer
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Specyfika Liczników: 32 bit liczniki z 32 bit-i preskalerami Operacja jako Licznik impulsów lub czasu (counter/timer) Do 32 wejść dla każdego licznika, Cztery 32 bit rejestry porównywania Tryb ciągły Tryb stopowania Tryb resetowania Cztery wyjścia Generacja przerwań 28
Diagram blokowy P1[28]/ O MAT0[0] Match output for Timer 0, channel 0. P1[29]/ O MAT0[1] Match output for Timer 0, channel 0. P3[25]/ O MAT0[0] Match output for Timer 0, channel 0. P3[26]/ O MAT0[1] Match output for Timer 0, channel 1. P1[22]/ O MAT1[0] Match output for Timer 1, channel 0. P1[25]/ O MAT1[1] Match output for Timer 1, channel 1. P0[6]/ O MAT2[0] Match output for Timer 2, channel 0. P0[7]/ O MAT2[1] Match output for Timer 2, channel 1. P0[8]/ O MAT2[2] Match output for Timer 2, channel 2. P0[9]/ O MAT2[3] Match output for Timer 2, channel 3. P4[28]/ O MAT2[0] Match output for Timer 2, channel 0. P4[29]/ O MAT2[1] Match output for Timer 2, channel 1. P0[10]/ O MAT3[0] Match output for Timer 3, channel 0. P0[11]/ O MAT3[1] Match output for Timer 3, channel 1. P1[26]/ I CAP0[0] Capture input for Timer 0, channel 0. P1[27]/ I CAP0[1] Capture input for Timer 0, channel 1. P1[18]/ I CAP1[0] Capture input for Timer 1, channel 0. P1[19]/ I CAP1[1] Capture input for Timer 1, channel 1. 29 P0[4]/ I CAP2[0] Capture input for Timer 2, channel 0. P0[5]/ I CAP2[1] Capture input for Timer 2, channel 1. P0[23]/ I CAP3[0] Capture input for Timer 3, channel 0. P0[24]/ I CAP3[1] Capture input for Timer 3, channel 1.
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 30 TxIR Rejestr przerwania do zerowania, możliwy odczyt przerwania TxTCR Rejestr kontroli czasu liczników TxTC Licznik czasu który zmienia się za każdym PR+1 cyklu PCLK TxPR Rejestr preskalera licznika TxPC Licznik preskalera, zlicz do wartosci z PR TxMCR Rejestr porówania wartości - kontrolowanie przerwań i ich generowanie TxMR0 Rejestr porównania TxMR1,TxMR2,TxMR3, TxCCR Rejestr kontrolny zdarzeń reakcja na impuls, zbocze, generowanie przerwań
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 TxCR0 Wewnętrzny rejestr kopiujący wartość z licznika TC po wykryciu zdarzenia TxCR1 Wewnętrzny rejestr kopiujący wartość z licznika TC po wykryciu zdarzenia TxEMR Zewnętrzny układ porównania reagujący na sygnał z pinu MATn.0-3 TxCTCR Rejestr kontrolny licznika zmiana miedzy zliczaniem impulsów a odliczaniem czasu oraz reakcje na sygnał lub zbocze 31
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxIR - Interrupt Register 31:8 7 6 5 4 3 2 1 0 - C1 C0 M3 M2 M1 M0 MR0 Flaga przerwania od porównania dla kanału 0 MR1 Flaga przerwania od porównania dla kanału 1 MR2 Flaga przerwania od porównania dla kanału 2 MR3 Flaga przerwania od porównania dla kanału 3 CR0 Flaga przerwania od zdarzenia dla kanał 1 CR1 Flaga przerwania od zdarzenia dla kanał 2 32 Przerwanie od danego zdarzenia sygnalizowane jest pojawieniem się stanu wysokiego na zadanym polu, Wpisanie stanu 1 na konkretny bit spowoduje wyzerowanie flagi od tego przerwania. Wpisanie stanu logicznego 0 nie ma żadnego wpływu.
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxCR - Timer Control Register 31:8 31:8 7 6 5 4 3 2 1 0 - CR CE Rejestr odpowiedzialny jest za kontrolę pracy licznika impulsów lub czasu Counter Enable Aktywacja 1 lub dezaktywacja 0 zliczania impulsów przez Timer Counter i Prescaler Counter Counter Reset Resetowanie 1 w tym samym czasie liczników Timer Counter i Prescaler Counter po wystąpieniu następnego zbocza narastającego na sygnale zegarowym PCLK. Rejestry są wyzerowane do momentu nie zwrócenia w TCR [1] stanu niskiego 0 33
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxCTCR - Count Control Register 31:16 31:16 7 6 5 4 3 2 1 0 - CIS T/CM 34 CTCR wykorzystywany jest do przełączania trybu pracy, między licznikiem czasu a licznikiem impulsów (Timer and Counter mode) oraz wyborem momentu zliczania ich za pomocą wejść CAP wówczas wartość w rejestrze TC zostanie zwiększony o jeden Counter/Timer Mode Wybór trybu pracy między Licznikiem Impulsów a licznikiem Czasu wraz z wyborem reakcji na zbocze przy zliczaniu: 00 Timer Mode: na każde rosnące zbocze PCLK 01 Counter Mode: inkremenaracja na zbocze narastające z wejścia CAP 10 Counter Mode: inkremenaracja na zbocze opadające z wejścia CAP 11 Counter Mode: inkremenaracja na oba zbocza z wejścia CAP Count Input Select Wybór wejścia CAPm 00 CAPn 0 01 CAPn 1 Capture Control Register (TnCCR) musi zostać zaprogramowany jako 000
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Timer Counter Registers TnTC 32-bitowy rejestr licznika czasu od wartości 0x0000 0000 do 0xFFFF FFFF i po przekroczeniu tej wartości wraca do 0x0000 0000. Przekroczenie wartości licznika nie wywołuje przerwania. Jednak rejestr porównania może zostać wykorzystany do tego! Prescale Register TnPR 32-bitowy rejestr określający maksymalną wartość zliczania licznika preskalera (Prescale Counter) 35
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Prescale Counter register 32-bitowy rejestr preskalera licznika, który kontroluje podział sygnału PCLK o stałą wartość zanim nastąpi zliczenie impulsów w rejestrze licznika czasu (Timer Counter). Pomaga to w kontroli rozdzielczości czasowej w stosunku do maksymalnego czasu zanim wartość licznika zostanie przekroczona. Licznik preskalera (Prescale Counter register) kontrolowany jest przez rejestr preskalera (Prescale register) i w momencie gdy osiągnie on wartość z tego rejestru (Prescale register) wówczas licznik czasu (Timer Counter) zostaje zwiększony o +1 a licznik preskalera zostaje wyzerowany. TC+1: co 1 PCLK gdy PR = 0, co 2 PCLKs gdy PR = 1, etc. Match Registers MR0 MR3 Wartość z tego rejestru jest ciągle porównywana z licznikiem czasu (Timer Counter). Gdy obie wartości są równe, następuje wywołanie automatycznej akcji: resetu wartości TC, zastopowanie licznika czasu. Można je kontrolować w rejestrze MCR 36
MR3S MR3R MR3I MR2S MR2R MR2I MR1S MR1R MR1I MR0S MR0R MR0I Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxMCR - Match Control Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - MRnI włączanie generowania przerwania 1 w momencie gdy MRn osiąga wartość taką jak w TC MRnR wyzerowanie od MRn, Wartość w TC zostanie wyzerowana w momencie gdy osiągnie taką samą wartość co MRn, MRnS zatrzymanie od MRn, Zliczanie w TC zostanie zatrzymane w momencie osiągnięcia wartości takiej jak w MRn, dodatkowo w TCR[0] zostanie ustawione na stan 0 w momencie gdy MRn = TC n = 0, 1, 2, 3 37
Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxCCR - Capture Control Register 31:16 31:16 15:6 5 4 3 2 1 0 - CAP1I CAP1FE CAP1RE CAP0I CAP0FE CAP0RE 38 CAP0RE reakcja na zbocze narastające dla odpowiadającego wejścia CAPn.0, spowoduje zapamiętanie zawartości licznika TC w odpowiadającym mu rejestrze CR0 CAP0FE - reakcja na zbocze opadające dla odpowiadającego wejścia CAPn.0, spowoduje zapamiętanie zawartości licznika TC w odpowiadającym mu rejestrze CR0 CAP0I ustawienie tego bitu powoduje nie tylko zapamiętanie stanu licznika TC w odpowiadającym mu rejestrze CR0 ale również zgłoszenie przerwania CAP1RE reakcja na zbocze narastające dla odpowiadającego wejścia CAPn.1, spowoduje zapamiętanie zawartości licznika TC w odpowiadającym mu rejestrze CR1 CAP1FE - reakcja na zbocze opadające dla odpowiadającego wejścia CAPn.1, spowoduje zapamiętanie zawartości licznika TC w odpowiadającym mu rejestrze CR1 CAP1I ustawienie tego bitu powoduje nie tylko zapamiętanie stanu licznika TC w odpowiadającym mu rejestrze CR0 ale również zgłoszenie przerwania
EM3 EM2 EM1 EM0 Peryferia Timer 0, 1, 2, 3 - na przykładzie LPC2368 Zawartość rejestru TxEMR - External Match Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - EMC3 EMC2 EMC1 EMC0 EM0 flaga załączania wyjścia MATn.0. W momencie wystąpienia takich samych wartości na TC i MR0 wówczas odpowiedni stan na pinie MATn.0 jest ustawiony. Jego reakcja ustawiana jest na linii EMC0 EMC0 stan tej przestrzeni w rejestrze określa zachowanie wyjścia pinu MATn.0 00 nic nie rób 01 zeruje odpowiednią linię MAT 10 ustawia odpowiednia linię MAT 11 zmienia stan na przeciwny na odpowiedniej lini MAT 39
PWM
Peryferia PWM - na przykładzie LPC2368 Specyfika układu PWM: Operacja zliczania impulsów lub czasu 6 pojedynczych wyjść lub 3 podwójne Niezależny 32 bitowy licznik od licznika Timer/Counter Możliwość zmiany rejestru porównania (MR) w tym samym czasie! 7 rejetrów porównania Operacja jako standardowy licznik 41
PWM Timer/Counter
Peryferia PWM - na przykładzie LPC2368
Peryferia PWM - na przykładzie LPC2368
Peryferia PWM - na przykładzie LPC2368
Peryferia PWM - na przykładzie LPC2368 Resetowanie i ustawianie wyjść dla układu PWM
Peryferia PWM - na przykładzie LPC2368 PWM1IR Rejestr przerwania do zerowania, możliwy odczyt przerwania PWM1TCR Rejestr kontroli czasu liczników PWM1TC Licznik czasu który zmienia się za każdym PR+1 cyklu PCLK PWM1PR Rejestr preskalera licznika PWM1PC Licznik preskalera, zlicz do wartości z PR PWM1MCR Rejestr porównania wartości - kontrolowanie przerwań i ich generowanie PWM1MR0 Rejestr porównania PWM1MR1 PWM1MR6, PWM1CCR Rejestr kontrolny zdarzeń reakcja na impuls, zbocze, generowanie przerwań
Peryferia PWM - na przykładzie LPC2368 PWM1CR0-3 Wewnętrzny rejestr kopiujący wartość z licznika TC po wykryciu zdarzenia PWM1PCR Umożliwia wybór wyjść oraz konkretnych kanałów oraz ustawienie pojedynczego lub podwójnego wyjścia PWM1LER włączanie wyboru NOWEJ wartości porównania PWM1CTCR Rejestr kontrolny licznika zmiana miedzy zliczaniem impulsów a odliczaniem czasu oraz reakcje na sygnał lub zbocze
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1IR - PWM Interrupt Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0-10 9 8-5 4 3 2 1 0 [0] PWMMR0 flaga przerwania od PWM dla kanału 0, występuje gdy licznik i rejestr porównania są równe. [3] PWMMR3 flaga przerwania od PWM dla kanału 3, występuje gdy licznik i rejestr porównania są równe. [4] PWMCAP0 flaga przerwania od wejścia 0 [5] PWMCAP1 flaga przerwania od wejścia 1 [8] PWMMR4 flaga przerwania od PWM dla kanału 4, występuje gdy licznik i rejestr porównania są równe. [10] PWMMR6 flaga przerwania od PWM dla kanału 6, występuje gdy licznik i rejestr porównania są równe.
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1TCR - PWM Timer Control Register 31:16 31:16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 - PE - CR CE Counter Enable Licznik PWM i preskaler licznika PWM są włączone i gotowe do zliczania Counter Reset Licznik PWM i preskaler licznika PWM są zsynchronizowane do resetu wartości na następnym wysokim stanie zegarowym PCLK. Liczniki są wyzerowane póki bit (Counter Reset ) nie zostanie wyzerowany PWM Enable Jeśli bit ten jest w stanie 1 wówczas tryb PWM jest włączony, w wypadu wpisania 0 wówczas układ pełni rolę układu czasowolicznikowego.
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1CTCR - PWM Count Control Register 31:8 31:8 7 6 5 4 3 2 1 0 - CIS C/TM Counter/Timer Mode: 00 Praca w trybie pomiaru czasu: TC jest inkrementowane wówczas gdy Prescale Counter zrówna się do Prescale Register 01 Praca w trybie licznika: TC jest inkrementowany na zbocze narastające z wejścia PCAP 10 Praca w trybie licznika: TC jest inkrementowany na zbocze opadające z wejścia PCAP 11 Praca w trybie licznika: TC jest inkrementowany na oba zbocza narastające i opadające z wejścia PCAP Count Input Select wybór wejścia: 00 PCAP1.0 01 CAP1.1
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1PCR - PWM Control Registers 31:15 31:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 A6 A5 A4 A3 A2 A1 - L6 L5 L4 L3 L2 - PWMSEL2 ustawienie bitu skutkuje przełączenie się w tryb podwójny na wyjściu PWM2, zerowanie bitu powoduje przejście w tryb pojedynczy PWMSEL6 ustawienie bitu skutkuje przełączenie się w tryb podwójny na wyjściu PWM6, zerowanie bitu powoduje przejście w tryb pojedynczy PWMENA1 ustawienie powoduje włączenie wyjścia PWM1, zerowanie jego wyłączenie PWMENA6 ustawienie powoduje włączenie wyjścia PWM6, zerowanie jego wyłączenie
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1MCR - PWM Match Control Register 31:16 31:16 20 19 18 11 10 9 8 7 6 5 4 3 2 1 0 6S 6R 6I 3S 3R 3I 2S 2R 2I 1S 1R 1I 0S 0R 0I [0I]: PWMMRnI flaga przerwania od PWMMRn, przerwanie generowane jest e momencie gdy PWMMRn ma taką samą wartość jak PWMTC [0R]: PWMMRnR Zerowanie od PWMMRn, PWMTC jest zerowany w momencie gdy PWMMR0 ma taką samą wartość jak PWMTC [0S]: PWMMRnS Stopowanie PWMMRn, PWMTC oraz PWMPC zostaną zatrzymane a PWMTCR[0] zostanie ustawione na 0 jeśli PWMMRn ma taką samą wartość jak PWMTC n = 0, 1, 2, 3, 4, 5, 6
Peryferia PWM - na przykładzie LPC2368 Zawartość rejestru PWM1LER - PWM Latch Enable Register 31:16 31:16 7 6 5 4 3 2 1 0-6L 5L 4L 3L 2L 1L 0L Rejestr PWM1LER służy do aktualizacji rejestrów PWMMATn gdy układ pracuje w trybie PWM. 0L Ustawienie tego bitu w stan wysoki spowoduje wpisanie do rejestru Match 0 wartości
ARM a gdzie to jest?
57 ARM ilość ma znaczenie
LPC rodzina układów Cortex-M0+ ARM9 58 ARM7 Cortex-M4 MCUs with Cortex-M0 Co-Processors
Cortex-M3 embedded LPC1768 59 https://www.mbed.com/en/ https://developer.mbed.org/platforms/ https://developer.mbed.org/
Cortex Rodzina Cortex składa się z trzech wersji rdzeni: Cortex R - przeznaczonych do stosowania w systemach czasu rzeczywistego (real-time systems), Cortex A - przeznaczonych do stosowania w dużych systemach z zaimplementowanymi systemami operacyjnymi, mają wbudowaną m.in. jednostkę MMU, Cortex M - rdzenie zoptymalizowane cenowo (cost-sensitive), przeznaczone dla aplikacji mikrokontrolerowych. 60
61 Cortex
Zestaw instrukcji ogólnych, obsługa I/O Zaawansowane operacje, manipulacja bitowa Operacja DSP, SIMD, MAC Operacje zmiennoprzecinkowe
Cortex podstawowe pojęcia Jednostka Znaczenie FPU Floating Point Unit jednostka zmiennoprzecinkowa DSP Digital Signal Processing (SIMD Instructions) wsparcie dla operacji DSP, przetwarzanie zygnałó TCM Tightly Coupled Memory pamięć ściśle przyległa ECC Error Code Correction pamięć RAM wyposażona w system kodowania korekcyjnego L1$ Level 1 Cache pamięć podręczna pierwszego poziomu SCU Snoop Control Unit jednostka sterująca pamięci, łączenie wielu procesorów, pamięci MMU Memory Management Unit jednostka zarządzania pamięcią TZ Trust Zone system bezpieczeństwa, ochrona urządzeń NEON Advanced SIMD Instruction efektywne przetwarzanie SIMD - (Single Instruction, Multiple Data) do 16 instrukcji MPx Multi Processing wieloprocesorowość 63 HV DIV Hardware Divide sprzętowa jednostka dzieląca MPU Memory Protection Unit jednostka ochrony pamięci
SCU - Snoop Control Unit Cortex A9 MPcore CPU CPU CPU CPU Cache Instr. Data Cache Cache Instr. Data Cache Cache Instr. Cache Cache Instr. Data Cache Snoop Control Unit (SCU) Accelerator Coherence Port L2 Cache 64 Main Memory
ARM NEON - silnik multimedialny ARM NEON jest blokiem SIMD ogólnego użycia Przeznaczony głównie do obróbki multimediów Pozwala na zwiększenie wydajności przetwarzania grafiki o około 3x w porównaniu z rodziną ARMv5 W przypadku DSP wzrost wydajności może być jeszcze większy (do 8x) Posiada 32 rejestry 64-bitowe łączone w 16 rejestrów 128- bitowych SISD Single Instruction Single Data SIMD - Single Instruction Multiple Data 65 Lista rozkazów ARM oraz Thumb-2 zawiera ponad 100 instrukcji SIMD
66 Skalowność rodziny Cortex M
Cortex M Procesor 32-bitowy: Kolejka instrukcji 3 stopniowa, Architektura harwardzka Lista instrukcji Thumb-2,bardzo zwarty kod przy dużej wydajności Wiele trybów i domen oszczędzania energii Nested Vectored Interrupt Controller,dobrze zdefiniowane czasy i sposoby wywoływania przerwań, Wsparcie dla systemów RTOS, Wsparcie dla debuggerów (JTAG, SWD Serial Wire Debug) 67
Bit band w Cortex-ach Natychmiastowy dostęp do pojedynczego bitu, Dostęp w obszarze RAM (0x20000000) oraz urządzań peryferyjnych (0x40000000) Zazwyczaj aby zmienić stan pojedynczego bitu: - odczyt komórki pamięci do rejestru, - ustawienie interesującego bitu, - Zapis wartości do komórki pamięci Bit band zapis lub odczyt dowolnego bitu na podstawie adresu interesującego bitu 68
NVIC - Nested Vectored Interrupt Controller - kontroler przerwań zagnieżdżonych Wyjątki, najważniejsze w systemie Priorytety przerwań na przykładzie Cortex M3 NMI przerwanie niemaskowalne HardFault błędy krytyczne MemManage manager pamięci BusFault błąd podczas dostępu do pamięci UsageFault niezdefiniowana instrukcja SVCall wywołanie przez instrukcję SVC Debug Monitor tryb debugowania PendSV żądanie opóźnionego wywołania systemu SysTick Timer systemowy, przerwanie okrsowe 69
Cortex M0 Główne cechy: Architektura v6-m prekursor, pierwowzór układów CORTEX Najuboższa wersja procesorów ARM Jednocześnie też najbardziej oszczędna jedynie 85µW/MHz Kompatybilność z wersją Cortex-M3 Struktura składa się z zaledwie 12000 bramek Tylko 56 instrukcji optymalizowanych pod kątem języka C Wsparcie dla nisko-mocowej komunikacji bezprzewodowej: Bluetooth Low Energy (BLE), ZigBee, itp. Wydajność 0.9 DMIPS/MHz Instrukcja mnożenie 32x32 w jednym cyklu Opóźnienie wywołania przerwań: 16 cykli 70
Cortex M1 Główne cechy: Tzw. miękka wersja rdzenia, Rdzeń wykonany jako IP Core z możliwością osadzenie w FPGA, Wsparcie dla układów Xilinx, Actel, Altera 71
Cortex M3 72 Główne cechy: Wprowadzony na rynek w 2004 roku Przewidziany do najbardziej wydajnych mikrokontrolerów Wysoka wydajność i bogactwo cech Mały pobór prądu (12.5 DMIPS/mW) Do 240 źródeł przerwań!!! Wsparcie dla szeregu protokołów szeregowych Wydajność 1.25DMIPS/MHz Wsparcie dla operacji na bitach Mnożenie 32x32 w jednym cyklu, Dzielenie w 2-12 cyklach Kolejka instrukcji (3 stopnie) plus przewidywanie skoków Kontrola pamięci (MPU) Prędkość działania: do 275 MHz /340 DMIPS
LPC43x0 Cortex M4, Cortex M0 Główne cechy: Wieloprocesorowość: rdzeń Cortex M4, koprocesor Cortex M0, Rdzeń Cortex- M4 zoptymalizowany pod kątem DSP Rozbudowane układy peryferyjne, Możliwość rozdzielenia sygnałów zegarowych, Możliwość kontroli mocy każdego rdzenia z osobna 73
LPC43x0 Cortex M4, Cortex M0 Główne cechy: Cortex M4 operacje DSP Cortex M0 kontrola I/O Połączenie do wspólnej magistrali AHB umożliwia: bezpośrednią komunikację pomiędzy jednostkami CPU, współdzielić pamięć 74
LPC43x0 Cortex M4, Cortex M0 Maksymalną wydajność uzyskuje się gdy każda jednostka korzysta z odrębnego fragmentu pamięci 75
ARM, THUMB, THUMB2 zdolność do obsługi instrukcji na danych 16- i 32-bitowych bez konieczności stosowania jakichkolwiek zabiegów, zmniejszenie objętości wynikowego kodu oraz na zwiększenie wypadkowej prędkości, Thumb/Thumb2 - większa, w porównaniu do rozkazów ARM, gęstość upakowania poleceń, Lista Thumb-2 ma pewne rozszerzenia w stosunku do listy ARM (np. sprzętowe dzielenie), Wszystkie rozkazy wykonują się w ściśle określonym czasie zwykle 1 cykl. 4 bitowy kod warunkowy na początku każdej instrukcji. 76
77 Dziękuję za uwagę