STM32 Урок 5

stm32
Мисля, че е време да разгледаме архитектурата ARM Cortex-M3 като цяло и по-конкретно STM32, защото това е важно за разбирането на много от характеристиките на тези микроконтролери в бъдеще - например часовник и как работи DMA. Преди да се заемем с по-сложни теми, ще проучим вътрешностите на МК и тяхното взаимодействие помежду си.

Хардуерен модел Cortex-M3

Нека да разгледаме схемата на Cortex-M3:

stm32

Той показва „блоковете“, които изграждат микроконтролера, но всъщност те са взаимно свързани и неразделни един от друг в истинска микросхема. Освен това архитектурата на MK се състои от няколко нива на абстракция и ние, които не сме професионални дизайнери на процесори, ще разгледаме най-горните и най-малко подробни, за да избегнем подуване на мозъка. На това ниво три ключови компонента са най-важни за нас.

Изчислително ядро ​​(CM3Core)

Изпълнява инструкции, извършва изчисления в своя ALU (аритметична логическа единица). Неговата харвардска архитектура позволява едновременно зареждане на инструкции и достъп до паметта - благодарение на това, както и на тристепенния конвейер, повечето инструкции се изпълняват в един тактов цикъл. Ядрото Cortex-M3 поддържа набор от инструкции Thumb-2, който съдържа както 32-битови, така и 16-битови инструкции за намаляване на количеството код чрез по-кратки скокове; има 13 регистри с общо предназначение, намаляващи необходимостта от чести достъпи до паметта.

Вложен контролер за прекъсвания (NVIC)

Тази част е отговорна за генериране на прекъсвания за различни събития: външни - промяна на логическото ниво на входа на крака, събуждане от режим на заспиване; и вътрешни - завършване на получаване/изпращане на данни, препълване на брояча на таймера и др. Контролерът поддържа до 240 прекъсвания и до 256 нива на приоритет, а влизането в манипулатора на прекъсвания отнема 12 цикъла на часовника (запазване на рамката на стека и регистрите) и прекъсванията могат да бъдат вложени: ако по време на обработката на прекъсванията възникне прекъсване с по-нисък приоритет, вторият ще бъде обработен след 6 тактови цикъла след обработката на първия. Освен това има немаскируеми прекъсвания - NMI (нНа-Мпопита Азnterrupts), които не могат да бъдат изчистени без обработка и които прекъсват изпълнението на програмата, независимо от каквито и да било условия. Такива прекъсвания се генерират, когато външен часовник източник (кристал, керамичен резонатор) не успее и се открие неправилна инструкция.

Матрица на шината

Съвременните процесори съдържат много различни шини, към които е свързана останалата част от системата. В зората на компютърната ера автобус просто се наричаше пакет от проводници, свързващи няколко устройства към процесор, който можеше да работи само с едно устройство в даден момент, докато останалите бяха неактивни по това време, тъй като шината беше една за всички . Освен това всички устройства бяха принудени да работят със същата скорост (най-бавното устройство), което предотвратяваше нарастването на производителността на системите.

Днес гумите са станали по-сложни, броят им се е увеличил с порядък. Отделни автобуси дават възможност за работа с няколко устройства едновременно и при различни скорости: всеки автобус може да има своя собствена скорост. Можете гъвкаво да управлявате консумацията на енергия, като изключвате неизползвани устройства и цели шини. За да се контролира цялата тази орда от автобуси, беше необходимо да се въведе специален контролер, който контролира обмена на данни между шините и процесора.

Архитектурата Cortex-M3 осигурява 4 шини, свързани към матрицата:

  • ICode, за извличане на инструкции и вектори на прекъсвания - за потребителски код. 32-битова шина тип AHB-Lite.
  • DCode, за извличане/запис на данни и достъп за отстраняване на грешки - за персонализиран код. 32-битова шина тип AHB-Lite.
  • System, за извличане на инструкции и прекъсващи вектори, както и за извличане/запис на данни и достъп за отстраняване на грешки в системното пространство - за вътрешните компоненти на MC. 32-битова шина тип AHB.
  • PPB (ривати ериферен Б.us), за извличане/запис на данни и достъп за отстраняване на грешки - за периферни устройства. 32-битова шина APB.