Procesory osadzone ETD 7211 ADC, DAC, UART, CLK W

Podobne dokumenty
Procesory osadzone ETD 7211 W

Memory Map for LPC2138

Programowanie Układów Logicznych kod kursu: ETD6203. Komunikacja z układami cyfrowymi W dr inż. Daniel Kopiec

Mikrokontrolery z rdzeniem ARM, część 21

Uniwersalny asynchroniczny. UART Universal Asynchronous Receier- Transmiter

TECHNIKA MIKROPROCESOROWA

System interfejsu RS 232C opracowali P. Targowski i M. Rębarz

Procesory osadzone ETD 7211 W

TECHNIKA MIKROPROCESOROWA

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Programowalne układy logiczne kod kursu: ETD Układy sekwencyjne W

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

Technika Mikroprocesorowa

Techniki mikroprocesorowe i systemy wbudowane

IC200UDR002 ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO

Urządzenia peryferyjne RS-232. Wykład 2

Hardware mikrokontrolera X51

1. Tworzenie nowego projektu.

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

. Rodzaje transmisji sygnału i RS-232

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Przetwornik ADC procesora sygnałowego F/C240 i DAC C240 EVM

Wstęp Architektura... 13

Urządzenia peryferyjne procesora ColdFire

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie mikrokontrolerów. 15 stycznia 2008

Układy czasowo-licznikowe w systemach mikroprocesorowych

Programowanie mikrokontrolerów. 8 listopada 2007

Zastosowania mikrokontrolerów w przemyśle

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

Mikrokontroler AVR ATmega32 - wykład 9

Wykład 2. Przegląd mikrokontrolerów 8-bit: -AVR -PIC

Szkolenia specjalistyczne

Wbudowane układy komunikacyjne cz. 1 Wykład 10

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Instrukcja do zajęć laboratoryjnych. Numer ćwiczenia: 4

Programowanie mikrokontrolerów 2.0

dokument DOK wersja 1.0

Programowanie Mikrokontrolerów

PUNKTOWE STEROWNIKI VERSAMAX MICRO

TECHNIKA MIKROPROCESOROWA II

Wstęp: Interfejs portu równoległego 6821 i portu szeregowego 6850 firmy Motorola

Kod produktu: MP01105T

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

2. Architektura mikrokontrolerów PIC16F8x... 13

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Kod produktu: MP01105

Architektura mikrokontrolera MCS51

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

Przetworniki analogowo-cyfrowe (A/C)

Architektura mikrokontrolera MCS51

MIKROPROCESORY architektura i programowanie

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Opis procedur asemblera AVR

Kurs Elektroniki. Część 5 - Mikrokontrolery. 1/26

Pamięci i urządzenia peryferyjne Wprowadzenie do przedmiotu

Komunikacja w mikrokontrolerach Laboratorium

ADVANCE ELECTRONIC. Instrukcja obsługi aplikacji. Modbus konfigurator. Modbus konfigurator. wersja 1.1

Charakterystyka mikrokontrolerów. Przygotowali: Łukasz Glapiński, Mateusz Kocur, Adam Kokot,

Architektura Systemów Komputerowych. Transmisja szeregowa danych Standardy magistral szeregowych

INTERFEJSY SYSTEMÓW ELEKTRONICZNYCH. Interfejsy klasy RS

Przemysłowe Sieci informatyczne

Wbudowane układy peryferyjne cz. 3 Wykład 9

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH. PROCESORY OSADZONE kod kursu: ETD 7211 SEMESTR ZIMOWY 2017

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Tab. 1. Opis wyprowadzeń układu SC16IS760

Struktura QSM (Queued Serial Module)

SYSTEM PRZERWAŃ ATmega 32

Podstawowe urządzenia peryferyjne mikrokontrolera ATmega8 Spis treści

Porty GPIO w mikrokontrolerach STM32F3

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

SAIA PROGRAMOWALNY STEROWNIK PLC

Wykład 12. Przetwornik ADC

