Sunteți pe pagina 1din 32

Curs1

Istoric
ARM a fost înființată în 1990 ca Advanced RISC Machines, ca o joint venture (o companie mixtă sau asociere în
participațiune, care reprezintă o înțelegere economică între două sau mai multe companii, în care părțile se decid să
formeze (pentru o perioadă limitată de timp) o entitate economică, cu active proprii, obținute din capitalul
membrilor asocierii) între Apple Computers, Acorn Computer Group, and VLSI Technology.
• În 1991 ARM introduce familia de procesoare ARM 6 (utilizată în Apple Newton, vezi Figura 1 3), și VLSI a devenit
beneficiarul inițial al licenței.

• Mai apoi, alte companii, incluzând Texas Instruments, NEC, Sharp și ST Microelectronics, au preluat licențe de
proiectare a procesorului ARM, extinzând aplicațiile acestuia la telefoanele mobile, hard diskurile din calculatoare,
asistenți digitali personali (personal digital assistants (PDAs)), sisteme de divertisment și la multe produse pentru
consumatori [5].

Conventii de denumire ARM


• Cu toate că numele de procesor poate varia, toate nucleele ARM împărtășesc o convenție de denumire comună

• Au existat două convenții principale de denumire în timpul duratei de viață a arhitecturii.

➢ Nuclee ARM clasice au numele ARM {x} { etichete}, cu variantele ulterioare care au adoptat un nume de
forma ARM {x} {y} {z} { etichete}.
➢ Începând cu anul 2004, toate nucleele ARM au fost lansate sub marca Cortex si au nume în forma Cortex- {x}
{y}.

• Pentru nucleele, cunoscute sub denumirea de Cortex, convenția de denumire este diferită, și mai ușor de urmat.
• Există trei familii Cortex: Cortex-A, Cortex-R, și Cortex-M:

• Familia Cortex-A este familia pentru calculatoare; procesoarele pentru aplicații.

➢ Acestea sunt proiectate ca și calculatoare pe deplin funcționale, capabile să ruleze în mod direct sisteme de
operare complexe. Sunt utilizate în telefoanele mobile, tablete și laptop-uri.

Familia Cortex-R este familia cu reacție rapidă; seria de procesoare pentru timp real.

Acestea sunt de multe ori mai puternice decât seria CortexM, dar sunt și mult mai reactive la stimuli externi.

• Se adaptează mai bine la situații solicitante, având latență (întârzierea) la întrerupere mai mică și răspuns în timp
real mult mai determinist, fiind adesea folosite în sistemele critice în care interpretarea datelor este esențială.

• Se regăsesc în dispozitive medicale, sisteme auto, și în dispozitivele de nivel inferior de controler, cum ar fi
controlere de hard disk.

• Familia Cortex-M este familia cu consum de putere ultra redus, de dimensiuni reduse, seria de microcontrolere.

• Acesta funcționează, în general, într-un punct de performanță mai mică decât seriile A sau R, dar poate rula bine
peste 100 MHz.

• De obicei, seria este construită sub formă de microcontrolere cu mai multe linii de intrare și de ieșire și este
proiectat pentru sistemele de dimensiuni și consum redus care se bazează pe multe intrări/ ieșiri digitale.

• Familia Cortex-M se regăsește în sistemele robotizate și electronice de consum redus și chiar au fost încorporate în
cablurile de transfer de date.

• Membrii acestei familii sunt adesea folosiți ca procesor de suport în dispozitive mai mari.

• De exemplu, nu este neobișnuit să găsim un procesor Cortex-M care realizează gestiunea energiei într-un dispozitiv
care realizează o aplicație de clasă mai mare.

Produce Arm Procesoare?


• ARM nu produce microcontrolere.
• ARM proiectează modele de procesoare și diverse componente de care proiectanții pe siliciu au nevoie și
vând aceste licențe la diverse companii de proiectare pe siliciu, inclusiv la furnizorii de microcontrolere.
• În mod obișnuit, aceste modele sunt denumite "Intellectualy Property" (IP) și modelul de afaceri este numit
de licențiere IP (vezi Figura 1 8 ).
• Alte activități ARM și ecosistemul ARM sunt prezentate în bibliografie sau CAP2.
CortexMx
Cortex-M0

• Cel mai mic procesor ARM – aproximativ 12000 de porți logice pentru configurația minimă.

• Este de consum extrem de redus și foarte eficient energetic Cortex-M0+

• Cel mai eficient procesor din punct de vedere energetic – are o dimensiune similară cu procesorul Cortex-M0, dar
cu caracteristici suplimentare la nivel de sistem și de depanare (toate opțional), dar are o eficiență mai mare decât
proiectul pentru procesorul Cortex-M0.

• Acesta suportă același set de instrucțiuni ca procesorul CortexM0.

Cortex-M1

• Este un proiect pentru cel mai mic procesor optimizat pentru aplicațiile care utilizează ariile de porți programabile
(programmable Gate Array (FPGA)).

• Are același set de instrucțiuni și aceeași arhitectura ca și procesorul Cortex-M0, dar are facilități pentru memoria
sistem specifice FPGA.

Cortex-M3

• Procesorul Cortex-M4 conține toate caracteristicile procesorului Cortex-M3,

• are instrucțiuni suplimentare pentru a sprijini aplicațiile DSP

• are o opțiune pentru a include o unitate de calcul în virgulă flotantă (FPU).

• Are aceleași caracteristici la nivel de sistem și de depanare ca și procesorul Cortex-M3.

Cortex-M7

• Este un procesor de înaltă performanță conceput pentru a acoperi spațiile aplicațiilor în cazul în care procesoarele
Cortex-M3 și M4 nu fac față.

• Setul de instrucțiuni este un super set al procesorului Cortex-M4, de exemplu,

suportă calculele în virgulă flotantă în simplă precizie dar și în dublă precizie.

• De asemenea, are multe caracteristici avansate, care sunt, de obicei se găsesc în procesoarele evoluate( high-end),

cum ar fi cache-urile și predicția ramificațiilor.

Cortex-M23

• Procesorul Cortex-M23 este un procesor foarte compact, cu două etaje pipelinje, care suporta setul de instrucțiuni
pentru linia de bază Armv8-M.

• Cortex-M23 cu TrustZone este procesorul ideal pentru aplicații încorporate cu constrângeri , unde securitatea este
o cerință cheie.

• TrustZone pentru Armv8-M oferă o izolare între resursele de încredere ale sistemului și cele de încredere de pe
dispozitivul Cortex-M23,

• menține în același timp o manevrare eficientă a excepțiilor și determinismul care a fost semnul distinctiv al tuturor
procesoarelor Cortex-M.
Cortex-M33

• Cortex-M33 a fost dezvoltat pentru a aborda toate piețele sistemelor încorporate și IoT, în special cele care
necesită o securitate eficientă sau un control al semnalului digital.

