Rozhraní mikrořadiče, SPI, IIC bus,.. Přednáška 11 (12)
A4B38NVS, kat. měření, ČVUT - FEL, Praha J. Fischer
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
1
Náplň přednášky Sériová rozhraní rozhraní SPI funkce, vlastnosti Použití SPI, pro ISP, pojem Boot loader- paměti Flash s SPI rozhraním I2S – pro připojení audiokodeku I2C (IIC Bus)
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
2
STM32F100 – sériová rozhraní SPI, I2C
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)
SPI USART (LIN) I2C
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
(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
3
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
SCK +5V SS
SS
4
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
5
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
6
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
SS MOSI MISO SCK
0 1 2
slave 1
slave 2
SS MOSI MISO SCK SS
slave 3
7
SPI – STM32 STM32 SPI 8 nebo 16 bit data možné navázat SPI na DMA ( Direct Memory Access)
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
8
SPI rozhraní – implementace v STM32F100 SPI rozhraní NSS slave select slave mod - vstup
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
9
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
10
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
11
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
12
Rozhraní I2S Rozhraní I2S – pro připojení obvodu „audio codec“ (kodér- dekodér) převodník analogo- číslicový a číslicovo- analogový, stereo pro generování zvuku, typické vzorkovací frekvence do 48 kHz ( zvukové CD 44,100 kHz) Sériový přenos dat – signál SD 16, 24 nebo 32 bitů, Hodinový signál CK – pro řízení přenosu sériových dat Signál WS- výběr kanálu- pravý. levý kanál MCK - Master clock output navíc- hodinový signál pro audiokodek, (pokud např. audikodek nemá vlastní krystalový oscilátor). u STM32 fMCK = 256 x fS kde fS je vzorkovací frekvence audiosignálu Rozhraní I2S často implementováno v mikrořadičích s jádrem ARM Cortex – M3 U některých vyšších variant STM32Fxxx – např. ST32F103xCx, nebo STM32F407), funkce rozhraní I2S- jako rozšíření SPI
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
13
Rozhraní I2S průběhy signálu I2S v STM32F103 xC – možno volit pořadí, njdříbe LSB nebo MSB, délka přenosu 16,24, 32 bitů,.. polarita hod.signálu CK
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
14
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
SCLK VST.
DATA VST. 15
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
16
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
17
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
P
18
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
data
19
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
NOT ACK
ACK data
P
data
20
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
21
Rozhraní IIC v STM32 Master i Slave mode příjmu dat na DMA
A4B38NVS, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
22
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
23
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, 2014, J.Fischer, kat. měření, ČVUT - FEL, Praha
24