1.10 MODUŁY KOMUNIKACYJNE

IC200UDD110 ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO

TECHNIKA MIKROPROCESOROWA II

2. Budowa układów procesorowych rodziny TMS320C

Układ transmisji szeregowej AVR

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Współpraca procesora z urządzeniami peryferyjnymi

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Układy zegarowe w systemie mikroprocesorowym

CompactPCI. PCI Industrial Computers Manufacturers Group (PICMG)

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Instytut Teleinformatyki

Architektura komputerów

Podstawy systemów mikroprocesorowych. Interfejs USART. Interfejsy szeregowe w mikrokontrolerach AVR

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Transmisja danych cyfrowych

Start Bity Bit Stop 1 Bit Par Rys. 1

MODUŁ UNIWERSALNY UNIV 3

LABORATORIUM. TIMERY w mikrokontrolerach Atmega16-32

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

Karta katalogowa JAZZ OPLC JZ20-T40/JZ20-J-T wejść cyfrowych, 2 wejścia analogowe/cyfrowe, 2 wejścia analogowe. 20 wyjść tranzystorowych

Temat nr 5. System czasu rzeczywistego bazujący na stałopozycyjnym procesorze sygnałowym. LABORATORIUM Procesory i komputery przemysłowe

Wstęp. Opis ATMEGA128 MINI MODUŁ VE-APS-1406

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

Samba OPLC SM35-J-T20

Transkrypt:

Procesory osadzone ETD 7211 ADC, DAC, UART, CLK W5 19.11.2018

Load and stroe

Programowanie Zapis w C: IOSET1=0x00008000; IOSET1 = (1 << 15) Pętla opóźniająca: for (i=0; i <1000000, i++); Pętla nieskończona: while(1) lub for (; ;); W asemblerze już tak kolorowo nie jest, ponieważ: operuje się na adresach pamięci a nie na nazwach symbolicznych, zapalenie diody wygląda tak: załaduj do rejestru ogólnego przeznaczenia R0 adres rejestru kierunku IODIR, załaduj do innego rejestru ogólnego np. R1 konfigurację bitów, umieść wartość z R1 pod adresem R0 IODIR = 0xE002 8008 IOSET = 0xE002 8004 IOCLR = 0xE002 800C IOPIN = 0xE002 8000 LDR R0, =0xE0028004 LDR R1, =(1<<15) STR R1, [R0]

Rozkazy przesłań z/lub do pamięci Do przesyłania danych pomiędzy rejestrami a pamięcią służą rozkazy: LDR Load Register: LDR Rd, adres STR Store Register: STR Rz, adres Adres zawiera: adres bazowy znajdujący się w jednym z rejestrów ogólnych R lub licznik rozkazów PC (mowa o adresowaniu względnym), przesunięcie względem adresu bazowego Wszystkie operacje wykonywane są na rejestrach a nie na pamięci!

przerwania

Rodzaje przerwań w układach ARM Przerwania ARM Programowe SWI SWI - Software Interrupt IRQ - Interrupt Request FIQ - Fast Interrupt Request Timer, ADC, External Interrupt, DMA. itp szybkie Sprzętowe IRQ, FIQ wektorowe niewektorowe

System przerwań w układach ARM - obsługa przerwań/wyjątków W momencie wystąpienia wyjątku: zawartość CPSR wędruje do SPSR_<mode> ustawione zostają odpowiednie bity zmianie ulega tryb pracy w razie potrzeby blokowane są przerwania adres powrotu w LR_<mode> Aby powrócić, obsługa wyjątku przywraca CPSR z SPSR_<mode> przywraca PC z LR_<mode> 0x1C 0x18 0x14 0x10 0x0C 0x08 0x04 0x00 FIQ IRQ (Reserved) Data Abort Prefetch Abort Software Interrupt Undefined Instruction Reset Tablica wektorów