• TrustZone pentru Armv8-M este fundamentul securității pentru toate aplicațiile încorporate.
• Procesorul are multe caracteristici opționale, cum ar fi DSP, o interfață co-procesor, unități de protecție a
memoriei și o unitate cu virgulă mobilă.

• Interfața opțională de co-procesor deschide ușa pentru personalizare și extensibilitate pentru a reduce în
continuare consumul de energie al sistemului în prezența unor operații frecvente intensive.

• Cortex-M33 realizează un amestec optim între determinismul timpului real, eficiența energetică, productivitatea
software-ului și securitatea sistemului, care deschide noi perspective pentru multe aplicații și oportunități noi pe
diverse piețe.

Cortex Mx-Avantaje
Consum redus
în comparație cu alte proiecte de procesoare pe 32 de biți, procesoarele Cortex-M sunt relativ mici.

• Proiectele procesoarelor Cortex-M sunt optimizate pentru consum redus de energie.

• În mod curent, multe microcontrolere Cortex-M au un consum de putere mai mic de 200uA/MHz, iar unele dintre
ele au chiar bine sub 100 uA/MHz.
• În plus au suport pentru modurile de consum redus (sleep) care pot fi utilizate cu diferite tehnologii avansate de
proiectare pentru un consum de putere ultra redus.

• Toate acestea permit procesoarelor Cortex-M să fie utilizate în producția de microcontrolere cu consum de putere
ultra redus.

Performanțe
• Vezi Tabelul 1 8.

• Aceste performanțe permite microcontrolerelor CortexM3,M4 și M7 să gestioneze multe aplicații complexe și


solicitante.

• Ca alternativă, se pot rula aplicațiile cu o viteză de ceas mult mai mică, pentru a reduce consumul de energie.

Eficiență energetică

• Combinând caracteristicile de consum redus cu cele de înaltă performanță, procesoarele Cortex-M3, -M4 au o
excelentă eficiență energetică.

• Acest lucru înseamnă că, se pot realiza încă o mulțime de prelucrări, cu o cantitate limitată de energie.

• Sau se poate realiza o sarcină mai repede după care procesorul trece în modul cu consum redus (sleep) pentru
durate mai lungi de timp, permițând o viață mai lungă a bateriei în produse portabile.

Densitatea de cod

• Setul de instrucțiuni ISA Thumb oferă o excelentă densitate de cod.

• Acest lucru înseamnă că, pentru a realiza aceleași sarcini, este nevoie de un program de dimensiune mai mică.

• Ca rezultat, se pot reduce costurile și consumul de energie prin utilizarea unui microcontroler cu o dimensiune mai
mică de memorie flash, iar producătorii de cipuri pot produce cipuri de tip microcontroler cu capsule mai mici.

Întreruperile

• Procesoarele Cortex-M3,-M4 au în proiect un controler de întreruperi configurabil, care poate suporta până la

240 de întreruperi vectorizate și niveluri multiple de priorități de întrerupere (de la 8 la 256 niveluri).

• Imbricarea întreruperilor este gestionată în mod automat de hardware,

• Latența întreruperii este de numai 12 de cicluri de ceas pentru sistemele de memorie cu zero stări de așteptare.

• Capacitatea de procesare a întreruperilor face ca procesoarele Cortex-M să fie potrivite pentru multe aplicații în
timp real.

Ușor de utilizat, C prietenos

• Procesoarele Cortex-M sunt foarte ușor de utilizat.

• De fapt, acestea sunt mai ușor de utilizat în comparație cu multe procesoare de 8 biți, deoarece procesoarele
CortexM au o hartă de memorie simplă și liniară,

• Nu există restricții arhitecturale speciale, care pot fi găsite adesea în microcontrolere pe 8 biți (de exemplu,
memorie organizată pe bancuri, niveluri limitate de stivă, cod nonreentrant, etc.).

• Se poate programa aproape totul în C, inclusiv handler-ul de întrerupere.


Scalabilitatea

• Familia de procesoare Cortex-M permite scalarea ușoară a proiectului de la

modele de cost redus (low-cost), microcontrolere simple, care costă mai puțin de un dolar per bucată,
lamicrocontrolere de mare performanță (high-end), care rulează la 200MHz sau mai mult.

• De asemenea, se pot găsi microcontrolere Cortex-M cu proiectare multiprocesor.

• Cu toate acestea, datorită coerenței arhitecturii procesorului, aveți nevoie doar de un singur set de instrumente și
există posibilitatea de reutilizare cu ușurință a software-ului.

Facilități de depanare

• Procesoarele Cortex-M includ multe facilități de depanare care permit să se analizeze cu ușurință problemele de
proiectare.

• Pe lângă caracteristicile standard de proiectare pe care le găsim în cele mai multe microcontrolere, cum ar fi
oprirea programului și execuția sa pas cu pas unic,

aici se poate genera, de asemenea, o trasare care să captureze fluxul programului, modificările de date,
informații pentru a genera un profil, și așa mai departe.

• În proiectele cu procesoare multiple, sistemul de depanare a fiecărui procesor Cortex-M poate fi înlănțuit
împreună cu a celorlalte procesoare pentru a partaja conexiuni de depanare.

Suport pentru sistemul de operare

• Procesoarele Cortex-M sunt proiectate având în vedere execuția unui sistem de operare (SO).

• Există mai multe facilități care permit implementarea ușoară a unui SO și care fac operațiile SO mai eficiente.

• În prezent, există peste 30 sisteme de operare înglobate (embedded) disponibile pentru procesoarele Cortex-M.
Cracteristici sistem versatile

• Procesoarele Cortex-M3,-M4 suportă un număr de caracteristici sistem, cum ar fi o zonă de memorie adresabilă la
nivel de bit (caracteristică denumită banda de biți) și unitatea de protecție a memorie (Memory Protection Unit (
MPU)).

Portabilitatea și reutilizabilitatea software-ului

• având în vedere că arhitectura este foarte C-prietenoasă, se poate programa aproape totul în standardul ANSI C.

• Una dintre inițiativele ARM numită CMSIS (Cortex Microcontroller Software Interface Standard) face programarea
pentru produsele pe bază de procesor Cortex-M și mai ușoară prin furnizarea de antet (header-e) standard un API
pentru funcțiile standard ale procesoarelor Cortex-M.

• Acest lucru permite o mai bună reutilizabilitate a software-ului și, de asemenea, face ca portarea codului unei
aplicații să fie mai ușoară.

Alegeri (dispozitive, instrumente, SO, etc.)

• Unul dintre cele mai bune lucruri privind utilizarea microcontrolerelor Cortex-M este numărul mare de alegeri
disponibile.

