Notice
This page is located in a preparation section.

1. Úvod do předmětu

Seznámíte se s koncepcí fungování mikrokontrolérů, jak jsou konstruované uvnitř.

  1. Opakování digitální techniky
  2. Architektura MCU

Instalace Programů

Nainstalovat prostředí pro vytváření programu podle preferencí každého. Všechna prostředí produkují stejný výsledek, takže záleží na každém, co bude používat. Jednotliví cvičící používají tyto programy:

Dokumentace procesoru STM32F401

Mikrokontrolér

Mikrokontrolér (MCU) je sekvenční programovatelný obvod se zabudovanými periferiemi a pamětí uvnitř čipu. Některé MCU disponují ještě externí pamětí, kterou lze využít na rozšířenou RAM paměť nebo další periferie. Činnost MCU závisí na posloupnosti příkazů strojového kódu programu uloženého v paměti ROM nebo dočasně v paměti RAM. Každá instrukce vyžaduje určitý strojový čas na své provedení. Pro zvýšení rychlosti mikrokontroléru se používá tzv. pipeline příkazů, kdy se při zpracování překrývají fáze více instrukcí. Díky tomu se v jednom okamžiku mohou současně zpracovávat různé části několika instrukcí a zvyšuje se propustnost jádra, viz. následující schéma nebo Referenční manuál STM32F401 na straně 48.

Fig. 1

Fig. 2

Struktura MCU

Strukturu najdete též v datasheetu STM32F401 na straně 14 .

Na blokovém schématu je vidět, z jakých hlavních částí se mikrokontrolér skládá a jak jsou tyto části vzájemně propojeny. Pro orientaci v datasheetu je užitečné sledovat zejména:

  • Jádro procesoru: ARM Cortex-M4 s jednotkami NVIC, MPU, ETM a FPU.
  • Paměti: interní Flash, SRAM a vyrovnávací paměť cache.
  • Sběrnice: propojení přes AHB, APB1 a APB2, na které jsou připojené jednotlivé periferie.
  • Hodiny a reset: interní a externí oscilátory, PLL, blok Reset & clock control a dohled napájení.
  • Porty a externí signály: GPIO porty a jejich napojení na piny mikrokontroléru.
  • Periferie: časovače, komunikační rozhraní (USART, SPI, I2C, USB, SDIO), ADC, DMA, EXTI, RTC, watchdog a další bloky.

Z tohoto schématu lze rychle zjistit, jaké periferie daný mikrokontrolér obsahuje, na kterou sběrnici jsou připojené, odkud jsou taktované a jak souvisejí s externími piny pouzdra.

Paměťový prostor

Architektura jádra ARM je navržena s lineárním 32-bitovým paměťovým prostorem, kde pro jednotlivé části je vyhrazeno zpravidla 512 MB paměti, což odpovídá adresám pro:

  • ROM paměť (programová) 0x0000 00000x1FFF FFFF
  • RAM paměť (datová) 0x2000 00000x3FFF FFFF
  • Periferie 0x4000 00000x5FFF FFFF

V případě, že mikrokontrolér má paměť pro oblast ROM a RAM menší než 512 MB, je využita zpravidla pouze spodní část adres. U STM32F401RE je interní Flash fyzicky umístěna na adrese 0x0800 0000. Při startu z interní Flash je tato paměť současně dostupná i přes alias na adrese 0x0000 0000, odkud procesor po resetu načítá vektorovou tabulku. Konkrétně:

  • Flash paměť (programová) 0x0800 00000x0807 FFFF (512 kB)
  • RAM paměť (datová) 0x2000 00000x2001 7FFF (96 kB)

Informace o paměťovém prostoru najdete v datasheetu na straně 51 .

Periferie MCU

Každý mikrokontrolér obsahuje sadu registrů pro ovládání jednotlivých periferií nebo interních obvodů/bloků. Abychom mohli s mikrokontrolérem pracovat, je třeba se seznámit se základní konfigurací následujících registrů: RCC, GPIOx, NVIC, EXTI a pochopit jejich použití. Obecně jsou registry jednotlivých periferií umístěny v adresovém prostoru na určité bázové adrese a konkrétní konfigurační registry jsou určeny offsetem od této bázové adresy.

Přístup z jazyka C se po vložení hlavičkového souboru provádí přes strukturu daného registru, např. pro skupinu RCC a registr AHB1ENR:

Referenční manuál STM32F401 na straně 110.

RCC→AHB1ENR

Pro přístup z jazyka symbolických adres se využívá nastavení pomocných registrů a offsetu instrukce LDR, viz příklad 01 - GPIO LED a Vybraná instrukční sada pro STM32

Na následujících řádcích je práce s registrem RCC→AHB1ENR, který je na bázové adrese 0x40023800 s posunem o 0x30. Instrukce načte do registru R2 obsah z adresy 0x40023830.

  ldr  R0, =0x40023800
  ldr  R1, =0x30
  ldr  R2, [R0, R1]

Při nastavování registru zpravidla pracujeme na úrovni bitů. Je třeba dbát na to, aby při operaci nastavení nebyly ovlivněny bity registru, které s danou operací nesouvisí.
courses/b2m37mam/labs/01.txt · Last modified: 2026/04/15 14:32 by nentvond