VIC kontroler przerwań Magistrala Local Bus ARM 7TDMI nfiq nirq Kontroler przerwań VIC PLL F XTAL F CLK Magistrala AHB SRAM Flash Most AHB/VPB RAM USB, Ethernet Magistrala VPB (VLSI Peripheral Bus) Szybkie porty GPIO ADC, CA, PWM, SPI, I2C, RTC, USB, Timer porty GPIO

ADC

Peryferia przetwornik ADC - na przykładzie LPC2368 Parametry przetwornika ADC: 6 kanałów multipleksowany, konwersja od 3 do 10 bitów, zakres pomiarowy 0 3V, indywidualny rejestr wyniku dla każdego kanału, przetwarzanie na zasadzie sukcesywnej aproksymacji, czas przetwarzania ~ 2,44 µs ziarno: q=u/2 N = 3/1024 = 2,93 mv 10

Peryferia przetwornik ADC - na przykładzie LPC2368 Magistrala AHB, APB Piny wejściowe: P0.23, P0.24, P0.25, P0.26, P1.30, P1.31 ADC DANE rejestry sterujące 11 V REF GND V CC

wejścia analogowe Peryferia przetwornik ADC - na przykładzie LPC2368 - Budowa rejestrów przetwornika ADC P0.23 31 AD0STAT 0 AD Status Register P0.24 AD0INTEN AD Interrupt Enable Register P0.25 ADnDR5 ADnDR0 AD0DRn AD Data Register n-channel P0.26 AD0GDR AD Global Data Register P1.30 P1.31 AD0CR AD Control Register 12

Peryferia przetwornik ADC - na przykładzie LPC2368 procedura obsługi Procedura włączenia przetwornika wymaga kilku kroków: START REJ. PCONP bit PCAD Power Control Peripheral włączenie AD REJ. AD0CR bity: SEL, CLKDIV, BURST AD Control Register preskaler REJ. AD0CR bit PDN AD Control Register aktywowanie AD REJ. PINMODE, PINSEL - multiplekser wyjściowy, stan linii REJ. PCLK_SEL0 PCLK_ADC Peripheral Clock wybór źródła sygnału T Przerwanie N 13

14 PCLKSEL0 taktowanie układów peryferyjnych

15 PCLKSEL0 taktowanie układów peryferyjnych

Peryferia przetwornik ADC - na przykładzie LPC2368 procedura obsługi T Przerwanie N REJ. AD0INTEN AD Interrupt Enable Register źródłem przerwania konwersja na danym kanale, źródłem przerwania informacja o zakończonej konwersji (flaga DONE w AD0GDR) REJ. AD0CR AD Control Register Bity 26:24 START = 001 rozpoczęcie konwersji napięcia wejściowego na postać cyfrową T bit DONE =1 N VICVectCnt VICVectAddr VICIntEnable Pobierz wynik z AD0DRn lub AD0GDR 16

Peryferia przetwornik ADC - rejestr AD0CR - A/D Control Register Zawartość rejestru AD0CR SEL selektor kanału, wybór wejścia na którym dokonywany będzie pomiar, CLKDIV preskaler, przez zawartość tego rejestru podzielony zostanie sygnał taktujący, przetwornik AD, formalnie: (PCLK/CLKDIV)+1, BURST tryb pracy, bit =0, programowa kontrola działania przetwornika, 1-obsługa sprzętowa automatyczna multipleksacja kanałów z dokładnością określoną przez CLKS, CLKS liczba okresów zegara przypadająca na cykl przetwarzania przetwornika AD PDN ograniczenie zasilania układu przetwornika, 1 tryb normalny, 0 tryb ograniczony START pole bitów umożliwiające zatrzymać lub rozpocząć konwersję, użytkownik może ustawić źródło sygnału wyzwalające pomiar EDGE bit ma znaczenie jeżeli w polu START został wybrany sygnał wyzwalający, bit ten odpowiada ze zbocze wyzwalające, 1 opadające, 0 rosnące 17 Przetwornik ADC taktowany jest sygnałem PCLK (Peripherial Clock), częstotliwość przetwarzania musi być mniejsza od 4,5 MHz.