• Pe lângă miile de dispozitive de tip microcontroler disponibile, există, de asemenea, o gamă largă de alegeri:
privind instrumentele software de dezvoltare / depanare, sisteme de operare embedded, middleware, etc.
Cortex Mx-Instrumente
• Keil Microcontroller Development Kit (MDK-ARM)

• ARM DS-5 (Development Studio 5)

• IAR Systems (Embedded Workbench for ARM Cortex-M)

• Red Suite de la Code Red Rechnologies (acquired by NXP in 2013)

• Mentor Graphics Sourcery CodeBench (formerly CodeSourcery Sourcery gþþ)

• mbed.org

• Altium Tasking VX-toolset pentru ARM Cortex-M

• Rowley Associates (CrossWorks)

• CooCox

• Texas Instruments Code Composer Studio (CCS)

• Raisonance RIDE

• Atollic TrueStudio - ST

• GNU Compiler Collection (GCC)

• ImageCraft ICCV8

• Cosmic Software C Cross Compiler for Cortex-M

• mikroElektronika mikroC

• Arduino

• .....................

DEVICE DRIVER-ELE SOFTWARE

• Termenul device driver folosit aici este destul de diferit de sensul dintr-un mediu PC.
• Cu scopul de a ajuta dezvoltatorii de software pentru microcontroler, vânzătorii de microcontrolere furnizează de
obicei antet (header-e) și codurile C, care includ: Definiții ale registrelor perifericelor; Funcții de acces pentru
configurare și accesarea perifericelor.

• Prin adăugarea acestor fișiere la proiectele software, se pot accesa diverse funcții pentru periferice prin apeluri de
funcții și accesul ușor la regiștrii perifericelor.

• În cazul în care se dorește, se pot crea, de asemenea, versiuni modificate ale funcțiilor de acces, bazate pe
metodele prezentate în codul driver-ului, care să reprezinte versiuni optimizate pentru o aplicație particulară.

EXEMPLE

• Nu trebuie uitat a se descărca unele exemple de cod de pe site-ul vânzătorului microcontroler-ului.

• Cei mai mulți dintre furnizorii de microcontrolere pun codurile lor de tip device-driver și exemple pe site-urile lor
ca download-uri gratuite.

• Acest lucru poate salva o mulțime de timp în dezvoltarea de noi aplicații.

DOCUMENTAȚIA ȘI ALTE RESURSE

• În afară de manualele de utilizare ale microcontrolerelor, de multe ori, de asemenea, se pot găsi note de aplicații,
întrebări frecvente (FAQs) și forumuri de discuții online pe site-ul web al furnizorului de microcontrolere.

