Rozhraní mikrořadiče, SPI, IIC bus,.. Přednáška 11 (12)
A438NVS, kat. měření, ČVUT - FEL, Praha J. Fischer
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
1
Náplň přednášky Sériová rozhraní rozhraní SPI, IIC sběrnice mikroprocesoru paměti DMA
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
2
Rozhraní SPI Rozhraní SPI ( Serial Peripheral Interface) - původ firma Motorola SPI není typ bus - sběrnice, ale pouze rozhraní (interface) typu bod - bod master - procesor, generace hod. sig. SCK, slave - podřízená jednotka, výstup ze SLAVE M ISO - třístavový pokud je u slave /ss = H, není aktivní výstup MISO
MASTER
SLAVE
8 bit pos. registr
MISO 8 bit pos. registr
MISO MOSI MOSI
SPI hod. generátor
SCK
MOSI - Master Output Slave Input MISO - Master Input Slave Output SCK - serial clock SS - slave select A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
SCK +5V SS
SS
3
SPI, komunikace s nastavením fáze CPHA = 0 nastavení polarita a fáze hodin (4 kombinace) MOSI výstup MISO - vstup CPHA = 0 při čtení nevýhoda - slave musí poskytnout data (MSB) na vodiči MISO ihned po /ss (slave select), s první hranou SCK se data vzorkují, s další hranou SCK se vysouvá další bit dat nastavení - clock phase- CPHA = 0 SCK cyklus
1
2
3
4
5
6
7
8
SCK (CPOL=0) SCK (CPOL=1) MOSI (z master) MISO (ze slave)
MSB
6
5
4
3
2
1
LSB
MSB
6
5
4
3
2
1
LSB
SS (do slave) A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
4
SPI, komunikace s nastavením fáze CPHA =1 Slave i master poskytnou první data (MSB) až po první hraně hodin SCK, master i slave čtou MSB s druhou hranou hodin
nastavení - clock phase- CPHA = 1 SCK CYKLUS
1
2
3
4
5
6
7
8
MSB
6
5
4
3
2
1
LSB
MSB
6
5
4
3
2
1
LSB
SCK (CPOL=0) SCK (CPOL=1) MOSI (z master) MISO (ze slave) SS (DO SLAVE)
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
5
SPI rozhraní, připojení jednotek slave Připojení více jednotek slave na jeden master, výběr pomocí vstupu /ss , aktivace jednotlivých /ss - programově řízenými výstupy (není součástí rozhraní SPI). Např. u AT89S8252 ovládání pomocí pinů brány P1, P3,.. Vstup /ss - u slave, obdoba funkce /CS - chip select jako pamětí. Určení, s kterou jednotkou slave se komunikuje MOSI MISO SCK
MOSI MISO SCK SS Udd
master
port
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
SS MOSI MISO SCK
0 1 2
slave 1
slave 2
SS MOSI MISO SCK SS
slave 3
6
SPI – STM32 STM32 SPI 8 nebo 16 bit data možné navázat SPI na DMA ( Direct Memory Access)
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
7
SPI rozhraní – implementace v STM32F100 SPI rozhraní NSS slave select slave mod - vstup
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
8
SPI rozhraní - implementace Vysílání MSB – typicky první, případně možnost volby LSB první 8 bitů dat (typicky), v často podpora i 16 bitů dat) rychlosti komunikace, frekvence SCK - programovatelná, SCK 1 až 10-ky MHz Možnost programové implementace rozhraní SPI, které nemají rozhraní SPI - emulace funkce SPI master - programově ovládanými piny brány, při programové implementaci signál SCK nemusí být synchronní ( nemusí mít konstantní periodou). Použití SPI - připojení vstupů. výstupů s posuvnými registry ( ´595), specializovaných obvodů, pamětí, připojení AD, DA převodníků s SPI, budiče LED, budiče relé, řadiče LCD,…. Paměti FLASH s rozhraním SPI např. M25P32 - 4 MByte, jako paměť dat, záznam, černá skříňka, Karty MMC, SD - možnost komnikace s rozhraním SPI, použití karet jako vnější paměti dat, adresace po sektorech 512 byte,
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
9
Využití SPI a sériových rozhraní pro programování uP ISP – „in system programming“ uložení programu a dat do paměti v aplikaci. Často využito rozhraní SPI (uP ATMEL, AVR, Microchip,…) Další způsoby programování paměti FLASH- sériové rozhraní JTAG rozhraní Signály TDI, TDO, TCK, TMS, funkce ladění - On-chip Debug system JTAG obsahují ATmega 16, 32,..), C8051F020 (Silabs) ,všechny procesory s jádrem ARM, STM32,…. a většina nových uP, („JTAG – Emulator“) Dvoudičové ladicí rozhraní – SWD u ARM Cortec- M3, viz STM32VL Discovery U některých uP možnost programování ISP programu BOOT loader - viz dřívější výklad na před. Aktivace vnitřního programu „Boot loader“ na čipu po resetu při. spec. nastavení úrovní na pinech Boot loader aktivně komunikuje s rozhraním ( UART, SPI, CAN, USB,...) a programuje vnitřní paměť Funkce boot - možnost začít práci s uP bez specializovaného vybavení (emulátor, vývojový modul,..) pouze s vlastním procesorem STM32F100 Booat loader – na UART, STM32F105 Boot – UART, USB, CAN A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
10
Programování paměti FLASH mikroprocesoru pomocí SPI Řada uP, možnost naprogramování interní FLASH prostřednictvím SPI ISP -“In - System Programming“ - programování paměti FLASH mikropočítače v obvodu Naprogramování mikropočítače v obvodu: aktuálním kódem - program ve FLASH, kalibrační data, specifická data - jazyková lokalizace přístroje (varianty hlášení a textů), sériové číslo,… Data v EEPROM - kalibrační data,... Možnost výrobní diagnostiky - naprogramování diagnostických programů, s ISP uvažovat při návrhu obvodu a desek plošných spojů a konektorů Varianty EEPROM – připojeny na uP, ale možnost programování i bezdrátověRFID technika (výroba STM), není nutnost elektricky připojovat
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
11
Rozhraní IIC bus Rozhraní - IIC bus, Inter Integrated Circuit Bus, původce, patent , firma Philips (nyní NXP), označení také I2CBus, původní určení - spotřební elektronika (radio, TV, video,…) Typ sběrnice- otevřený kolektor (volba velikosti Rp - výchozí hodnota RP = 2k7 ), připojení více obvodů, master - slave, možnost - multimaster. VDD možné též 3,3 V – zavisí na typech obvodu (senzory CMOS – napájení zásadně 3,3 V, tedy i na IIC bus sloužící pro konfiguraci senzoru)
RP
VDD +5V
RP
SDA SCL SCL1 výst.
DATA1 výst.
SCL2 výst.
DATA2 výst. SDA sériová data SCL sériové hodiny
SCL vstup
DATA vstup
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
SCLK VST.
DATA VST. 12
Rozhraní IIC bus - signály SCL - hodinový signál, generuje master SDA - data, generuje master nebo slave Změna stavu SDA při přenosu dat možná pouze při SCL = L Frekvence SCL - max. 100 kHz Standard speed označení také SM, 400 kHz Fast speed, označení někdy také FM (fast mode), 1 MHz Fast mode plus (označení FM+ ) signál SCL nemusí být synchronní, není určen minimální frekvence (možnost asynchronní signál), STM32F100 SM a FM, STM32F051 podporuje SM, FM, FM+
SDA
data platná při SCL = 1
SCL
změna dat při SCL = 0 data stabilní
změna dat
0 SDA
data stabilní 1 přenos bitů 0 a 1
SCL A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
13
Rozhraní IIC Ultra Fast mode UFm Princip přenosu pro SM, FM, FM+ je shodný, odlišnost v rychlosti a velikosti, budič – otevřený kolektor, proud budiče (SM, FM do 3 mA, FM+ 20 až 30 mA) Ultra Fast – mode UFm až 3,4 MHz, modifikovaný princip, Pro režim UFm , signály USCL, USDA „U“ – značí ultrafast UFm pro rychlý přenos dat z procesoru do periferie, (ne opačně) není možnost potvrzení od periferie „Acknowledge“ budič – typu Push – Pull – obdoba elementárního invertoru CMOS (viz. před. dříve) Možnost prodloužení sběrnice UFm pomocí standardních budičů CMOS logiky (push – pull) LED driver ( PCU9955 firma NXP) Otázka velikosti parazitních kapacit, pro vyšší rychlost – potřeba pro jejich nabití a vybití větších proudů – pro FM+ nižší hodnota odporu pull - up rezistorů řadič I2C bus pro UFm – umožňuje kombinaci módů FM+ a UFm ( v FM_ konfigurace, zjišťování stavu periferie, přechod na UFm- pouze jednosměrný přenos dat (analogie – rychlý diktát, nejdříve příprava, informace,.., pak rychlý přenos dat, pak zpomalení – kontrola, je vše v pořádku?) A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
14
Rozhraní IIC bus- start, stop
Začátek a konec přenosu zprávy určuje master začátek přenosu - start, SDA spádová hrana při SCL = H konec přenosu - stop, SDA náběžná hrana při SCL = H
SDA
start
stop
SCL S
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
P
15
Rozhraní IIC bus - potvrzení Příklad - přenos dat ACh z master do slave s adresou 50h adresace slave (7 bitů + příznak čtení/ zápis, ACK - potvrzení od slave, přenos dat 8 bitů, ACK - slave, stop - master obvykle - přenosy více Byte potvrzení - ACK přijímajícím ( master, nebo slave)
zápis start S SDA
A6 A5 A4 A3 A2 A1 A0 1
0 1 0 0
0
0
R A W C K 0
MSB
LSB
A stop D7 D6 D5 D4 D3 D2 D1 D0 C P K 1 0 1 0 1 1 0 0
SCL ACK ze slave adresace
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
data
16
Přenos vícebajtové zprávy po rozhraní IIC Po start S a vyslání adresy obvodu - možný přenos dat pouze jedním směrem, čtení nebo zápis, konec přenosu – stop P Kombinovaný přenos - start - zápis, nový start Sr (bez stop) čtení, konecstop. master zapisuje do slave master
S
adr.
W
data ACK
slave
data ACK
data ACK
P ACK
master čte ze slave master slave
S
adr.
R
ACK ACK data
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
NOT ACK
ACK data
P
data
17
Rozhraní IIC Bus, implementace IIC Bus, adresa i 10 bitová ( prefix + 3 horní bity adresy, pak 8 bitů adresy Rozhraní IIC bus implementováno v řadě uP , i pod jinými názvy, např. TWI (Two Wire Interface) a další- z důvodu patentové ochrany. Možnost programové emulace rozhraní IIC Bus v uP, které nemají IIC Bus, (příklad ADSP BF 533 pro nastavení obrazového senzoru CMOS) Využití vstupně výstupních bran - úprava na režim emulace funkce otevřený kolektor - přepínání výstup - stav L, nebo vstup (viz přednášky dříve- využití obousměrného výstupu nebo třístavového výstupu jako výstupu s otevřeným kolektorem). Otázka: Popište způsob využití pinu vstupně -výstupní brány (která má ve výstupním režimu pouze PUSH – PULL mód) – pro komunikaci s rozhraním IIC bus.
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
18
Rozhraní IIC v STM32 Master i Slave mode příjmu dat na DMA
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
19
IIC – STM32 STM32 možnost detekce vlastní adresy (7 nebo 10 bitové adresy), až 2 slave adresy podpora rychlosti přenosu s frekvencí SCL 100 kHz a 400 kHz
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
20
Rozhraní IIC Bus, použití
Rozšíření a specifikace komunikace - SMBus - System Management Bus (firmy -Intel, Duracel,….) je nyní v každém PC. Použití IICBus, mnoho integrovaných obvodů , obvodově nenáročné, pouze dva vodiče SCL, SDA, Příklad paměť 24C02, snímače teploty, obvody pro dohled v PC, obvody spotřební elektroniky, IO expandery, obvody RTC ( Real Time clock), IIC Busnastavení CMOS obrazových senzorů, viz senzory firem Kodak, Micron Aptina, ….) Další informace: IIC bus, princip funkce, použití http://www.standardics.nxp.com/literature/presentations/i2c/pdf/interface.solutions.pdf SM Bus specifikace http://www.standardics.nxp.com/literature/books/i2c/pdf/smbus.specification.pdf
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
21
Připojení řadiče emulovaným rozhraním sběrnice Připojení programovatelných řadičů PPI 8255, 8253,. řadič Ethernet, řadič CAN,….standardně na sběrnici mikropočítače ? je možno použít čítače / časovače 8253 s obvodem AT89C2051, který nemá vyvedenu sběrnici? ANO Programová emulace sběrnice pomocí brány P1 a pinů z brány P3, programová emulace funkce signálu /RD, /WR, adresy A1, A0 pomocí pinů brány Jeden cyklus zápisu nebo čtení - potřeba více instrukcí, pozor- změna směru brány- vstupní- výstupní mód
Příklad - připojení ext. řadiče Ethernet k ARM7 typu LPC2114, viz, aplik. nota firmy NXP
A4B38NVS, 2012, J.Fischer, kat. měření, ČVUT - FEL
22