Peryferia przetwornik ADC - rejestr AD0CR - A/D Control Register Zawartość rejestru AD0CR 18

Peryferia przetwornik ADC - rejestr AD0GDR Global Data Register, AD0DRn Data Register AD0GDR CHN przedstawienie pochodzenia wyniku z danego kanału AD0DRn, gdzie n oznacza rejestr n-tego kanału WYNIK KONWERSJI 10 bitowy wynik przetwarzania sygnały z danego wejścia ADC, DONE po zakończeniu przetwarzania bit ten zostaje ustawiony w stan wysoki, OVERRUN nadpisanie zawartości rejestru wyniku (w trybie ciągłym) 19 Bit DONE stanowi idealne rozwiązanie na programową obsługę ADC! Wynik konwersji przechowywany jest w rejestrach AD0GDR i AD0DRn

Peryferia przetwornik ADC - rejestr AD0GDR Global Data Register, AD0DRn Data Register AD0STAT - A/D Status Register DONE 7:0 flagi zakończenia konwersji poszczególnych przetworników, OVERRUN 7:0 flagi nadpisania zawartości rejestru wyniku, ADINT flaga wystąpienia przerwania, bez identyfikacji kanału. AD0INTEN - A/D Interrupt Enable Register ADINTEN 7:0 odblokowanie przerwań od poszczególnych kanałów pomiarowych ADC, ADGINTEN 1 pojawienie się flagi DONE spowoduje wywołanie przerwania od ADC, 0 przerwania będą zgłaszane przez poszczególne kanały 20

