Přednáška 1 A4B38NVS - Návrh vestavěných systémů
2013, kat. měření, ČVUT - FEL, Praha J. Fischer
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
1
Představení, kontakty
Jan Fischer , kat. měření, míst. 441/1 blok B3, přednáška, cvičení od 18.00 kancelář 441/1 blok B3, laboratoř 316a blok A3 konzultace středa od 14. 15 v 340, (příp. pondělí od 17.45 v 316a blok A3) Vojtěch Vigner cvičení od 16.15, kat. měření, míst. 453 blok B3 kontakty s vyučujícími E- mail, posílat pouze ze své FEL E- mail adresy
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
2
Oblasti vestavných systémů Vestavný systém – co to představuje? „embedded system“, embedded microcontroller Systém s mikrokontrolérem je „zabudován“ přímo v zařízení a je s ním v přímé interakci Zařízení s vestaným systémem ( embedded) – dnes prakticky všechny přístroje kolem nás Doma – televizor, video, CD přehrávač, moderní radiopřijímač, mobilní telefon, fotoaparát, “kamera“, moderní („advanced“) hodinky myčka nádobí, pračka, (nová) lednička, GPS, „lepší“ holicí strojek, baterka - čelovka , Elektronické hračky el. hry, autíčka, pohyblivé hračky, panenky „s interakcí“, Automobil – více 10 vestavných mikrokontrolérů (řízení motoru, ABS, AES, nastavování mechanických dílů- sedačka, el. stahování oken, komunikace, zabudovaný radiopřijímač, navigace, řízení klimatizace,.. Dům – výtah, klimatizace, zabezpečovací a kamerový systém, přístupový systém, protipožární systém, řízení topení a klimatizace, síťové komunikační prvky pro Ethernet – switche, routery, A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
3
Oblasti vestavných systémů Obchod – prodejní terminál, elektronické váhy, mrazicí boxy, elektronické cenovky (segmentový LCD zobrazovač + přenost dat) .. Dopravní prostředky – obecně - vlak, letadlo, Malé (domácí) lékařské přístroje – osobní váha, glukometr,měřič tlaku, měřič tepu, krokoměr Velké lékařské přístroje – v nemocnicích – např. na operaním sále – řízení ventilace, sledování tlaku, dýchání,….- viz. filmy Komunikační technika – malé vysílačky (osobní, policejní, armáda, záchranné sbory) Existuje též pojem „deeply emebeded“ – poněkud zjednodušeně řečeno „systém je tak hluboce vestavěn, že si to uživatel ani neuvědomí“ Existují aplikace mikrokontrolérů a signálových procesorů přímo v řízení pulsního napájecího zdroje – řízení spínání tranzistorů,.regulace napětí, Řízení optických modulů – řízení velikosti proudu v laserovém modul pro komunikace po opt. vláknech,,.) Nářadí – momentový klíč ( s el. indikací – tenzometr +indikace), el. vrtačka,.. A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
4
Oblasti vestavných systémů Příklady - fotografie aplikací vestavných systémů folie č. 6 až 14. Nike Fuelband www.futurocube.com , Bosch, Petzl, Fit Bit, Sony SmartWatch MN2 , „Robotická koule“ Gosphero, Hapifork – hapilabs, Energizer, Wilkinson prezentace fotografii - pouze na přednášce, nejsou uvedeny v PDF kvůli omezení velikosti souboru – omezení redakčního systému WWW stránek
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
5
Základní bloky vestavného systému
Obecně – vestavný systém v zařízení obsahuje • • • • • • • •
.
mikrokontrolér ovládací prvky pro komunikaci s obsluhou (tlačítka, křížový ovládač, klávesnice - nyní často kapacitní) indikace ( LED,..) zobrazovač – LED, LCD senzory ( teplota, tlak, světlo, MEMS – zrychlení - náklon zomunikační rozhraní (sériové rozhraní – UART, USB, Ethernet, CAN, LIN, bezdrátová komunikace- blue tooth ) ovládání akčních členů (výkonové tranzistory – bipolární, FET, IGBT, relé, tyristory) akční členy (motorky – stejnosměrné - DC, krokové motorky - stepper, BLDC – brush less DC, asynchronní střídavé motory prčaka,..
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
15
Náplň předmětu A4B38NVS - přednášky •
HW návrh vestavěných systémů, komponenty a jejich využití, procesor jako součástka
•
Logické obvody a jejich vlastnosti z hlediska spolupráce s mikrořad. (odběr, typové řady, rychlost z hlediska spolupráce s mikroprocesorem, spolupráce rychlých logických obvodů, vedení, odrazy, zemnění, rozvody napájení, blokování).
•
Bloky komunikace s obsluhou (tlačítka, klávesnice, LED a LCD zobrazovače)
•
Mikrořadiče (Microcontroller) pro vestavěné systémy
•
Obvody a periferie na čipu mikrořadičů (vstupy, výstupy, rozhraní SPI, I2C, I2S, USART převodníky A/D, převodníky D/A),
•
Vnější periferie a jejich připojování (připojení vnějších řadičů – Ethernet,..)
•
Vnější paměťové obvody a jejich připojování k mikroprocesoru
•
Dohlížecí obvody a monitorovací obvody pro zajištění spolehlivé funkce vestavěného systému.
•
Napájení – síťové napájení, bateriové napájení vestavěných systémů, stabilizace napájení
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
16
Náplň předmětu A4B38NVS - cvičení •
Seznámení s IDE Keil pro ARM, pro STM32F100
•
Konfigurace výstupních bran STM32F100, ovládání výstupů a LED,
•
Generování impulsního signálu, čtení tlačítka
•
Časovací jednotka (schodišťový automat)
•
Ovládací jednotka se 7- seg. LED, ovládání posuvného registru 74HCT595, (1. hodnocená úloha) + zpráva
•
Sériová komunikace, využití UART, komunikace s RS232, zobrazení dat na LCD a PC (terminál) (2. hodnocená úloha) + zpráva
•
Samostatný projekt: Návrh systému pro sběr dat a monitorování 3._hodnocená úloha, studie k projektu, návrh a realizace, závěrečná zpráva),
•
Logické obvody CMOS- stat. parametry a jejich určení (skup. 2 stud.)
•
Logické obvody CMOS – dyn. parametry a jejich určení , buzení obvodu procesorem STM32, generování signálu o dané frekvenci (skup. 2 st.)
Test v semestru – 9. týden společný termín - na přednášce (v míst. 340) A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
17
STM32VLDiscovery kit – používaný na cvičení STM32F100RB microcontroller, 32-bit ARM Cortex-M3 core 128 KB Flash, 8 KB RAM 64-pin LQFP STlink ( v1) STM32F103 – pouzdro 48 pinů, horní -
ladicí procesor
STM32F100 – pouzdro 64 pinů, dolní aplikační (uživatelský) procesor propojení procesorů ladicím rozhraním SWD ze zabudovaného ladicího nástroje ST- LInk („horní procesor“ STM32F103“)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
18
STM32F0Discovery kit STM32F051R8T6 microcontroller 32-bit ARM Cortex-M0 core 64 KB Flash, 8 KB RAM STlink / V2 + prototypová deska
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
19
STM32LDiscovery kit STM32L152RBT6 microcontroller ARM CORTEX - M3 core pouzdro LQFP64 128 KB Flash, 16 KB RAM, 4 KB EEPROM LCD malé segmenty kapacitní klávesnice STlink / V2
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
20
STM32F3Discovery kit STM32F303VCT6 microcontroller 32-bit ARM Cortex-M4F core (podpora floating. poit. arit.) 256 KB Flash, 48 KB RAM LQFP100 package STlink / V2
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
21
STM32F4Discovery kit STM32F407VGT6 microcontroller 32-bit ARM Cortex-M4F core, (podpora floating. poit. arit.) 1 MB Flash, 192 KB RAM LQFP100 package STlink / V2
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
22
Cvičení – poznámky Ladění – „boot loader“, nebo pomocí SWD z kitu STM32VL Discovery Zapůjčení modulů STM32VLDiscovery, příp. i kont. pole na celý semestr Potřebné vybavení napájení + 5V ( např. z USB), příp. multimetr UNI-10A (zapůjčení multimetru ?) Minimum potřebného vybavení – PC s USB a nainstalovaným SW Keil, mini USB kabel, Vhodný doplněk - převodník USB na RS232 (dostupné např. v NC computers za 160 - 220 Kč, www.nc.cz, využitelné i pro práci s jinými mikroprocesory pro vestavěné systémy – pro funkci Boot Loader) kit STM32VL Discovery- obsahuje ladicí nástroj STlink kity: STM32F0Discovery, STM3Discovery, STM32F4Discovery, STM32LDiscovery – obsahuje ladicí nástroj STlink/V2 (novější)
Možnost využití pro ext. ladění ladění jiného kusu procesoru STM32 Možno osadit – zapájet minimodul s STM32F050F6P6 a využít jej v projektu (Pro vážné zájemce – možnost exkurse do vývojového centra STMiroelectronics v Praze - ? listopad/ prosinec) A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
23
Hodnocení Účast na cvičeních povinná 2 x hodnocená úloha (5 +5 b)., studie 5 + samostatný projekt 10 + 5 závěrečná zpráva zprávy, nutno řešit i nebodované úlohy + zpráva samostatná práce studentů, uvedení případ. informačních zdrojů), plagiátorství – ne !!! Domácí příprava – studium zadání, příprava programů, vývojový diagram, schéma V laboratoři – odladění úlohy, využití přístrojového vybavení povinná účast na cvičení dřívější dokončení a odevzdání poslední úlohy a zpráv, možnost dojít až pro zápočet Test v semestru (přibl. 9. týden) středa od 12.45 v míst 340
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
24
ARM - historie ARM - RISC procesory původ – britská firma Acorn, procesory - stolní počítače později vývoj vlastního procesoru ARM1 v r. 1985, ARM1 - 25 000 tranzistorů, 3 um technologie 4 MHz hod. sig. ARM2 ARM 3 Založena nová firma - Advaced RISC Machines Ltd. (majet. účast Apple, Acorn a VLSI) změna názvu architektury z „Acorn RISC Machine“ na „Advaced RISC Machine“ ARM 6 , procesor ARM610 pro PDA (Personal Digital Assistent) firmy Apple ARM7 v r. 1993, používán v PDA PSION firmy Acorn ARM7 TDMI doplnění ladicí rozhraní (D,I debug. interface) rozšířené možnosti násobičky (M) Thumb instrukční sada (T) - navíc 16- bitové instrukce ARM7 TDMI – nejlépe prodávaný procesor (jádro) u ARM ARM – orientace na přenosná zařízení, mobilní telefony,… rozvoj A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
25
ARM - historie ARM7 TDMI – - architektura ARM v 4T ( pozor, trochu se plete) ARM7TDMI používán i ve formě „microcontroller“ – jednočipový mikropočítač firma Philips (nyní navazující NXP) LPC 2105 procesor ARM7TDI, paměti Flash, RAM, periferie, řadič přerušení – vlastní varianta další firmy využívající ARM7TDMI: ATMEL, STMicroelectronics, Texas Instruments, Analog Devices,,…. u ARM7TDMI – v jádře - pouze dvě přerušení, firmy- vlastní implementace řadiče přerušení chybí dobrá podpora a spolupráce - řadič přerušení - jádro Firma ARM – úprava architektury pro potřeby „embedded“ microcontrolérů Architektura ARM v7M Cortex , (M značí microcontroller) doplněn NVIC Nested Vectored Interrupt Controller ARM - Cortex M3 - architektura ARM v7M, náš procesor na cvičeních Architektura ARM v4T – ovlivnila ARM v7M, , (občas bude na ni odkaz při vysvětlování instrukcí) Heslo ISA – „instruction set architecture“ architektura mající danou sadu instrukcí - obecnější pojem - poněkud širší rozsah míněných procesorů A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
26
ARM ARM - RISC procesory (pojem RISC) ARM7TDMI 32- bitový procesor, data 32 bitová, (tedy registry 32 bitů) adresa 32 bitů, adresní prostor 232 = 4 GByte ARM instrukční kód konstantní délky 32 bitů v těchto 32 bitech uložen: kód vlastní instrukce, případně - registr, přímá data, adresa architektura – typu Load, Store v instrukci jeden přenos dat mezi CPU a pamětí – není operace typu „read“, „modify“, „write“ ? jak řešit do 32 bitů kód i adresu přímé adresování relativně s omezeným rozsahem adresování registrem v jedné instrukci – pouze jedna operace s pamětí aritmetické a logické operace pouze s registrem A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
27
Pojem Word u ISA ARM The ARM je 32-bit architectura. V pojmy word, halfword použité v souvislosti s ARM: Word – míní se 32 bitů (čtyři bajty) Halfword míní se 16 bitů (dva bajty) Byte míní se 8 bits ( jeden bajt)
Většina ARM implementuje dvě instrukční sady 32- bit ARM Instruction Set – instrukce kódována word 16- bit Thumb Instruction Set – instrukce kódována halfword ARM CORTEX – M3 instrukční sada Thumb – 2 (jedna společná sada – „dohromady“ 16- i 32- bitové instrukce) (obsahuje Thumb a některé ARM)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
28
ARM7 TDMI, instrukce ARM a THUMB ARM7TDMI instrukční sada ARM - 32 bitů instrukční sada THUMB – 16 bitů (úsporný kód, větší omezení na přímá data či adresy) procesory ARM: 16 – bitové instrukce Thumb 32 – bitové instrukce ARM Přepínání v programu, jaká sada instrukcí se používá, procesor běží:
v módu ARM (vykonává instrukce ARM 32 - bitové) v módu THUM (vykonává instrukce THUMB 16 - bitové) Instrukce ARM a THUMB není možno „míchat“, Přechod do THUMB - skok na adresu, kde nejnižší bit adresy je A0=1 (kód instrukce je 16- bitový, tak reálná adresa má A0 =0, ale právě požadavek skoku na adresu s A0=1 signalizuje požadavek na skok s přepnutím do režimu THUMB ) používají se instrukce skoku BX Rn , kde registr Rn obsahuje požadovanou adresu s příslušně nastaveným bitem D0 = 0, nebo D0=1 odpovídajícím adresovému bitu A0 A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
29
Cortex family – použit podkladový materiál firmy ARM Cortex-A8
Cortex-R4
Cortex-M3
Architecture v7A MMU AXI VFP & NEON support
Architecture v7R MPU (optional) AXI
Architecture v7M MPU (optional) AHB Lite & APB
Dual Issue
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
30
Jádro ARM Cortex – M3 Firma ARM - nevyrábí vlastní procesory, pouze návrh jádra, Jádro v rámci licencí využívá mnoho výrobců (ST, NXP, TI, Atmel,..) ARM Cortex- M3 - definováno: vlastní jádro CPU řadič přerušení rozložení v adresním prostoru (kde- SRAM interní, externí, kde vnitřní sběrnice spolupráce s rozhraním pro ladění (debug) JTAG, SWD Výrobci individuálně doplňují paměti a různé periferie přístupné v daném adresním prostoru více na www.arm.com A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
31
Jádro ARM Cortex – M3 literatura Volně dostupné materiály: Sadasivan S.:An Introduction to the ARM Cortex-M3 Processor (www.ARM.com) DUI 0552A_Cortex - M3 devices generic user Guide (www.ARM.com) DDI 0337E Cortex -M3 Revision: r1p1 Technical Reference Manual (www.ARM.com) DDI 0403 ARM v7-M Architecture Reference Manual (www.ARM.com dostupný po zaregistrování) (podrobný popis architektury ARMv7M do které spadá i ARM Cortex M3)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
32
Procesor STM32F100x - literatura Volně dostupné materiály: katalogový listk STM32F100x: STM32F100x4 STM32F100x6,STM32F100x8 STM32F100xB – (Doc ID 16455 Rev 5) podrobný referenční manuál: RM0041 Reference manual STM32F100xx advanced ARM-based 32-bit MCUs (www.st.com)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
33
Literatura
The Insider’s Guide To The STM32 ARM®Based Microcontroller An Engineer’s Introduction To The STM32 Series www.hitex.com • Velmi zkrácený přehled architektury ARM Cortex M3 z hlediska, implemetace do STM32F1xx • Přehledný zkrácený popis periferií STM32F1xx • Doporučeno pro získání prvního přehledu k použití periferiíSTM32, následně detailní studium referenčního manuálu k STM32, • Insiders Guide - dobrý proto to, zjistit, co se má vlastně hledat v dalších podrobných manuálech
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
34
Registry ARM Cortex M3 R0 – R12 obecné registry Dolní registry (low reg.) R0 – R7 přístupné všemi instrukcemi s přístupem k registrům. Horní registry (high reg.) R8 – R12 přístup pouze 32 bitovými instrukcemi s přístupem k registrům
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
35
Registry R13 až R15 Stack pointer Registr R13 -Stack Pointer (SP) ukazatel zásobníku. R13 – dvě formy: hlavní SP (SP main) procesní SR (SP_process) Link register Registr R14 je užíván při volání podprogramů (subroutine Link Register - LR). Do LR se uloží návratová adresa z PC při instrukci při vykonání instrukcí Branch an Link (BL) or Branch and Link with Exchange (BLX). LR je využit také při návratu z obsluhy výjimky (exception return). R14 – možno obsluhovat jako obecný registr Programový čítač (Program counter - PC) registr R15 Bit [0] je vždy, takže instrukce jsou zarovnány na hranice slova (4 Byte) nebo poloviční slova (2 Byte). Stavový reg. programu (Program Status Registers xPSR) stavových registr příznaků (Flags)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
36
Příznakový registr -
1 indikuje aktivní stav N negativní nebo menší než Z Nula C Carry/ Borrow – výpůjčka V přetečení overflow Q sticky saturation (při aritmetice se saturací)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
37
Adresový prostor ARM Cortex – M3 -
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
38
Instrukční sada THUMB-2 v návaznosti na instrukce ARM ARM Cortex-M3 - instrukční sada Thumb -2 Instrukce Thumb (16- bitové) jsou doplněny 32- bitovými instrukcemi sada označená jako Thumb - 2, ARM Cortex M3 – používá sadu Thumb – 2 bez přepínání, je tedy stále v režimu Thumb a případný pokus o přepnutí do režimu instrukcí ARM (32 – bitových) vyvolá chybu, proto musí být u Cortex – M3 při požadavku skoku vždy nejnižší bit adresy A0= 1 16 – bitové instrukce Thumb – omezené možnosti – např. ve vzdálenosti adresy pro skok,…. možnost Unified Assembler Language (UAL) – společná syntaxe pro ARM a Thumb instrukce. Kód psaný s použitím UAL může být přeložen do ARM nebo Thumb instrukcí - to volí překladač- optimalizace na délku kódu.
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
39
Zápis programu pro Assembler ARM pole návěští, zcela vlevo –( nesmí tam být instrukce, ta je až v dalším poli – za mezerami, • pole instrukce, • pole operandu ( operandů), • pole komentáře za středníkem NAVESTI MOV R0, R1 ; kopie R1 do R0, R0 = R1 Instrukce presunu: MOV instr.přesunu mezi reg., příp. přímá data do reg. (zprava doleva) MOV R0, #1 instr. přesunu přímých dat ( omezená velikost) nezapomenout na # LDR instr. čtení z paměti do registru (zprava doleva) STR instr. zápisu z registru do paměti (zleva doprava !!!) •
Pseudo instruce LDR
R0, =0x200
(„vím co chci a ty to přelož, jak to půjde nejlépe“) podle velikosti konstanty to překladač přeloží jako přesun z paměti do registru a sám uloží danou konstantu do pevné paměti Code, nebo to přeloží jedinou instrukcí MOV obsahující data- viz disassembler, s využitím Barrel shifter (vezmi přímou konstantu, bitově ji posuň a tu ulož do registru) A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
40
Popis instrukci použitých v programu LED_BLIK: Instrukce presunu: MOV R0, R1 ; kopie R1 do R0, R0 = R1 MOV R0, #1 ; kopie 1 do R0, R0 = 1 LDR R0, =0x200 ; pseudo instrukce kopie 0x200 do R0, R0 = 0x200 LDR R1, [R0] ; kopie hodn. na adr. v R0 do R1, R1 = hodnota z adr. v R0 STR R1, [R0] ; kopie hodnoty z R1 na adresu v R0 PUSH {R0,LR} ; ulozeni hodnoty v R0 a LR do zasobniku POP {R0,PC} ; vyzvednuti hodnoty ze zasobniku do PC a R0 Instrukce skoku: B BL BX BEQ BNE
NAVESTI NAVESTI LR NAVESTI
; skok na adresu, kde je uvedeno navesti NAVESTI ; skok NAVESTI a ulozeni navratove adresy do LR ; skok na adresu umistenou v registru LR ; skok na NAVESTI podle vysledku predchozi instrukce, ; tj. skok pri vysledku rovno nula NAVESTI ; skok na NAVESTI podle vysledku predchozi instrukce, ; tj. skok pri vysledku nerovno nula
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
41
Popis instrukci pouzitych v programu LED_BLIK: Instrukce aritmeticke: SUB R0, R1, #1 SUBS R0, R1, #1
; R0 = R1 - 1 ; R0 = R1 - 1 a nastaveni registru priznaku (PSR)
Instrukce logicke: BIC R1, R1, R2 ORR R1, R1, R2
; R1 = R1 & (/R2) - logicky soucin s R1 a negovanym R2 ; R1 = R1 | R2 - logicky soucet R1 s R2
Instrukce porovnani: CMP R0,#1 TST R0,#1
; R0 - 1 a nastaveni priznaku, ale hodnota v R0 se nezmeni ; R0 & 1 a nastaveni priznaku, ale hodnota v R0 se nezmeni
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
42
STM32F100
JTAG/SW JTAG/SWDebug Debug Nested Nestedvect vectIT ITCtrl Ctrl
11xxSystick SystickTimer Timer 11xxDMA DMA 77Channels Channels
FlashI/F I/F Flash
Cortex-M3 Cortex-M3 CPU CPU 24 24 MHz MHz ARMLite LiteHi-Speed Hi-SpeedBus Bus ARM Matrix / Arbiter (max 24MHz) Matrix / Arbiter (max 24MHz)
-
16-128kB 16-128kB Flash FlashMemory Memory
XTAL XTALoscillators oscillators 32KHz 32KHz++3~25MHz 3~25MHz 4kB-8kB 4kB-8kBSRAM SRAM
20B 20BBackup BackupRegs Regs
Clock ClockControl Control
Bridge Bridge Bridge Bridge
1x 1xSPI SPI 1x 1xUSART/LIN USART/LIN Smartcard/IrDa Smartcard/IrDa Modem-Ctrl Modem-Ctrl
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
(max 24MHz)
Up Upto to80 80I/Os I/Os
ARM Peripheral Bus
Synchronized SynchronizedAC ACTimer Timer
Up Upto to16 16Ext. Ext.ITs ITs
Int. Int.RC RCoscillators oscillators 40KHz 40KHz++8MHz 8MHz PLL PLL
RTC RTC//AWU AWU 2x 2xWatchdog Watchdog
CRC CRC
1x6x 1x6x16-bit 16-bitPWM PWM
Power PowerSupply Supply Reg Reg1.8V 1.8V POR/PDR/PVD POR/PDR/PVD
ARM Peripheral Bus (max 24MHz)
(independent (independent&&window) window)
33xx16-bit 16-bitTimer Timer
1x16-bit 1x16-bittimer timerwith with22 IC/OC/PWM IC/OC/PWM
HDMI HDMICEC CEC
2x16-bit 2x16-bittimer timereach each with 1 IC/OC/PWM with 1 IC/OC/PWM
2x 2xSPI SPI
22xx12bit 12bitDAC DAC 1x 1x12-bit 12-bitADC ADC 16 channels 16 channels// 850ksps 850ksps Temp TempSensor Sensor
2x 2xUSART/LIN USART/LIN Smartcard Smartcard//IrDa IrDa Modem ModemControl Control 2x 2xI2C I2C
43
V/V brány v STM32 Standardní vstupně - výstupní brány (není + 5 V tolerantní) na vstupu napětí do úrovně Udd
Odhad chování pinu ( ne + 5V tolerantního) brány STM32F100x na základě podoby s chování standardních vstupů CMOS např. 74HC04 Diskuse, možné důsledky nevhodného zapojení, důsledky - cvičení měření statických vlastností logických obvodů CMOS A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
44
Výstupy typu Push – pull, open drain, Výstupy typu „push – pull“
UDD T2 T1
PMOS NMOS
výstup typu „open drain“
T1
NMOS
výstup typu „open drain“ s vnějším „pull up“ rezistorem UDD T1
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
RPU out
45
Vstupy Vstupy – plovoucí – bez připojeného vnějšího signálu – problém stavu pull up rezistor – bez signálu definuje vysokou úroveň pull down rezistor – bez signálu definuje nízkou úroveň Alternativní funkce – logický signál- vedený na perieferie na čipu ( řadiče rozhraní UART, SPI,…. Analogový vstup – vstup převodníku A/D (analogo - číslicový)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
46
STM32F100 IO brány vstup brány + 5 V tolerantní RM0041 str. 102
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
47
Tlačítko a LED na STM32VL Discovery Tlačítko – v klidu rozepnuté, na PA0 se čte L díky působení „Pull down“ rezistoru R21 stisk – čte se 1 , viz manuál UM0919 (Obvykle se tlačítka připojují proti zemi (GND), zde je opačné zapojení pro možnost demonstrace funkce „ probuzení“ procesoru z režimu spánku – „Wake – Up“.)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
48
Konfigurace brány STM32F100x Po reset – jsou V/V brány neaktivní (i při zápisu dat do výstupního registru brány se na výstupu nic neprojeví) Nejdříve - aktivace hodinového signálu pro výstupní bránu (viz demo příklad na cvičení – použití brány PC) LDR R0, =RCC_APB2ENR ; Kopie adresy RCC_APB2ENR (APB2 peripheral clock enable register) do R0 LDR R1, [R0] ; Nacteni stavu registru RCC_APB2ENR do R1 LDR R2, =0x10 ; Konstanta pro zapnuti hodin pro branu C ORR R1, R1, R2 ; Maskovani STR R1, [R0] ; Ulozeni nove hodnoty
Následně – nutnost konfigurace každého používaného pinu V/V brány zápisem do konfiguračního registru Zápis dat do výstupního registru brány se projeví na výstupu pouze u pinů konfigurovaných jako výstupy. (Poznámka: pokud výstupní nebo vstupní pin, či další perierie, nereagují na zápis dat, je třeba zkontrolovat, zda je přiveden hodinový signál a pin správně konfigurován!!!) A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
49
Umístění registrů str. 36 RM0041 umístění konf. reg. v adresním prostoru bázová adresa PA 0x4001 0800 bázová adresa PC 0x4001 1000
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
50
Registry V/V bran .
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
51
Vstupně – výstupní brána - registry Vstupně – výstupní brány jsou 16 – bitové Pro použití se musí nejdříve nakonfigurovat Řídicí registr 4 bity na konfig. jednoho bitu brány - celkem 16 x 4 = 64 bitů rozděleno do dvou řídicích CR (controll register) 32- bitových registrů CR_L pro dolních 8 bitů – pinů brány CR_H pro horních 8 bitů – pinů brány výst. dat. reg. ODR (output data reg.) dolních 16 bitů – prostý zápis dat do brány vstup. dat. reg. IDR (input data register) dolních 16 bitů prosté čtení dat z brány – čtení aktuálního stavu na pinech brány registr bit set /reset BSRR 32 bitů, zápis „1“ do horních 16 bitů „setuje“ – dává do 1, zápis „1“ dolních 16 bitů resetuje – dává do 0 registr reset BRR dolních 16 bitů, zápis „1“ dolních 16 bitů resetuje – dává do 0 registr LCKR – zablokování (lock) stavu
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
52
Registry V/V bran - rekapitulace GPIO General Purpose Input Output GPIO_CR = GPIO - Control Register (4 bity na pin brány), celkem 16 pinů x 4 = 64 bitů ve dvou registrech GPIO_CRH a GPIO_CRL , GPIO_CRH contr. reg. pro horní polovinu brány Px [15 až 8] GPIO_CRH contr. reg. pro dolní polovinu brány Px [15 až 8] GPIO_IDR = - GPIO - Input Data Register čtení stavu pinů GPIO_ODR = - GPIO- Output Data Register výstupní datový registr GPIO_BSRR = - GPIO - Bit Set Reset Register (vybrané piny do 1 nebo 0) GPIO_BRR = - GPIO - Bit Reset Register (vybrané piny do 0) GPIOx_LCKR = GPIO - Port config. lock register (zablok. proti změnám stavu pinu až do reset proc.- využití. pro spoleh. syst. + výklad) bezpečnost technolog. sytémů, .. Pozor - zápis do výstupních pinů – možný pouze do pinů nakonfigurovaných jako výstupy a s přivedenými „hodinami“, (častá chyba ….) A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
53
konfigurace bitů 7 až 0 (dolní Byte) - low
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
54
konfigurace bitů 15 až 8 ( horní Byte) - high
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
55
Konfigurace RM0041 str. 103 4 bity pro konfiguraci jednoho bitu brány shodný způsob: STM32F103 STM32F105, 107 pouze odlišné adresy (další procesory STM32F050, STM32F407,.. odlišná konf. A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
56
Datový registr výstupní brány .output data register – výstupní datový registr
Vhodné
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
57
Port bit set/ reset Nastavování jednotlivých bitů brány, zápis 1 do bitů 31 až 16 nastavuje přísl. bit do 1, zápis 1 do bitů 15 až 0 nastavuje přísl. bit do 0 („úder zprava, úder zleva“) zápis 0 – příslušný výstupní bit se neovlivní (0 - „žádný úder“)
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
58
Reset výstupního pinu brány Zápis 1 do bitů 15 až 0 nastavuje přísl. bit do 0 (RESET), ( 1 nuluje, 0 nedělá nic) zápis 0 do registru neaktivní – neovlivní stav výstupu
Vhodné
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
59
Vstupní brána Pro čtení tlačítka na PA0 (IDR input data register – vstupní datový registr)
Vhodné
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
60
Určení adresy registru Potřeba znát základní adresu (bázová adr.) periferie (brány) –z Tab. 1 na str. 36 offset pro příslušný registr z Tab. 48 (str. 129) zákl. adr. pro GPIOC 0x4001 1000 zákl. adr. pro GPIOA 0x4001 0800 kontrol. reg. pro GPIOx_CRL pro bity 7 až 0 má offset 0x00 kontrol. reg. pro GPIPx_CRH pro bity 15 až 8 má offset 0x04 vstup. dat. reg. GPIOx_IDR offset 0x08 výst. dat. reg GPIOx_ODR offset 0x0C kontr. reg bit set/ reset GPIOx_BSR offset 0x10 kontr. reg. bit reset GPIOx_BRR offset 0x14 0x40011000 GPIOC + offset 0x04 = 0x40011004 0x40011004 GPIOC_CRH (konfigurace PC15 až PC8) výstupní registr brány PC + offset pro GPIOx_ODR 0x40011000 GPIOC + offset 0x0C = 0x4001100C 0x4001100C GPIOC_ODR výstupní registr pro PC 0x400110808 GPIOA_IDR registr vstupní brány PA A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
61
Používané adresy 0x4001 1004 GPIOC_CRH konfigurace PC15 až PC8 0x4001 100C GPIOC_ODR výstupní registr pro PC 0x400110808 GPIOA_IDR registr vstupní brány PA
A4B38NVS, 2013, J.Fischer, kat. měření, ČVUT - FEL
62