• Manualele de utilizare sunt esențiale, deoarece acestea oferă detalii despre modele de programare a perifericele.
• Pe site-ul ARM, documentația este plasată într-o secțiune numită Info Center (http://infocenter.arm.com).

• De acolo, se poate găsi de exemplu Cortex-M3/M4 Devices Generic User Guides (Ghiduri de utilizare utilizator
(referințe 2 și 3)), care se referă la modelul de programare a procesoarelor, precum și diverse note de aplicații.

• În cele din urmă, se poate, deasemenea, găsi o serie de note de aplicații utile și forumuri de discuții on-line de pe
site-uri web ale furnizorilor de instrumente de dezvoltare.

ALTE ECHIPAMENTE

• În funcție de aplicațiile care se dezvoltă și placa de dezvoltare care se utilizează, poate fi nevoie de hardware
suplimentar care să se conecteze la plăcile de dezvoltare, cum ar fi module de afișare LCD extern sau adaptoare de
interfață de comunicație.

• De asemenea, ar putea fi nevoie de unele instrumente de dezvoltare hardware cum ar fi o sursă de alimentare de
laborator, analizor logic/osciloscop, generator de semnal, etc.

Cortex Mx-Arduino
• Arduino [10] este o platformă open-source pentru realizarea de prototipuri ce se bazează pe un hardware și
software ușor de utilizat.

• Plăcile de dezvoltare Arduino sunt capabile să citească intrări - lumină pe un senzor, un deget pe un buton sau un
mesaj Twitter – și le transformă într-o ieșire – activând un motor, aprinderea unui LED, publicarea a ceva on-line.

• Se poate comanda placa să execute anumite sarcini prin trimiterea unui set de instrucțiuni microcontrolerului (ex:
ATmega168, ATmega328, ATmega32U4, ATmega2560, ATSAM3X8E (Cortex-M3), NUC131LD2AE (32-bit ARM Cortex-
M0), etc.) aflat pe placă.

• Pentru acest lucru trebuie să folosim limbajul de programare Arduino, bazat pe conexiuni, și software-ul Arduino
(IDE), bazat pe procesare.

• Arduino s-a dezvoltat la Institutul de Proiectare și Interacțiune IVREA ca un instrument simplu pentru realizarea de
prototipuri rapide, care vizau în special studenții care nu aveau cunoștințe despre electronică și programare.
• De îndată ce s-a ajuns la o comunitate mai largă, consiliul de administrație Arduino a început o schimbare pentru a
se adapta la noile nevoi și provocări, diferențiind oferta sa de la plăci simple pe 8 biți la produse pentru aplicații
IoT(Internet of Things (Internetul lucrurilor)), wearable, imprimare 3D, și pentru medii înglobate (embedded).

• Toate plăcile Arduino sunt complet open-source, oferind permisiunea utilizatorilor să le construiască în mod
independent și eventual să le adapteze la nevoile lor specifice.

• Software-ul, de asemenea, este open-source și este în creștere datorită contribuțiilor utilizatorilor din întreaga
lume.

Cortex Mx-CooCox
• CooCox [11] este un mediu al instrumentelor de dezvoltare pentru ARM liber și deschis pentru microcontrolere
ARM Cortex-M4, M3 și M0.

• CooCox oferă, gratuit, un instrument de dezvoltare software puternic pentru microcontrolerele ARM Cortex-M.

• Coocox Tools organizează și furnizează cunoștințele solicitate de către dezvoltatori.

• Este, de asemenea, și o platformă de rețea de socializare pentru dezvoltatorii embedded (de sisteme încorporate)
dar și o platformă de cunoștințe de dezvoltare embedded pentru utilizatori.

• CooCox poate organiza furnizarea de informații, extrage și partaja expertiză prin înțelepciune colectivă.

• Instrumentele de dezvoltare CooCox constau din diferite module, cum ar fi CoIDE, CoFlash, CoLinkEx, Coos,
CoCenter și CoAssistant.

Cortex Mx-mbed
• mbed simplifică și accelerează crearea și implementarea de dispozitive bazate pe microcontrolere ARM.

• Proiectul este dezvoltat de ARM, partenerii săi și de contribuțiile la nivel mondial ale Comunității Dezvoltatorilor de
mbed ARM. DESCRIERE MBED

• Există o platformă mbed ce oferă biblioteci gratuite de software, proiecte hardware și instrumente online

• pentru crearea rapidă de prototipuri profesionale ale produselor ce conțin microcontrolere ARM.

• Platforma include un SDK (Software Development Kit – Kit de dezvoltare software) bazat pe standardele C/C++, un

• HDK (Kitul de dezvoltare hardware – Hardware Development Kit) al microcontrolerului și plăci de dezvoltare
suportate, un compilator online și instrumente dezvoltator de colaborare online.

Cortex Mx-Keil

Cortex Mx-CMSIS
• CMSIS cuprinde următoarele componente: Nucleul CMSIS (CMSIS-core): API pentru nucleul procesorului Cortex-M
și periferice.
• Acesta furnizează o interfață standardizată pentru Cortex-M0, Cortex-M3, Cortex-M4, Cortex-M7, SC000 și SC300.
De asemenea, sunt incluse și funcții intrinseci SIMD pentru Cortex-M4 și instrucțiuni SIMD pentru Cortex-M7.

Driver CMSIS (CMSIS-driver): Definește interfețele driver-elor perifericelor generice pentru middleware făcându-le
reutilizabile pentru dispozitivele suportate.

• API este independent de RTOS (Real Time Operating System – Sistem de Operare de Timp Real) și conectează
perifericele microcontrolerului la middleware care implementează, de exemplu, stive de comunicație, sisteme de
fișiere sau interfețele grafice utilizator.

DSP CMSIS (CMSIS-DSP): O colecție de tipul librărie DSP ce cuprinde peste 60 de funcții pentru diverse tipuri de date:
virgulă fixă (fix-point) (fracțional q7, q15, q31) și virgulă mobilă simplă precizie (single precision floating-point) (32 de
biți).

• Biblioteca este disponibilă pentru toate nucleele Cortex-M.

• Implementările Cortex-M4 și Cortex-M7 sunt optimizate pentru setul de instrucțiuni SIMD. API RTOS CMSIS
(CMSIS-RTOS API): API comun pentru sistemele de operare în timp real.

• Acesta oferă o interfață de programare standardizată ce este portabilă pe multe RTOS și permite, prin urmare,
șabloane software, middleware, biblioteci și alte componente care pot lucra pe toate RTOS suportate.

Pachetul CMSIS (CMSIS-Pack): descrie părțile relevante, într-un XML bazat pe un fișier de descriere a pachetului
(PDSC), ale utilizatorului și ale dispozitivului dintr-o colecție de fișiere (numit pachet software), ce include sursa,
fișierele antet (header-ele), fișierul cu librării, documentația, algoritmii de programare Flash, template-urile codului
sursă și exemple de proiecte.

• Instrumente de dezvoltare și infrastructurile web utilizează fișierul PDSC pentru a extrage parametrii
dispozitivului,componentele software și configurațiile plăcii de evaluare.

Descrierea perifericelor din punctul de vedere al sistemului CMSIS (CMSIS-SVD): Descrierea din punctul de vedere al
sistemului pentru periferice.

• Descrie perifericele unui dispozitiv într-un fișier XML și poate fi utilizat pentru a crea o imagine a perifericului în
depanatoare sau fișiere header cu definițiile regiștrilor și întreruperilor.

Portul de acces pentru depanare CMSIS (CMSIS-DAP): Portul de acces pentru depanare (Debug Access Port).

• Standardizează firmware-ul pentru o unitate de Depanare (Debug) ce se conectează la CoreSight Debug Debug
Access Port.

• CMSIS-DAP este distribuit ca, și bine adaptat pentru integrarea pe plăcile de evaluare. pachet separat

• Această componentă este furnizată prin descărcare separată.


Cortex Mx-Aplicatii
• Un sistem înglobat include un microcontroler cu dispozitive mecanice, chimice și electrice atașate la acesta și
programate cu un scop specific toate acestea fiind considerate că formează un sistem complet.

• Un sistem înglobat reprezintă un mic calculator bazat pe un microprocesor/microcontroler specializat (dedicat) la


îndeplinirea unei sarcini anume, sau a câtorva sarcini, de obicei în „timp real” (aproape instantaneu).

• Un sistem înglobat poate fi o aplicație a unui sistem de calcul, spre deosebire de alte sisteme de calcul precum un
PC, supercalculator etc.

• Totuși definiția unui sistem înglobat este fluidă și greu de fixat deoarece tehnologiile evoluează constant iar
costurile de implementare hardware și software descresc dramatic.

Alte definiții se referă la sistemele înglobate ca fiind:

• Sisteme cu resurse hardware și software mult mai limitate decât un PC;

• Un sistem proiectat să execute o funcție dedicată;

• Un sistem cu cerințe privind calitatea și fiabilitatea altele ca la celelalte tipuri de sisteme de calcul;

• Unele sisteme de calcul mobile (telefoane sau tablete) denumite sisteme de calcul înglobate nu sunt chiar real
sisteme de calcul înglobate.

• Mașinile industriale, automobilele, echipamentele medicale, aparatele foto, aparatele de uz casnic, avioanele,
distribuitoarele automate și jucăriile (precum telefonul mobil și PDA-ul) se numără printre nenumăratele posibile
gazde ale unui sistem inglobat.

• Sistemele inglobate, care sunt programabile, sunt prevăzute cu interfețe de programare iar programarea
sistemelor integrate este o ocupație dedicată specialiștilor din domeniu.
Cortex Mx-Proiectare

Ciclul de viata al unui produs inglobat

• Software-ul trebuie rulat pe un emulator sau o placă similară până când hardware-ul final devine disponibil

• Producţia trebuie să fie masivă


Facilitati care determina alegerea procesorului

• Power :Battery Life (MIPS/Watt), Cooling (Fan?) ;Desktop PC 100 W vs. Battery power 200 mw

• Disponibilitatea :Disponibilitatea pe durată lungă, Furnizori multiplii?

Procesor ARM
• Licenţele proiectelor procesoarelor ARM’s sunt deja achiziţionate de peste 100 de producători de chip-uri. ARM nu
face chip-uri.

• Este utilizat în multe dispozitive cum ar fi telefoanele mobile, camere, jocuri portabile, Ipod Nano, HDTVs, şi în
boxe de înaltă clasă. 80% din procesoarele ARM sunt în telefoane.

• Subsetul ARM’s thumb instruction este codat pe 16 biţi şi este decompresat “din mers” în formatul pe 32 de biţi.
Poate comuta de la 16 la 32 de biţi la nivelul unei subrutine.

Procesoarele x86(IA-32)
• Este disponibilă o gamă largă de procesoare din punctul de vedere al performanţei.

• Majoritate procesoarelor X86 pentru PC-uri au fost optimizate pentru aplicaţii cu consum redus.

• Furnizorii principali de procesoare pentru PC-uri (Intel, AMD) se îndreaptă spre noile arhitecturi pe 64-biţi – dar alţi
producători fabrică procesoare X86 pentru dispozitive înglobate.
Cap2-Porturile de intere/iesire-pIE,AMBA si GPIO
Porturile de INTRARE/IESIRE(pIE)
Să ne reamintim că un microcontroler este un ansamblu constituit din: Unitatea Centrală de Prelucrare (UCP),
Memorie (M) și porturile de intrare / ieșire (pIE, conectate între ele prin magistrale.

Această magistrală conține magistrala de date, magistrala de adrese, și magistrala de control (aceasta conține
semnalele de control și de stare).

Porturi, periferice sau controler?

• pIE pot fi clasificate astfel:

porturi sistem (unele dintre ele denumite și controlere! – controler DMA, controler de întreruperi, controler de
memorie, etc.).

porturi de uz general (porturi binare intrare/ ieșire - IE, timer-e),

porturi de comunicație (Ethernet, USB, CAN, USART, I2C, SPI, I2S, IrDA,) ...etc.

porturi cu funcții speciale (CRC, criptare, hash, protocoale de comunicație, ...)


Să ne amintim că un pIE este prevăzut în general cu două interfețe : o interfață pentru cuplarea la magistrala sistem
pentru transferul de date cu UCP și M (interfață obligatorie pentru toate pIE); o interfață specializată în funcție de
tipul de pIE care de cele mai multe ori asigură conexiunea cu un dipozitiv IE (dIE) (la unele pIE această interfață poate
fi absentă, ca de exemplu la pIE pentru calculul CRC și în consecință lipsește și dIE).

Transferul datelor între aceste interfețe se desfășoară în conformitate cu sarcina (protocolul, funcția) pIE de către
un controler IE (cIE).

• Se poate spune că un dIE are două sarcini: să realizeze comunicația cu lumea din afară și, să memoreze date,iar un
cIE acționează ca o interfață între magistralele sistem și dIE, implementând detaliile fluxului de date cu procesorul și
memoria și asigurând interfața electrică.

• Un pIE este programabil și configurabil și realizează un transfer de informații.

• Din acest motiv majoritatea pIE sunt prevăzute cu regiștrii de stare, de comandă și de date – Ex. USART

• (Figura 2 1).

• Cum pot fi accesați regiștrii din pIE?

• Acești regiștrii pot fi accesați ca: Locații mapate în memorie (specific procesoarelor RISC), unde: citirea și scrierea
este similară cu citirea și scrierea în memorie; utilizează aceleași semnale de citire și de scriere în memorie;
majoritatea procesoarelor utilizează acest tip de mapare;

• Ca locații IE izolate (Pentium suportă ambele mapări) [14], [15]: există un spațiu I/E izolat; există semnale separate
de citire scriere față de cele ale memoriei;

Cum se realizează transferul între pIE și UCP sau memorie?

• prin operații I/E programate (metodă denumită și polling (în buclă)) când UCP testează periodic un bit de stare
pentru a realiza transferul.

• În acest caz transferul este inițiat și terminat sub controlul programului executat pe UCP;

Porturile de INTRARE/IESIRE(pIE),prin intreruperi


• Prin întreruperi, când transferul este inițializat de UCP prin programarea pIE și a controlerului de întreruperi (dacă
există), și are loc la inițiativa pIE prin generarea de către acesta a unei întreruperi.

• Programul curent al procesorului este suspendat și controlul este transferat automat unei rutine de tratare a
întreruperii care are rolul de a termina transferul și a achita sursele generatoare de întreruperi.

• La sfârșit trebuie transferat controlul înapoi programului întrerupt ca și cum nimic nu s-ar fi întâmplat, adică
trebuie conservat contextul procesorului.

• Unele salvări sunt automate pe stivă sau în regiștrii speciali, altele trebuie realizate de programatorul rutinei
(denumită și handler) de tratare a întreruperii.
• Uzual gestiunea întreruperilor se realizează de un controler de întreruperi care printre altele trebuie să capteze
întreruperile, să le activeze/ dezactiveze, să le prioritizeze, să asigure celulele capcană de transfer al controlului, să
permită achitarea acestora, etc.

• Avantajul metodei este acela că procesorul nu stă în buclă pentru a identifica sfârșitul transferului.

• Întreruperea indică acest sfârșit și este implementată prin hardware.

Porturile de INTRARE/IESIRE(pIE),prin DMA


• Prin acces direct la memorie (Direct Memorii Access- DMA).

• În acest caz, definirea transferului este dată de UCP care programează pIE și controlerul DMA, pentru transfer.

• Inițiativa transferului este a pIE, transferul propriu-zis este realizat de controlerul DMA prin preluarea
magistralelor sistem asigurând transferul datei între pIE și M, și tot controlerul DMA indică sfârșitul unui transfer prin
generarea unei întreruperi [14], [15].

Cum pot fi pIE în raport u uC?

• În raport cu microcontrolerul pIE pot fi: interne, integrate pe același chip cu microcontrolerul, externe, care se pot
cupla în afara microcontrolerului utilizând pIE interne comune cum ar fi: un controller de memorie externă, pini IE
care prin software simulează interfața de conectare, magistrale seriale precum I2C (Inter-Integrated Circuit), SPI
(Serial Peripheral Interface), SSI (Serial Peripheral Interface Bus), I2S (Inter-IC Sound) , USART (Universal
Synchronous/Asynchronous Receiver/Transmitter), etc.

Porturile de INTRARE/IESIRE (pIE),pIE-ARM


Ce realizează ARM referitor la pIE?

• Deoarece în cadrul acestui curs vom analiza familia Cortex Mx, este firească întrebarea dacă ARM realizează și IP-
uri pentru pIE.

• După cum s-a prezentat în 1.2.3 ARM nu produce și nu vinde chip-uri, dar în unele cazuri realizează proiectarea
unor chipuri de test pentru cercetare&dezvoltare sau pentru scopuri de verificare la nivel sistem (nu vinde aceste
produse).

• ARM face bani utilizând un model de afaceri denumit licențierea Intellectual Proprieties (IP).

• Atunci când un producător de chipuri dorește să creeze un chip, acesta trebuie să obțină licența pentru procesor și
să plătească o taxă către ARM.

Ce realizează ARM referitor la pIE?

• Mai departe proiectanții lor de chip-uri pot accesa proiectul procesorului ARM pentru care au licență și pot să-l
integreze în chip-ul lor.

• Când producătorii de chip-uri vând chip-ul aceștia trebuie să plătească către ARM o taxă de continuare a utilizării
licenței (royalty fee).

• În afară de procesor ARM furnizează și alte IP-uri (Vezi Anexa 3) care includ și pIE.
• Trebuie subliniat faptul că unele microcontrolere conțin IP-uri ARM multiple ca procesoare, componente de
infrastructură pentru magistrale, periferice, controlere de memorie și IP-uri fizice.

• Pentru mai multe detalii privind ecosistemul ARM vezi, de asemenea, Anexa 3.

PIE;magistrale AMBA
Ce este AMBA?

• Advanced Microcontroller Bus Architecture, sau AMBA, este o magistrală SoC utilizată și de microcontrolerele
Cortex Mx.

• AMBA, furnizată de ARM, descrie un set generic de magistrale pentru utilizarea în SoC-uri, ASIC-uri (Application-
specific integrated circuits) și microcontrolere.

• Standardul AMBA a fost realizat prima dată în 1996 este un standard deschis care permite utilizarea sa de către
toți producătorii de SoC-uri care utilizează procesoare ARM în SoCul lor.

• AMBA conține două tipuri de magistrale: magistrale sistem de mare performanță care conectează IP-uri atașate
nucleelor procesor, și o magistrală flexibilă pentru periferice (pIE) pentru a conecta o multitudine de periferice și
componente.

De ce este considerată AMBA un pIE sistem?

• Deoarece la nivelul acestor magistrale există regiștri de configurare, care permit activarea/ dezactivarea IP-urilor
conectate, selectarea frecvenței de lucru, etc.

• Aceasta implică scrierea unui program de configurare ca și la celelalte periferice

• AMBA utilizează terminologia specifică pentru componentele unui SoC.

Terminologie AMBA?

• Master - un dispozitiv master, conectat în mod uzual la o magistrală cu un flux mare de date, este un IP capabil să
inițieze o comunicație pe magistrală.

• Slave - Un dispozitiv de tip slave (sclav) răspunde la cererea de comunicație a unui dispozitiv master (pIE, controler
de memorie, de rețea, dar și DSP-uri, etc).

• Arbitru - deoarece un SoC poate conține dispozitive master multiple, este necesară o arbitrare corespunzătoare.

• În sistemul ASB (Advanced Sytem Bus) din Figura 2 3. este disponibil un arbitru centralizat la care se conectează
direct toate dispozitivele master din sistem, și care furnizează accesul la magistrală utilizând o anumită schemă de
planificare.

• Schema de planificare pentru arbitrarea centralizată poate fi de tip round-robin, pe bază de priorități, etc.

Terminologie AMBA?

• Decoder - Dispozitivele master utilizează magistrala de adrese de interconectare pentru a selecta slave-uri.

• Un decodor decodează adresa (sau o parte a acesteia) și generează semnale relevante de control pentru a valida
slave-uri.

• De exemplu, în Figura 2 3, decodorul citește adresa emisă de către master-e, și o translatează într-un semnal DSel0
de selecție a unui slave, semnal utilizat de controlerul slave de memorie.

Terminologie AMBA?

• Bridge (Pod) - AMBA oferă o magistrală avansată pentru periferice (APB), care este utilizată pentru a conecta mai
multe IP-uri pIE (periferice) la un SoC.

• Un bridge permite unui master conectat pe o magistrala de sistem să comunice cu un pIE (dispozitiv periferic),
chiar dacă acestea nu partajează același protocol de comunicație.
Semnale AMBA pentru comunicație?

• Magistrala de date:

O magistrală de date este utilizată de IP-uri pentru a scrie și a citi date. Este, în general, de lățime fixă, iar în AMBA
magistrale de date sunt de 32 de biți. Fiecare master și slave într-un SoC poate citi sau scrie date pe magistrala de
date, așa cum se arată în Figura 2 3. Cu toate acestea, numai un singur dispozitiv are permisiunea să utilizeze
magistrala de date la un moment dat, cu scopul de a menține coerența datelor.

Semnale AMBA pentru comunicație?

• Magistrala de adrese: O magistrală de adresă permite IP-urilor să specifice adrese fizice. Magistralele AMBA de
adrese sunt în mod tipic adrese pe 32 de biți. Fiecare IP în sistem se poate conecta la magistrala de adrese, dar
numai unui singur IP îi este permis să citească/scriere în orice stare. În plus față de specificarea adreselor fizice,
magistrala de adrese este citită de decodorul de magistrală pentru a genera semnale de selecție a slave-urilor (cum
ar fi DSel0 în Figura 2 3), care permite master-ului să selecteze un anumit slave.

Semnale AMBA pentru comunicație?

• Semnale de control: magistralele AMBA furnizează linii dedicate punct-la-punct pentru IP-uri pentru ca acestea să
comunice informații de control relevante, cu ajutorul semnalelor de control. Exemplele includ semnale de arbitraj
(cum ar fi AREQ0, AGNT0 în Figura 2 3), semnalele de tip scrie/citește (cum ar fi BWRITE în Figura 2 3), semnale de
selecție a slave-urilor (cum ar fi DSel0 în Figura 2 3) etc.?

• Tranzacție AMBA?
• Magistralele bazate pe AMBA oferă mai multe tipuri de tranzacții.

• O tranzacție poate fi o citire (un master citește de la un slave), o scriere (un slave citește data scrisă de un master).
• În mod similar, o tranzacție poate fi un singur transfer, caz în care se transferă un singur pachet de date (citit/scris),
sau un transfer în salvă, care permite ca mai multe pachete să fie transferate în aceeași tranzacție.

• Transferurile în salvă sunt utile în operații cu date de lărgime mare de bandă cum ar fi filarea unei lini cache.

• În plus, AMBA prevede mecanisme de raportare a erorilor (de exemplu, atunci când un slave nu reușește să
citească sau să scrie corect).

• Fiecare magistrală AMBA are capacități diferite în ceea ce privește tranzacțiile pe care le poate suporta, și
protocolul de comunicație poate, de asemenea, să difere față de alte magistrale AMBA.

Magistrale AMBA pentru microcontrolere?

• Prima versiune de AMBA conținea doar două magistrale – o magistrală sistem și o magistrală pentru periferice
(pIE).

• Versiunile actuale AMBA 4 și 5, conțin o colecție largă de magistrale de înaltă performanță și interfețe.

• Magistralele AMBA 3 sunt utilizate de preferință în microcontrolere

• AHB –Advanced High-performance Bus (coloana vertebrală a sistemului – magistrală sistem) Performanțe de nivel
înalt, frecvență mare de ceas a modulelor de pe magistrală Conectează UCP cu M internă, interfața cu memoria
externă, alte periferice sistem.

• APB -Advanced Peripheral Bus Cerințe de performanță pentru consum redus de putere Conectează pIE (periferice)
de consum redus Interfață de complexitate redusă.

Alte magistrale AMBA?

• ASB - Advanced System Bus (alternativă de înaltă performanță la AHB) ; AXI - Advanced eXtensible Interface ; ACE -
AXI Coeherency Extension ; ATB - Advanced Trace Bus ; PPB – Private Peripheral Bus (pIE pentru depanare, vezi ….).

Magistrala AMBA-AHB?

• Magistrala de AHB (Advanced High Performance Bus) a fost prima dată propusă în AMBA 2, și a fost modernizată
mai târziu, în AMBA 3.

• Principalele caracteristici ale AMBA AHB pot fi rezumate după cum urmează:

Master-e multiple de magistrală (request grant între arbitru și fiecare master).

Pipelined (funcționare ca bandă de asamblare) și transferurile în salvă. De fapt faza adresă a oricărui transfer are loc
în faza de date a transferului precedent.

Tranzacții divizate. Slave-urile lente eliberează magistrala pe durata timpului mort

Configurații largi ale magistralei de date 32, 64 și 128 cu 32b pt. adrese

Implementări fără trei stări (nontristate). Mag. separate pt. citire și scriere.
Magistrala AMBA-AHB, AHB Lite

• Interfața AHB-Lite [22] (subcapitolul 14-6) suportă un singur master de magistrală și oferă operarea cu o lărgime
mare de bandă. De fapt, aceasta este singura interfață AHB, care este în prezent documentată de ARM. Aceasta
suportă:

Transferuri în salvă (burst)

Operare pe un singur front al ceasului Implementare Non-tristate

Configurări cu magistralei de date largi, 64, 128, 256, 512 și 1024 de biți.

Magistrala AMBA-AHB?, AHB cu mai multe straturi

• Specificația (caietul de sarcini) AHB multistrat (multilayer) [22] a fost realizată cu scopul de a crește lărgimea de
bandă totală a magistralei și de a oferi o arhitectură de interconectare mai flexibilă cu respectarea specificației
AMBA AHB.

• Acest lucru se realizează prin utilizarea unei matrice de interconectare mai complexă, care permite căi de acces
paralele între mai multe master-e și slave-uri într-un sistem.
Magistrala AMBA-APB?

• Interfața AMBA APB este destinată dispozitivelor pIE (periferice) de uz general, viteză mică și consum redus de
putere.

• Prin urmare, interfața APB permite izolarea traficului lent de date de interfețele AMBA 3 AXI și AHB de mare
performanță.

• Urmând filozofia de compatibilitate a AMBA, interfața APB este perfect compatibilă cu interfața AMBA 2 APB, ceea
ce face ca o mare varietate de periferice pentru APB existente, să fie disponibile pentru reutilizare.

• APB este o magistrală statică care oferă o adresare simplă, cu adrese zăvorâte (memorate la dezactivarea ceasului)
și semnale de control pentru o interfațare ușoară. Pentru a ușura compatibilitatea cu orice alt flux de proiectare,
toate tranzițiile de semnale APB pot avea loc numai pe frontul crescător al ceasului, necesitând pentru fiecare citire
și scriere câte cel puțin doi cicli.

• Principalele caracteristici ale acestei magistrale sunt următoarele: Arhitectură fără pipeline (unpipelined)Utilizarea
unui număr redus de porți Operare cu consum redus de putere Reducerea încărcării sistemului principal este
obținută prin izolarea pIE (perifericelor) în spatele unui pod (bridge). Semnalele acestei magistrale sunt active numai
pe durata unui transfer cu periferice de bandă îngustă.

• Operarea AMBA APB poate fi abstractizată ca o mașină de stare cu trei stări.

• Starea implicită pentru APB este IDLE, care comută în starea SETUP când se cere un transfer.
• Această stare durează doar un ciclu în care este activat semnalul de selecție al pIE.

• Magistrala trece apoi în starea ENABLE, care durează tot un ciclu, și care necesită ca semnalele de adresă, control și
de semnale de date să rămână stabile.

• Apoi, în cazul în care alte transferuri urmează să aibă loc, magistrala trece înapoi la starea SETUP, iar în caz contrar
trece în starea IDLE (ÎN AȘTEPTARE).

• După cum se poate observa, AMBA APB ar trebui să fie utilizată pentru a interfața orice pIE (periferice) care
necesită o lărgime de bandă mică și nu necesită performanțele înalte ale unei interfețe de magistrală cu pipeline.

• Specificația interfeței AMBA 3 AMBA trace bus (ATB) adaugă o interfață de diagnosticare de date pentru a urmări
date într-un sistem de urmărire folosind specificația AMBA.

• ATB este o magistrală comună folosită de componentele de urmărire (trasare) pentru a trece prin sistem date de
urmărire cu format independent.

• Atât componentele de urmărire cât și magistrala sunt plasate în paralel cu pIE realizând interconectarea și
furnizând vizibilitate cu scop de depanare.

• Interfețele ATB pot juca două roluri diferite, în funcție de sensul de transfer al datelor de urmărire. Pe de o parte,
interfața este Master în cazul în care generează date de urmărire. Pe de altă parte, o interfață Slave primește datele
de urmărite.

PIE-GPIO
Ce este GPIO?

• Intrările/ ieșirile de uz general (General Purpose Input/ Output - GPIO) reprezintă un pIE care permite schimbul de
informații digitale (binare) cu lumea exterioară (reală).

• GPIO este un port paralel, accesul la acesta realizându-se la nivel de cuvânt, care poate fi pe 8, 16, 32, sau chiar 64
de biți, în funcție de organizarea de la nivelul microcontrolerului.

• Unele microcontrolere (majoritatea microcontrolerelor sunt prevăzute cu GPIO) permit accesul și la nivel de bit.

• GPIO pot fi intrări digitale, ieșiri digitale sau intrări/ ieșiri digitale

• programabile la care pinii asociați ai microcontrolerului pot avea funcții alternative selectabile.

Aplicații GPIO?

• Comenzi digitale (1 bit) aprinderea/ stingerea unui indicator luminos, ca de exemplu un LED, un bec, lampă de
avertizare, etc. ;comanda unui dispozitiv sonor precum o hupă, un buzzer, etc, comanda unui releu sau contactor
(incluziv al celor statice), care să determine pornirea/ oprirea unui motor, deschiderea unei uși sau ferestre,
comanda stolurilor, închiderea/ deschiderea unei vane, comanda bipozițională a unui proces, selectarea unei opțiuni
pentru alte pIE interne sau externe).

• Intrări digitale (1 bit) citirea stării unui contact, care poate fi de releu, contactor, tastă, switch, ștrap (călăreț, care
face mecanic scurt între doi pini, dintre care unul este conectat la masă iar celălalt la o intrare a uC și cu o rezistență
la o tensiune care reprezintă 1 logic, și care poate fi utilizat pentru configurare). citire stării logice 0 sau 1 a unui
senzor, cum ar fi senzorii în infraroșu, de proximitate, de poziție, de prezență, etc. citirea stării logice a altui pin al uC
sau a unui pIE extern.

• Implementarea unor interfețe pe care nu le are uC sau nu sunt standard conectarea unui afișor LCD alfanumeric
sau cu 7 segmente, conectarea unei memorii RAM dublu port. Realizarea unei comunicații paralele între două sau
mai multe uC, Etc.

• Pot genera întreruperi externe sau de tip wake up.

Portul paralel? Să ne reamintim


• Cel mai simplu port de I/E pe un microcontroler este portul paralel.

• permite software-ului să interacționeze cu dispozitivele externe.

• Se numește paralel, deoarece mai multe semnale pot fi accesate simultan cu o aceeași instrucțiune.

• Un port de intrare, care poate fi doar citit, permite software-ului să citească semnalele digitale externe.

• Un acces pentru citirea de la adresa portului returnează valorile existente pe intrările portului la acel moment.

• În particular, un driver cu trei stări (tristate driver) (circuitul în formă de triunghi din Figura 2 9) va conduce
semnalele de intrare pe magistrala de date în timpul unui ciclu de citire de la adresa portului.

• Un acces datorat unui ciclu de scriere la un port de intrare nu produce, de obicei, nici un efect.

Portul paralel? Port de intrare

• Valorile digitale existente pe pinii de intrare sunt copiate în microcontroler atunci când software-ul execută o citire
de la adresa portului.

• De exemplu, la familia de microcontrolere ST32F4 nu există doar porturi digitale de intrare.

• Microcontrolere ST32F4 au intrări digitale care sunt tolerante la 5V, ceea ce înseamnă că o tensiune de intrare
între 2.0 - 5.0V va fi considerată ca fiind corespunzătoare valorii binare 1L (logic) iar o tensiune între 0 - 1.3V va fi
considerată ca fiind corespunzătoare valorii binare 0L (logic).

Portul paralel? Port de ieșire

• un dispozitiv de intrare, implică doar software-ul de citire a portului, un port de ieșire poate fi utilizat atât în
ciclurile de citire cât și în cele de scriere precum o memorie normală.

• Figura 2 10 descrie un port de ieșire care poate fi și citit.

• Un ciclu de scriere la adresa portului va afecta valorile pe pinii de ieșire.

• microcontrolerul plasează informația pe magistrala de date iar această informație este scrisă pe baza ceasului în
bistabilele de tip D.

• Din moment ce este o ieșire care poate fi citită, un ciclu de acces de citire de la adresa portului returnează valorile
curente existente pe pinii portului (sau uneori de la ieșirea bistabilui).

• Portul paralel? Port de intrare/ieșire


uC utilizează conceptul de direcție pentru a utiliza același pin fie ca intrare, fie ca ieșire. Un zero scris în registrul de
direcție face ca pinul să fie intrare iar un unu face ca pinul să fie ieșire Nu trebuie confundat comportamentul unui
pin I/E cu al unei locații de memorie. Nu ar trebui scris la un port de intrare și uneori nu putem citi un port de ieșire.
Exemplu GPIO – ST32F407VG?

• Conectate la o magistrală de mare viteză, AHB, în partea stângă se pot distinge cele 9 porturi paralele I/E notate de
la GIOA la GPIOI.

• Porturile I/E la familia ST32F4xx [23] sunt la fel.

• Diferă doar numărul de linii I/E. STMF407xx are 140 de pini I/E dintre care 136 sunt considerați rapizi lucrând la o
frecvență de 84MHz, iar 138 sunt toleranți la +5V. Ce poate STM32F429???

• Portul GPIO are următoarele caracteristici principale:

• Controlează până la 16 biți I/E

• Stările ieșirilor pot fi: push-pull sau drenă deschisă (open drain) + pull-up/down

• Data de ieșire pe pin poate fi de la registrul de ieșire (GPIOx_ODR) sau poate fi furnizată de un periferic (ieșirea
funcției alternative).

• Se poate selecta viteza pentru fiecare I/E

• Stările intrărilor sunt: flotantă, pull-up/down, analogică

• Datele de intrare sunt preluate de registrul de date (GPIOx_IDR) sau un alt pIE (dacă se selectează funcția
alternativă de intrare)

• Registrul pentru setare/ resetare bit (GPIOx_BSRR) permite scrierea la nivel de bit în registrul GPIOx_ODR (accese
atomice)

• Mecanism de blocare (GPIOx_LCKR) pentru a “îngheța” configurația I/E

• Funcție analogică

• Regiștrii pentru selecția funcției alternative (cel mult 16 funcții alternative per I/E) (GPIOx_AFRH și GPIOx_AFRL).

• Comutare rapidă care permite schimbarea stării la fiecare doi cicli

• Multiplexarea cu flexibilitatea mare permite utilizarea pinilor I/O ca GPIO sau ca una dintre mai multe funcții
alternative ale perifericelor
• 10 regiștrii de control per port

• Numărul de porturi implementate depinde de capsula utilizată. De exemplu, pentru încapsularea de tip STM32F40x
LQFP100 pinout, sunt implementate porturile de la GPIOA-GPIOE, așa cum se vede din Figura 2 16. Trebuie, de
asemenea de notat, că nu toți pinii unor porturi sunt disponibili.
• GPIOx_MODER= 0x00 registrul de selecție direcție/mod pentru cei 16 pini ai unui port I/E.

• GPIOx_OTYPER = 0x04 registrul de selecție a modului de lucru în ieșire pentru cei 16 pini ai unui port I/E.

• GPIOx_OSPEEDR = 0x08 registrul de selecție a vitezei de lucru în ieșire pentru cei 16 pini ai unui port I/E.

• GPIOx_PUPDR = 0x0C registrul pull-up/pull-down

• GPIOx_IDR = 0x10 registrul datei de intrare

• GPIOx_ODR = 0x14 registrul datei de ieșire

• GPIOx_BSRR = 0x18 bit registrul cu acces la nivel de bit pentru setarea/resetarea individuală a unui bit din cei 16 a
unui GPIO.

• GPIOx_LCKR = 0x1C registrul de blocare a unui pin.

• GPIOx_AFRL = 0x20 registrul funcției alternative – low

• GPIOx_AFRH = 0x24 registrul funcției alternative – high

• Regiștrii de date sunt mapați în memorie pe 16 biți pentru fiecare port GPIOx (x = A…I (GPIOA, GPIOB, …, GPIOI)).
Regiștrii de date sunt (vezi și Figura 2 18):

• GPIOx_IDR – Introduce date prin intermediul celor 16 pini (poate fi doar citit);

• GPIOx_ODR – Scrie data care va fi preluată la ieșirea celor 16 pini și citește ultima valoare scrisă în registrul ODR
(Citește/Scrie (operații de citire-modificare-scriere)).

• Operațiile de testare sau de setare/ resetare se pot realiza utilizând operații cu măști logice.

S-ar putea să vă placă și