Peryferia przetwornik ADC - przykładowy kod obsługi ADC LPC2368 int main (void) { IODIR1=0x0FFC0000; //linie P1.18 - P1.27 ustawione jako wyscia PCONP = (1<<12); // AD converter (ADC) power/clock control bit AD0CR = (1<<21); // PDN wlaczenie przetwornika AD PCLKSEL0 =(0<<25) (0<<24); PINSEL1 =(0<<15) (1<<14); // Wejście AD0 włączony AD0CR = ( 0x01 << 0 ) /* SEL=1,select channel 0~7 on ADC0 */ ( ( 12000000 / 1000000-1 ) << 8 ) /* CLKDIV = Fpclk / 1000000-1 */ ( 0 << 16 ) /* BURST = 0, no BURST, software controlled */ ( 0 << 17 ) /* CLKS = 0, 11 clocks/10 bits */ ( 1 << 21 ) /* PDN = 1, normal operation */ ( 0 << 24 ) /* START = 0 then A/D conversion stops */ ( 0 << 27 ); /* EDGE = 0 (CAP/MAT singal falling,trigger A/D conversion) */ while(1) { AD0CR = ( 1 << 24 ); /* Przetwornik wlaczony - Bity 26:24 = 001 - start konwersji */ do { val = AD0GDR; // Read A/D Data Register } while ((val & 0x80000000) == 0); // Petla zakonczy sie gdy warunek zwroci wartosc FALSE 21 } val = (val >> 6) & 0x03FF; val= (val<<18); IOPIN1= ~val; //stan niski - zapalnie diodek zgodnie z zawartoscia przetwornika ADC }

DAC

Peryferia przetwornik DAC - na przykładzie LPC2368 Przetwornik DAC N = 10 bitów, V REF = 3,3V, 23

Peryferia przetwornik DAC - na przykładzie LPC2368 Magistrala AHB, APB U WY = (słowo/1024) x V REF wyjście analogowe P0.26/AOUT DAC DANE rejestry sterujące 24 V CC GND V REF

Peryferia przetwornik DAC - na przykładzie LPC2368 DAC algorytm obsługi przetwornika DAC START REJ. PCLK_SEL0 Peripheral Clock wybór źródła sygnału REJ. PINMODE, PINSEL - multiplekser wyjściowy, stan linii DACR - Converter Register - zapis danej 10-bitowej 25 Funkcja generująca dowolny sygnał

Peryferia przetwornik DAC - na przykładzie LPC2368 DACR - D/A Converter Register WARTOŚĆ wartość binarna opisująca zadane napięcie wyjściowe, zgodnie z zaleznością WARTOŚĆ = 1024 x U WY /V REF BIAS wartość 0 czas konwersji 1 us, maksymalny prąd obciążenia 700 ua wartość 1 czas konwersji 2,5 us, maksymalny prąd obciążenia 350 ua Wysłanie danej do przetwornika: DACR = (WARTOSC & 0x3FF) << 6; 26

Peryferia przetwornik DAC - przykładowy kod obsługi ADC LPC2368 int main (void) { PCLKSEL0 = (0<<23) (0<<22); PINSEL1 = (1<<21) (0<<21); DACR = (1<<16); } while(1) { for (i=0; i<1024; i++){ DACR = (i & 0x3FF) << 6; delay(0x7000); } } 27

Peryferia przetwornik DAC - przykładowy kod obsługi ADC LPC2368 int main (void) { PCLKSEL0 = (0<<23) (0<<22); PINSEL1 = (1<<21) (0<<20); DACR = (1<<16); } while(1) { for (i=0; i<1024; i++){ DACR = (i & 0x3FF) << 6; delay(0x7000); } } 28

UART

Peryferia port szeregowy RS232 - na przykładzie LPC2368 Zgodny ze standardem 16550 Szybkość transmisji: 1200, 2400, 4800, 9600, 19200, 57600, 115 200 bitów/s 16-bit bufor dla nadawczo-odbiorczej kolejki FIFO UART1 tryb modemu 30

Peryferia port szeregowy RS232 - UART1 na przykładzie LPC2368 UART Universal Asynchronous Receiver Transmitter 3,3 V 0 1 2 3 4 5 6 7 P +8 V stan IDLE bit startu 0 5 8 bitów danych bit parzystości -8 V 31 LPC2368: UART0/2/3 UART1 możliwość budowy modemu bity stopu: 1, 2 lub 1.5

Peryferia port szeregowy RS232 - Transmisja synchroniczna Transmisja asynchroniczna Szybkość: 19200 b/s Szybkość: 19200 b/s 32

Konwersja poziomów Konwersja poziomów : od 3 do 25 to stan wysoki logiczne 1 powyżej +3 V to stan niski - logiczne 0 33

Pin Sygnał Nazwa Kierunek 1 DCD Data Carrier Detect In 2 RXD Receive Data In 3 TXD Transmit Data Out 4 DTR Data Terminal Ready Out 5 GND Ground - 6 DSR Data Set Ready In 7 RTS Request to Send Out 8 CTS Clear to Send In 9 RI Ring Indicator In 34 LPC2368: UART0/2/3 UART1 możliwość budowy modemu

Peryferia port szeregowy RS232 - szybkość transmisji Szybkość transmisji (Baud Rate) podawana zazwyczaj jako: np.9600 bodów czyli 9600 bitów na sekundę czas transmisji 1-bitu -> 1/9600 -> 104,16 µs 0 1 2 3 4 5 6 7 P STOP 12 x 104,16 µs = 1,25 ms Inne typowe szybkości transmisji danych: 110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600. 35

PINSEL Peryferia port szeregowy RS232 - rejestry 31 U1RBR 0 Receiver Buffer Register U1THR TransmitHoldingRegister U1DLL Divisor Latch LSB U1DLM Divisor Latch MSB TxD U1IER Interrupt Enable Register RxD U1IIR U1FCR Interrupt ID Register FIFO Control Register U1LCR Line Control Register U1LSR Line Status Register U1SCR Scratch Pad Register 36 U1TRE Transmit Enable Register

Peryferia port szeregowy RS232 - generator prędkości transmisji Generator prędkości transmisji stanowi 16-bitowy dzielnik sygnału PCLK (zegar układu), który generuje sygnał dla układu UART PCLK DZIELNIK Baud x16 Rejestr U1DLM tylko 8 bitów DZIELNIK = PCLK/ (16 x Baud Rate) Rejestr U1DLL tylko 8 bitów Do poprawnego działania układu UART, zegar modułu powinien mieć częstotliwość 16 razy większą niż wynikającą z szybkości transmisji 37 Przy założeniu PCLK=12MHz, Baud Rate =9600, Dzielnik = 78,125 Do rejestru U1DLL zapiszemy jednak wartość 78, a U1DLM = 0

Peryferia port szeregowy RS232 - generator prędkości transmisji 38 DLAB w LCR musi być ustawiony w celu dostępu do DLL I DLM http://www.nxp.com/documents/user_manual/um10211.pdf s.418

Peryferia port szeregowy RS232 - generator prędkości transmisji DLL i DLM umożliwiaja uzyskanie standardowej prędkości: 9600, 19200, 115200 itp. Dla rezonatora kwarcowego o częstotliwości podzielnej bez reszty (np. 11,0592 MHz). Budowa rejestru U0FDR - Fractional Divider Register MULVALLL mianownik 39 DIVADDVAL licznika

Peryferia port szeregowy RS232 - generator prędkości transmisji

Peryferia port szeregowy RS232 - generator prędkości transmisji PCLK = 14.7456 MHz, BR = 9600 DL est = PCLK 16 x BR = 14.7456 MHz (16 x 9600) = 96 6,51 4 = 1,628 DIVADDVAL = 0, MULVAL = 1, DLM = 0, DLL = 96 PCLK = 12 MHz, BR = 115200 DL est = PCLK (16 x BR) = 12MHz (16 x 115200) = 6,51 41 Szukamy dzielnika wartości 6,51 4 6,51 4 = 1,628 DLL = 4

Peryferia port szeregowy RS232 - generator prędkości transmisji PCLK = 14.7456 MHz, BR = 9600 DL est = PCLK 16 x BR = 14.7456 MHz (16 x 9600) = 96 DIVADDVAL = 0, MULVAL = 1, DLM = 0, DLL = 96 PCLK = 12 MHz, BR = 115200 DL est = PCLK (16 x BR) = 12MHz (16 x 115200) = 6,51 42 Szukamy dzielnika wartości 6,51 4 6,51 4 = 1,628 DLL = 4 DIVADDVAL = 5, MULVAL = 8, DLM = 0, DLL = 4

Peryferia port szeregowy RS232 - rejestry LCR - Line Control Register Budowa rejestru U1LCR - Line Control Register DLAB - Divisor Latch Access Bit zezwolenie na dostęp do dzielnika Break Control wstrzymanie transmisji Parity Select rodzaj kontroli parzystości Parity Enable kontrola parzystości Stop Bit Select bity stopu Word Length Select szerokość słowa danych od 5 (00b) do 8 (11b) bitów Baud Rate 9600, 8 bitów danych, brak kontroli parzystości i 1 bitu stopu: 43 U1LCR = 0b10000011=0x83

Peryferia port szeregowy RS232 - rejestry LSR - Line Control Register Budowa rejestru U1LSR - Line Status Register Error in RX FIFO (RXFE) Transmitter Empty (TEMT) zarówno bufor nad. i odb. puste Transmitter Holding Register Empty bit =1, U1THR pusty Break Control wstrzymanie transmisji Framing Error błąd ramki, brak bitu stopu Parity Error błąd parzystości Overrun Error nadpisanie nieodebranych danych Receiver Data Ready 0 odbiornik gotowy do odebrania danych 44 while (!(UxLSR & 0x20)); return (UxTHR = ch); while (!(UxLSR & 0x00)); return (UxRBR);

Peryferia port szeregowy RS232 - UART1 na przykładzie LPC2368 Procedura obsługi portu UART START REJ. PCONP bit PCUART1 Power Control Peripheral włączenie UART REJ. U1DLL i U1DLM Divisor Latch LSB, MSB wartość dzielnika REJ. PCLK_SEL0 bit PCLK_UART1 Peripheral Clock wybór źródła sygnału REJ. PINMODE, PINSEL - multiplekser wyjściowy, stan linii REJ. U1LCR bit DLAB Line Control Register parametry transmisji REJ. U0FCR bit FIFO enable FIFO Control Register T Przerwanie N 45

Peryferia przetwornik ADC - na przykładzie LPC2368 procedura obsługi T Przerwanie N REJ. U1LCR bit DLAB =0 Line Control Register T Nadawanie N VICVectCnt VICVectAddr VICIntEnable U1LSR & 0x20 załaduj U1THR T Odbiór 46 U1LSR & 0x01 pobierz U1RBR

Peryferia port szeregowy RS232 - rejestry LSR - Line Control Register Budowa rejestru U0FCR - FIFO Control Register RX Trigger Level po ilu znakach zostanie wygenerowane przerwanie Zarezerwowane TX FIFO Reset kasowanie znaków z nadajnika RX FIFO Reset kasowanie znajów z odbiornika FIFO Enable włączenie kolejki FIFO 47

Peryferia port szeregowy RS232 - rejestry IRR - Interrupt Identification Register U0IRR - Interrupt Identification Register U0IER - Interrupt Enable Register 48

Zegar systemowy CLK kilka pf 5 Źródło sygnału: generator sygnałowy, rezonator kwarcowy częstotliwość sygnału zegarowego: 1 MHz 24 MHz

5 Zegar systemowy CLK

Zegar systemowy możliwe ścieżki CLKSRCSEL PLLCON PLLCFG PLLSTAT PLLFEED 32 khz 24 MHz CCLK 5 PLLCLK

PLL- budowa pętli Current Controlled Oscillator N-DIVIDER M-MULTIPLIER 2 PLLCFG - mnożnik: 1-32768 (275 550) MHz 5 PLLCFG - dzielnik: 1-32 F CCO = (2 M F IN )/N Dla: N=16, M=125, F CCO = (18,432*2*125)/16 = 288 MHz

PLL- procedura inicjalizacji PLL - UM10211 str.42 START Odłącz pętlę PLL PLLCON = (0<<1) POTWIERDZ PLLFEED=0xAA, PLLFEED=0x55 Wyłącz pętlę PLL PLLCON = 0 POTWIERDZ PLLFEED=0xAA, PLLFEED=0x55 Zapisz wartość do N i M PLLCFG M(14:0), N(23:16) POTWIERDZ PLLFEED=0xAA, PLLFEED=0x55 Włącz pętlę PLL PLLCON = 1 POTWIERDZ PLLFEED=0xAA, PLLFEED=0x55 while (((PLLSTAT & (1<< 26))== 0)) 56 Ustaw podział dla rdzenia CCLKSEL (7:0) Wskaż źródło sygnału SSCS = (1<<5) N Sprawdź czy synchroniz.? PLLSTAT bit PLOCK

PLL- procedura inicjalizacji PLL - UM10211 str.42 while (((PLLSTAT & (1<< 26))== 0)) N Sprawdź czy synchroniz.? PLLSTAT bit PLOCK T Podłącz pętlę PLL PLLCON = 3 POTWIERDZ PLLFEED=0xAA, PLLFEED=0x55 57 N Sprawdź czy PLL działa z określoną częstotliwością? PLLSTAT bit PLLC T GOTOWE

Dane MAM Memory Acceleration Module Zadanie: przyspieszenie dostępu do pamięci FLASH 5 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

Kod sekwencyjny Dane i skoki Zarówno dane i kod MAM Memory Acceleration Module TRYB 0 TRYB 1 TRYB 2 Rdzeń ARM Rdzeń ARM Rdzeń ARM MAM MAM MAM FLASH FLASH FLASH 59 MAM tryby pracy: całkowicie wyłączony (tylko Flash), częściowo włączony (Flash + MAM), całkowicie załączony (MAM)

60 Dziękuję za uwagę