Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архитектура и структурная организация микроконтроллеров семейства CORTEX-M. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
31
Ядро микроконтроллера на базе процессорного ядра с архитектурой
ARM.
Встроенная память для хранения программ и данных, включающая
ПЗУ и ППЗУ программ и ОЗУ данных. Предусмотрена возможность
подключения внешней памяти и ПУ через блок внешней шины данных.
Обмен с внешними устройствами может выполняться в режиме прямо-
го доступа в память с использование блока DMA.
Системные периферийные устройства (ПУ) микроконтроллера, обеспе-
чивающие его функционирование в различных режимах.
Встроенные периферийные устройства микроконтроллера, включаю-
щие:
цифровые входы/выходы общего назначения для приема/выдачи
дискретных сигналов,
аналоговые входы/выходы для приема/выдачи аналоговых сигна-
лов,
последовательные интерфейсы для обмена с внешними устройства-
ми,
таймеры, реализующие временные функции, сигналы ШИМ и др.
Встроенные ПУ осуществляют обмены с внешними устройствами объек­та управления через шесть 16-разрядных портов ввода вывода порт A - порт F. Все устройства в составе микроконтроллера программно доступны для
его ядра через мост AHB/APB и внутренний последовательный интерфейс
PHB. В свою очередь ядро доступно для внешних отладочных систем через ин-
терфейс JTAG.
4.2. Организация адресных пространств микроконтроллера
Все адресные пространства микроконтроллера объединены в единое ад­ресное пространство 4 Гбайт. В данное адресное пространство отображаются различные модули памяти и другие устройства (табл. 4.1).
32
Таблица 4.1
Адресные пространства микроконтроллера
Граничные
адреса
Адресные пространства
Объем
Адресуемые
объекты
0xFFFFFFFF
0xE0000000
Системное адресное пространство
ядра микроконтроллера
4GB
512MB
Регистры
системных
ПУ
0x60000000
Область доступа
к внешней шине
3,5GB
2GB
0x50000000
ПУ на внешней шине
1,5GB
256MB
Регистры ПУ мик-
роконтроллера
0x42FFFFFF
0x42000000
Область побитовой адресации
ПУ микроконтроллера
16MB
0x400F7FFF
0x40000000
ПУ микроконтроллера
420KB
0x30000000
Внешняя память данных ОЗУ
1GB
256MB
Память данных
0x22FFFFFF
0x22000000
Область побитовой адресации
памяти данных ОЗУ
16MB
Ox20007FFF
0x20000000
Внутренняя память данных ОЗУ
32KB
1FFFFFFF
0x10000000
Внешняя память программ
0,5GB
256MB
0x083FFFFF
0x08000000
Внутренняя память программ
(ППЗУ FLASH)
128KB
Память программ
0x000003FF
0x00000000
Память BOOT (ПЗУ)
1KB
Адресное пространство памяти программ.
Область BOOT ПЗУ (адреса 0x00000000 - 0x000003FF). Предназначена для хранения программы запуска микроконтроллера. В ходе выполнения этой
программы определяется режим запуска основной программы или переход в
режим программирования микроконтроллера. Область ППЗУ FLASH (адреса 0x08000000 - 0x083FFFFF). Основная об-
ласть энергонезависимой памяти программы, доступной для перепрограммиро-
вания пользователем. Память предназначена для хранения основной рабочей
программы.
33
Область внешней памяти программ (адреса 0x10000000 - 0х1FFFFFFF). Область отображения внешней программной памяти, подключенной к внешней системной шине, в общее адресное пространство микроконтроллера. Предна-
значена для хранения кода программ во внешних микросхемах памяти, подсо-
единенных к внешней системной шине.
Адресное пространство памяти данных.
Область внутренней памяти данных (адреса 0x20000000 - 0x20007FFF). Основная область ОЗУ, предназначенная для хранения данных программы. В данной области также располагается стек.
Область побитовой адресации памяти данных bit band region (адреса 0x22000000 - 0x22FFFFFF). Область ОЗУ, предназначенная для осуществления
побитного доступа. Команды обращения в данную область позволяют осу­ществлять операции «чтение-модификация-запись бита», «установка бита» и «сброс бита» одной инструкцией. Область внешней памяти данных (адреса 0x30000000 - 0x3FFFFFFF). Об­ласть отображения внешнего ОЗУ данных, подключенного к внешней систем­ной шине в общее адресное пространство микроконтроллера. Предназначено
для хранения данных во внешних микросхемах памяти, подсоединенных к
внешней системной шине.
Адресное пространство встроенных периферийных устройств
Область ПУ микроконтроллера (адреса 0x40000000 - 0x400F7FFF). Об­ласть отображения регистров встроенных ПУ в общее адресное пространство микроконтроллера.
Область побитовой адресации ПУ микроконтроллера (адреса 0x42000000
- 0x42FFFFFF). Область адресного пространства, предназначенная для осу-
ществления побитного доступа к регистрам встроенных ПУ и выполнения опе­раций «чтение-модификация-запись бита», «установка бита» и «сброс бита» одной командой.
34
Таблица 4.2
Базовые адреса встроенных ПУ микроконтроллера
Базовые
адреса
Объем
областей
ПУ
Пояснения
0x40000000
1536 байт
CAN1
Регистры контроллера интерфейса CAN1
0x40008000
1536 байт
CAN2
Регистры контроллера интерфейса CAN2
0x40010000
904 байт
USB
Регистры контроллера интерфейса USB
0x40018000
20 байт
EEPROM_C NTRL
Регистры контроллера Flash-памяти про­грамм
0x40020000
48 байт
RST_CLK
Регистры контроллера сигналов тактовой
частоты
0x40028000
80 байт
DMA
Регистры контроллера прямого доступа в
память
0x40030000
72 байт
UART1
Регистры контроллера интерфейса UART1
0x40038000
72 байт
UART2
Регистры контроллера интерфейса UART2
0x40040000
36 байт
SPI1
Регистры контроллера интерфейса SSP1
0x40050000
28 байт
I2C1
Регистры контроллера интерфейса I2C1
0x40058000
4 байт
POWER
Регистры детектора напряжения питания
0x40060000
12 байт
WWDT
Регистры контроллера сторожевого таймера
WWDT
0x40068000
16 байт
IWDT
Регистры контроллера сторожевого таймера WDT
0x40070000
128 байт
TIMER1
Регистры управления Таймер 1
0x40078000
128 байт
TIMER2
Регистры управления Таймер 2
0x40080000
128 байт
TIMER3
Регистры управления Таймер 3
0x40088000
48 байт
ADC
Регистры управления АЦП
0x40090000
12 байт
DAC
Регистры управления ЦАП
0x40098000
12 байт
COMP
Регистры управления Компаратора
0x400A0000
36 байт
SPI2
Регистры контроллера интерфейса SSP1
0x400A8000
32 байта
PORTA
Регистры управления порта А
0x400B0000
32 байта
PORTB
Регистры управления порта B
0x400B8000
32 байта
PORTC
Регистры управления порта C
0x400C0000
32 байта
PORTD
Регистры управления порта D
0x400C8000
32 байта
PORTE
Регистры управления порта E
0x400D8000
84 байта
BKP
Регистры доступа и управления батарейным
доменом BKP
0x400E8000
32 байта
PORTF
Регистры управления порта F
0x400F0000
88 байт
EXT_BUS_ CNTRL
Управление доступом к внешней системной
шине
Область ПУ на внешней шине (адреса 0x50000000 - 0x5FFFFFFF). Об­ласть отображения регистров ПУ, подключенных к внешней системной шине, в адресное пространство микроконтроллера. Перечень базовых адресов общего адресного пространства, выделенных для встроенных ПУ микроконтроллера, приведен в таблице 4.2.
35
Таблица 4.3
Системное адресное пространство
Диапазоны адресов
Назначение
0xE000E000-0xE000E00F
Системный контроль и идентификация 0xE000EF00-0xE000EFCF
0xE000EFD0-0xE000EFFF
0xE000ED00-0xE000ED8F
Блок системного управления SCB
0xE000E010-0xE000E0FF
Системный таймер SysTick
0xE000E100-0xE000ECFF
Блок прерываний NVIC
0xE000ED90-0xE000EDEF
Блок аппаратной защиты памяти MPU
0xE000EDF0-0xE000EEFF
Отладочные блоки FPB, DWT
Системное адресное пространство ядра микроконтроллера.
Предназначено для отображения регистров, используемых для конфигу­рации, ведения состояний и управления системными устройствами ядра микро­контроллера. Перечень диапазонов системных адресов и их назначения приве­дены в таблице 4.3.
4.3. Организация встроенной памяти микроконтроллера
Блок BUS MATRIX
Блок BUS MATRIX предназначен для переключения системных AHB-
шин I Code, D Code, System Bus и DMA Bus между различными областями па-
мяти. Переключение производится автоматически на основании адреса запроса
каждой конкретной шины. Если адреса запросов не пересекаются, то они могут
быть выполнены одновременно. Если адреса запросов пересекаются, то они
выполняются в порядке приоритета. Приоритеты обращений заданы аппаратно.
Наивысшим приоритетом обладает запрос по шине System Bus, затем следует
запрос D Code, затем I Code и наименьшим приоритетом обладает запрос DMA
Bus. Если два запроса пришли одновременно, то выполняется запрос с большим
приоритетом. Запрос с меньшим приоритетом задерживается до окончания вы-
полнения запроса с большим приоритетом. При переключении между шинами
36
возникает дополнительная задержка в один цикл. Если запросы идут непосред-
ственно друг за другом, то дополнительных задержек не возникает.
Память BOOT ROM
Память области BOOT ROM реализована в виде MASK ROM, c занесени-
ем информации одним из технологических слоев при изготовлении кристалла
микроконтроллера. Скорость доступа к памяти BOOT ROM – 1 такт системной частоты.
Память EEPROM
Память области EEPROM реализована в виде перепрограммируемой энергонезависимой памяти. Скорость доступа к памяти EEPROM – порядка 40
нс. При работе микроконтроллера на скорости до 100 МГц скорость доступа к
памяти может составлять до 5 циклов системной частоты. При последователь-
ной выборке за счет упреждающего чтения задержка может быть сокращена до
1 такта системной частоты.
Память SRAM
Память области SRAM реализована в виде блока статической памяти. Скорость доступа к памяти SRAM – 1 такт системной частоты.
4.4. Системные периферийные устройства микроконтроллера
К системным ПУ микроконтроллера относятся:
Контроллер тактовой частоты (RST_CLK), реализующий формирование
тактовых частот для процессорного ядра и других устройств микро­контроллера.
Блок батарейного домена и часов реального времени (BKP), предназна-
ченный для сохранения пользовательских данных при отключении ос­новного источника питания (за счет дополнительного источника питания – батарейки) и обеспечения функций часов реального времени.
Блок детектора напряжения питания (PVD), позволяющий контролиро-
вать напряжение питания путем сравнения с внутренними опорными
37
уровнями и в случае превышения или снижения ниже опорного уровня
выработать сигнал или прерывание для программной обработки.
Сторожевой таймер (WDT) на основе вычитающего счетчика, который
должен перезаписываться программно через определённые интервалы времени, в противном случае таймер генерирует сигнал сброса при до­стижении нулевого значения.
4.4.1. Контроллер тактовой частоты (RST_CLK)
Синхронизация процессора CORTEX-M3 и других устройств контроллера
осуществляется с использованием четырех генераторов частоты: Встроенный генератор HSI, вырабатывающий тактовую частоту f0_HSI с ти-
повым значением 8 МГц. Генератор автоматически запускается при появле-
нии питания и первоначально процессорное ядро запускается на тактовой ча-
стоте HSI. Управление генератором осуществляется с использованием сиг-
налов готовности HSIRDY, отключения HSION и подстройки HSITRIM из
регистра BKP_REG_0F в батарейном домене.
Встроенный генератор LSI с тактовой частотой fO_LSI с типовым значением
40 кГц. Управление генератором осуществляется с использованием сигналов
готовности LSIRDY и отключения LSION из регистра BKP_REG_0F в бата­рейном домене.
Внешний генератор HSE для выработки тактовой частоты 2..16 МГц с помо-
щью внешнего резонатора. Запускается по сигналу HSEON в регистре
HS_CONTROL и при выходе в нормальный режим работы вырабатывает
сигнал HSERDY в регистре CLOCK_STATUS.
Внешний генератор LSE для выработки тактовой частоты 32 кГц с помощью
внешнего резонатора. Запускается по сигналу LSEON в регистре
BKP_REG_0F и при выходе в нормальный режим работы вырабатывает сиг-
нал LSERDY в регистре BKP_REG_0F. Генератор может работать при про-
падании основного питания и используется для работы часов реального вре-
мени.
38
Таблица 4.4
Регистры блока контроллера тактовой частоты
Регистр
Адрес
31 -14
13
12
11
10 9 8 7 6 5 4 3 2 1 0
CLOCK_ STATUS
0х40020000
HSE
RDY
PLL CPU
RDY
PLL USB
RDY
PLL_ CONTROL
0х40020004
PLL
CPU
MUL[3:0]
PLL
USB
MUL[3:0]
PLL CPU RLD
PLL CPU
ON
PLL USB RLD
PLL USB
ON
HS_ CONTROL
0х40020008
HSE BYP
HSE
ON
CPU_ CLOCK
0х4002000C
HCLK
SEL[1:0]
CPU
C3
SEL[3:0]
-
CPU
C2
SEL
CPU
C1
SEL[1:0]
USB_ CLOCK
0х40020010
USB
CLK
EN
-
USB
C3
SEL
-
USB
C2
SEL
USB
C1
SEL[1:0]
ADC_ MCO_ CLOCK
0х40020014
ADC
CLK
EN
-
ADC
C3
SEL[3:0]
-
ADC
C2
SEL[1:0]
-
ADC
C1
SEL[1:0]
RTC_ CLOCK
0х40020018
HSI
RTC
EN
HSE RTC
EN
HSI
SEL[3:0]
HSE
SEL[3:0]
Управление тактовыми частотами ведется через регистры блока RST_CLK (см. табл. 4.4) . При включении питания микроконтроллер запуска-
ется на частоте HSI генератора. Выдача тактовых сигналов синхронизации для
всех периферийных блоков, кроме RST_CLK, отключена. Для начала работы с
нужным периферийным блоком необходимо включить его тактовую частоту в
регистре PER_CLOCK. Некоторые контроллеры интерфейсов (UART, CAN,
USB, Таймеры) могут работать на частотах, отличных от частоты процессорно-
го ядра, поэтому в соответствующих регистрах (UART_CLOCK, CAN_CLOCK,
USB_CLOCK, TIM_CLOCK) могут быть заданы их скорости работы. Для изме-
нения тактовой частоты ядра можно перейти на другой генератор и/или вос-
пользоваться блоком умножения тактовой частоты. Для корректной смены так-
товой частоты сначала должны быть сформированы необходимые тактовые ча-
стоты и затем осуществлено переключение на них на соответствующих муль-
типлексорах, управляемых регистрами CPU_CLOCK и USB_CLOCK.
39
PER_ CLOCK
0х4002001C
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10 9 8 7 6 5 4 3 2 1 0
-
EXT_BUS_CNTRL
PORTF
­BKP
­PORTE
PORTD
PORTC PORTB
PORTA
SPI2 COMP
DAC ADC TIMER3 TIMER2 TIMER1
IWDT
WWDT
POWER
I2C1
­SPI1
UART2
UART1
DMA RST_CLK.
EEPROM_CNTRL
USB
CAN2 CAN1
31-27
26
25
24
23 - 16
15 - 8
7 - 0
CAN_ CLOCK
0х40020
020
CAN2
CLK
EN
CAN1
CLK
EN
-
CAN2
BRG
[7:0]
CAN1
BRG
[7:0
TIM_ CLOCK
0х40020
024
TIM3
CLK
EN
TIM2
CLK
EN
TIM1
CLK
EN
TIM3
BRG [7:0]
TIM2
BRG
[7:0]
TIM1
BRG [7:0]
UART_ CLOCK
0х40020
028
UART2
CLK
EN
UART 1
CLK
EN
-
UART 2
BRG
[7:0]
UART 1
BRG [7:0]
SSP_ CLOCK
0х40020
02C
SSP2
CLK
EN
SSP 1
CLK
EN
-
SSP 2
BRG
[7:0]
SSP 1
BRG [7:0]
Таблица 4.5
Регистры блока BKP
Адрес
Название
Описание
0x400D_8000
REG_00
Регистр MDR_BKP->REG_00 аварийного сохранения 0
… … …
0x400D_8034
REG_0D
Регистр MDR_BKP->REG_0D аварийного сохранения 13
0x400D_8038
REG_0E
Регистр MDR_BKP->REG_0E аварийного сохранения 14 и управления
0x400D_803C
REG_0F
Регистр MDR_BKP->REG_0F аварийного сохранения 15 и управления блоками RTC, LSE, LSI и HSI
0x400D_8040
RTC_CNT
Регистр MDR_BKP->RTC_CNT основного счетчика часов реального времени
0x400D_8044
RTC_DIV
Регистр MDR_BKP->RTC_DIV предварительного делите­ля основного счетчика
0x400D_8048
RTC_PRL
Регистр MDR_BKP->RTC_PRL основания счета предва­рительного делителя
0x400D_80
RTC_ALR M
Регистр MDR_BKP->RTC_ALRM значения для сравнения основного счетчика и выработки сигнала ALRF
0x400D_8050
RTC_CS
Регистр MDR_BKP->RTC_CS управления и состояния флагов часов реального времени
4.4.2. Батарейный домен BKP и часы реального времени
Батарейный домен имеет 16 встроенных 32-х разрядных регистров ава-
рийного сохранения. 15-й и 14-й регистры служат для хранения бит управления батарейным доменом, оставшиеся регистры 0-13 могут быть использованы разработчиком программы.
Часы реального времени позволяют организовать механизм отсчета вре-
мени в кристалле, в том числе при отключении основного источника питания.
В таблице 4.5 перечислены регистры ВКР и дано их краткое описание.
40
Включение часов реального времени осуществляется битом RTC EN в ре­гистре REG_0F. В качестве источника тактовой частоты часов реального вре­мени могут выступать генераторы LSI, LSE, HSE или HSI c дополнительным делителем до 256. Генератор LSI может быть выбран при наличии основного питания Ucc, LSE может быть выбран при наличии основного Ucc или батарей­ного питания BUcc. Генераторы HSE и HSI входят в состав блока управления тактовыми частотами RST_CLK и могут быть выбраны только при наличии питания, формируемого внутренним регулятором напряжения из Ucc. Выбор между источниками тактовой частоты осуществляется битами в регистре RTC_ CLOCK в блоке RST_CLK. При возможном отключении основного источника питания Ucc в качестве источника тактовой частоты должен использоваться ге­нератор LSE, так как он также имеет питание от батарейного питания BUcc. Би­ты управления генератором LSE расположены в батарейном домене и таким образом при отключении основного питания они не сбрасываются.
Для калибровки тактовой частоты используются биты CAL[6:0] в реги­стре REG_0F. Значение CAL определяет, какое число тактов из 220 будет замас-
кировано. Таким образом, с помощью бит CAL[6:0] производится замедление
хода часов. Изменение значения бит CAL может быть осуществлено в ходе ра-
боты часов реального времени. Регистр RTC_DIV выступает в роли 20-битного предварительного дели-
теля входной тактовой частоты, таким образом, чтобы на его выходе была так-
товая частота в 1 Гц. Для задания коэффициента деления регистра RTC_DIV
используется регистр RTC_PRL. Регистр RTC_CNT предназначен для отсчета времени в секундах и рабо-
тает на выходной частоте делителя RTC_DIV. Регистр RTC_ALR предназначен
для задания времени, при совпадении с которым вырабатывается флаг преры­вания и пробуждения процессора. Таким образом, бит STANDBY в регистре
REG_0F, отключающий внутренний регулятор напряжения, автоматически
сбрасывается при совпадении RTC_CNT и RTC_ALR. Бит STANDBY также
может быть сброшен с помощью вывода WAKEUP.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]