Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Микропроцессорная техника: введение в Cortex-M3

Покупка
Артикул: 680703.01.99
Доступ онлайн
115 ₽
В корзину
Учебное пособие нацелено на формирование у студентов практических навыков разработки и программирования микропроцессорных устройств автоматики физических установок, приборов радиационной безопасности человека и окружающей среды, а также различных приборов биофизического и медицинского назначения. Предназначено для студентов технических специальностей Физико-технологического института всех уровней обучения.
Огородников, И. Н. Микропроцессорная техника: введение в Cortex-M3: Учебное пособие / Огородников И.Н., - 2-е изд., стер. - Москва :Флинта, Изд-во Урал. ун-та, 2017. - 116 с. ISBN 978-5-9765-3194-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/951093 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство образования и науки Российской Федерации

Уральский федеральный университет
имени первого Президента России Б. Н. Ельцина

И. Н. Огородников

МИКРОПРОЦЕССОРНАЯ ТЕХНИКА:
ВВЕДЕНИЕ В CORTEX-M3

Учебное пособие

Рекомендовано методическим советом УрФУ
для студентов, обучающихся по направлениям подготовки
140801.65 «Электроника и автоматика физических установок»,
201000.62 «Биотехнические системы и технологии»,
140800.62 «Ядерные физика и технологии»

Москва
Издательство «ФЛИНТА»
Издательство Уральского университета
2017

2-е издание, стереотипное

УДК 004.31:004.42(075.8)
ББК 32.973.26-04я73
О-39

Рецензенты:
Институт химии твердого тела УрО РАН
(гл. науч. сотр., канд. физ.-мат. наук,
д-р хим. наук М. В. К у з н е ц о в);
Д. И. Б е с к р е с т н о в, директор, ООО «Авитек-плюс»

Огородников, И. Н.
О-39
Микропроцессорная 
техника: 
введение 
в 
Cortex-M3 
[Электронный ресурс]: учеб. пособие / И. Н. Огородников. – 2-е 
изд., стер. – М. : ФЛИНТА : Изд-во Урал. ун-та, 2017. – 116 с.

ISBN 978-5-9765-3194-9 (ФЛИНТА)
ISBN 978-5-7996-1499-7 (Изд-во Урал. ун-та)

Учебное пособие нацелено на формирование у студентов практических
навыков разработки и программирования микропроцессорных устройств
автоматики физических установок, приборов радиационной безопасности
человека и окружающей среды, а также различных приборов биофизического и медицинского назначения.
Предназначено для студентов технических специальностей Физикотехнологического института всех уровней обучения.

Библиогр.: 10 назв. Табл. 9. Рис. 44.

УДК 004.31:004.42 (075.8)
ББК 32.973.26-04я73

c⃝ Уральский федеральный университет, 2015
ISBN 978-5-9765-3194-9 (ФЛИНТА)
ISBN 978-5-7996-1499-7 (Изд-во Урал. ун-та)

ОГЛАВЛЕНИЕ

Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5

1. Введение в платформу Cortex-M3 . . . . . . . . . . . . . . . . . .
7
1.1. Введение
. . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2. Общая характеристика Cortex-M3
. . . . . . . . . . . .
7
1.3. Микропроцессорное ядро Cortex . . . . . . . . . . . . .
11
1.3.1.
Конвейер . . . . . . . . . . . . . . . . . . . . . . .
11
1.3.2.
Регистровый файл . . . . . . . . . . . . . . . . . .
11
1.3.3.
Регистр статуса программы . . . . . . . . . . . .
12
1.3.4.
Режимы работы микропроцессора
. . . . . . . .
13
1.3.5.
Организация памяти Cortex-M3 . . . . . . . . . .
14
1.3.6.
Системный интерфейс
. . . . . . . . . . . . . . .
16
1.4. Архитектура микроконтроллеров STM32
. . . . . . . .
17
1.4.1.
Организация внутренних шин . . . . . . . . . . .
17
1.4.2.
Распределение памяти
. . . . . . . . . . . . . . .
18
1.4.3.
Таймеры общего и специального назначения . .
21
1.4.4.
Блок захвата/сравнения
. . . . . . . . . . . . . .
22
1.5. Обработка прерываний . . . . . . . . . . . . . . . . . . .
25
1.5.1.
Контроллер прерываний . . . . . . . . . . . . . .
25
1.5.2.
Таблица векторов прерываний
. . . . . . . . . .
28
1.6. Тактовые генераторы . . . . . . . . . . . . . . . . . . . .
31

2. Отечественные микроконтроллеры с ядром Cortex-M3 . . . . .
33
2.1. Архитектура микроконтроллеров 1986BE9x . . . . . . .
33
2.1.1.
Общая характеристика . . . . . . . . . . . . . . .
33
2.1.2.
Функциональная схема . . . . . . . . . . . . . . .
35
2.1.3.
Режимы энергопотребления . . . . . . . . . . . .
37
2.1.4.
Цифровые интерфейсы . . . . . . . . . . . . . . .
37
2.1.5.
Аналоговые блоки
. . . . . . . . . . . . . . . . .
39
2.1.6.
Режимы работы микроконтроллера
. . . . . . .
41
2.2. Демонстрационно-отладочные платы
. . . . . . . . . .
43
2.2.1.
Общая характеристика платы 1986EvBrd_64
. .
43
2.2.2.
Компоновка платы 1986EvBrd_64 . . . . . . . . .
44
2.2.3.
Интерфейс для подключения отладчика . . . . .
48
2.3. Средства разработки . . . . . . . . . . . . . . . . . . . .
50
2.3.1.
Интегрированная среда разработки Keil uVision
51
2.3.2.
Стандартная библиотека периферийных устройств 54

3

3. Программирование платформы Cortex-M3 . . . . . . . . . . . .
55
3.1. Программирование периферийных устройств стенда . .
55
3.1.1.
Светодиодные индикаторы
. . . . . . . . . . . .
55
3.1.2.
Графический дисплей . . . . . . . . . . . . . . . .
63
3.1.3.
Цифроаналоговый преобразователь . . . . . . .
72
3.1.4.
Встроенный аналоговый компаратор
. . . . . .
76
3.1.5.
Аналого-цифровой преобразователь . . . . . . .
81
3.2. Программирование часов реального времени . . . . . .
94
3.3. Программирование счетчика-таймера и прерываний . .
103

Библиографический список . . . . . . . . . . . . . . . . . . . . . . . . 113

Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

4

ПРЕДИСЛОВИЕ

Предлагаемое учебное пособие основано на семестровом курсе по
основам микропроцессорной техники, читаемом в Уральском федеральном университете для студентов Физико-технологического института, специализирующихся в областях электроники и автоматики
физических установок, приборов для применения в области радиационной безопасности человека и окружающей среды, защиты от излучений, радиационной экологии, биомедицинской инженерии. Учебное пособие может быть полезно и для студентов других родственных
специальностей. Рассмотрены практические вопросы программирования микропроцессорных устройств. Обсуждаются также некоторые
вопросы проектирования устройств на их основе.Отметим,что данное
учебное пособие касается лишь практической части учебного курса по
основам микропроцессорной техники. Оно содержит дополнительный теоретический материал и техническую информацию, которые
необходимы студентам при программировании микропроцессорных
устройств на платформе Cortex-M3 во время практических занятий,
лабораторного практикума, а также при выполнении индивидуального домашнего задания и курсовой работы. Отсюда название – введение в Cortex-M3. Теоретические основы микропроцессорной техники,
излагаемые в лекционном курсе, содержатся в учебнике по микропроцессорной технике [1]. Детальное описание возможностей платформы
Cortex-M3 можно найти в монографиях [2, 3].
Следует отметить, что микропроцессорная техника представляет
собой весьма обширную, динамично развивающуюся область знаний.
В данное пособие включен лишь ограниченный круг вопросов, выбор
и глубина освещения которых продиктованы в первую очередь требованиями федеральных государственных образовательных стандартов
высшего профессионального образования по направлениям подготовки 140800.62 «Ядерные физика и технологии», 201000.62 «Биотехнические системы и технологии» и специальности 140801.65 «Электроника
и автоматика физических установок».
В первой главе приведены необходимые сведения об организации
микропроцессорного ядра Cortex-M3. Глава является кратким введением в основы организации данного микропроцессорного ядра.
После общей характеристики и описания возможностей и перспектив ядра Cortex-M3 обсуждаются наиболее важные особенности ядра: конвейер, регистровый файл, регистр статуса программы, режимы

5

Предисловие

работы микропроцессорного ядра, организация адресного пространства платформы Cortex-M3 и системный интерфейс. Далее идет обсуждение архитектурных особенностей микроконтроллеров STM32,
выполненных на основе микропроцессорного ядра Cortex-M3. Уделено внимание организации внутренних шин, распределению памяти.
Обсуждаются счетчики-таймеры общего и специального назначений,
а также средства для эффективной работы в режиме реального времени, такие как схемы входного захвата и выходного сравнения. Специальное внимание уделено организации обработки прерываний, возможностям контроллера прерываний, программированию векторов
прерываний. В завершении главы обсуждается схема тактирования и
организация внутренних и внешних тактовых генераторов.
Вторая глава посвящена краткой характеристике отечественных
микроконтроллеров с ядром Cortex-M3. Обсуждаются архитектура
микроконтроллеров серии 1986BE9x, функциональная схема, режимы энергопотребления, цифровые интерфейсные узлы (параллельные
порты ввода-вывода и последовательные интерфейсы UART, I2C, SPI,
CAN, USB) и встроенные аналоговые блоки (аналого-цифровые и
цифроаналоговые преобразователи, аналоговый компаратор), а такжережимы работы микроконтроллера.Отдельно обсуждается организация демонстрационно-отладочной платы, ее общая характеристика,
компоновка и интерфейс для подключения отладчика. В завершении
главы обсуждаются средства разработки программного обеспечения.
На примере интегрированной среды разработки Keil uVision продемонстрирована методика выбора и инсталляции среды разработки, а
также организация программного проекта. Уделено внимание характеристике стандартных библиотек периферийных устройств.
Третья глава посвящена разработке авторских учебных программ,
основное назначение которых – закрепить полученные теоретические
знания по микроконтроллерам с ядром Cortex-M3. Основные разделы
этой главы связаны с программированием периферийных устройств
стенда (светодиодные индикаторы, графический дисплей, цифроаналоговый и аналого-цифровой преобразователи, встроенный аналоговый компаратор), программированием часов реального времени в домене батарейного питания микроконтроллера, программированием
счетчика-таймера для работы в режиме прерываний. Все данные приведены в объеме, достаточном для их последующего практического
использования.
Отметим, что рассматриваемый семестровый курс основ микропроцессорной техники является вводным курсом перед последующим
изучением более сложного профессионально-ориентированного курса «Микропроцессорные системы».

6

1. ВВЕДЕНИЕ В ПЛАТФОРМУ CORTEX-M3

1.1. Введение

Период времени, прошедший с 2005 г., характеризуется значительными успехами в области разработки микроконтроллеров общего назначения на основе микропроцессорного ядра ARM7/ARM9, имеющего архитектуру с сокращенным набором команд (RISC) фирмы ARM
Ltd. В настоящее время различными производителями выпускается
почти две с половиной сотни различных типов ARM-микроконтроллеров.
Из зарубежных производителей необходимо прежде всего отметить компанию ST Microelectronics.Этой фирмой выпущено семейство
микроконтроллеров STM32, выполненное на основе микропроцессорного ядра ARM Cortex-M3, которое считается эталоном по балансу
рабочих характеристик и стоимости. Эти контроллеры изначально
ориентированы на применение в приборах с малым энергопотреблением и жесткими требованиями к характеристикам управления в
режиме реального времени.
В 2008 г. компания ЗАО «ПКК Миландр» (г. Зеленоград) приобрела у компании ARM лицензию на процессорное ядро ARM Cortex-M3.
На базе данного процессорного ядра фирмой «Миландр» были разработаны высокопроизводительные 32-разрядные микроконтроллеры
серии 1986ВЕ9x индустриального применения. Отечественные микроконтроллеры серии 1986ВЕ9x выпускаются в различных модификациях, отличающихся количеством выводов и некоторыми функциями.
Детальное изложение всех особенностей организации семейства
Cortex-M3 можно найти в [2, 3]. Ниже мы обсудим только минимальный набор информации, необходимой для программирования платформы Cortex-M3.

1.2. Общая характеристика Cortex-M3

Семейство ARM Cortex – это новое поколение процессоров, которые выполнены по стандартной архитектуре и отвечают различным
технологическим требованиям. В отличие от других микропроцессоров ARM, семейство Cortex является завершенным изделием, кото
7

1. Введение в платформу Cortex-M3

рое объединяет стандартное микропроцессорное ядро и системную
архитектуру. Микроконтроллеры STM32 выполнены на основе ядра Cortex-M3, которое специально разработано для применений, где
необходимы развитые системные ресурсы и при этом малое энергопотребление. Они характеризуются настолько низкой стоимостью, что
могут конкурировать с традиционными 8- и 16-битными микроконтроллерами. Cortex-M3 является стандартизованным микроконтроллерным ядром, которое помимо 32-битного микропроцессорного ядра содержит систему прерываний, системный таймер SysTick, отладочную систему и предопределенную организацию памяти. Адресное пространство Cortex-M3 объемом 4 Гб разделено на четко распределенные области кода программы, статического ОЗУ, устройств
ввода-вывода и системных ресурсов. В отличие от ядра ARM7, CortexM3 выполнен по гарвардской архитектуре и поэтому имеет несколько шин, позволяющих выполнять операции параллельно. Семейство
Cortex имеет возможность оперировать с фрагментированными данными (unaligned data), что также отличает его от предшествующих
архитектур ARM. Этим гарантируется максимальная эффективность
использования внутреннего статического ОЗУ. Семейство Cortex также поддерживает возможности установки и сброса бит в пределах двух
областей памяти размером 1 Мб по методу bit banding.
Еще одним ключевым компонентом ядра Cortex-M3 является контроллер векторизованных вложенных прерываний NVIC (англ. Nested
Vector Interrupt Controller). Контроллер NVIC предоставляет стандартную структуру прерываний для всех Cortex-микроконтроллеров
и способы их обработки.
Несмотря на то, что ядро Cortex-M3 разрабатывалось как недорогое ядро, оно остается 32-битным микропроцессорным ядром и,
в связи с этим, поддерживает два режима работы: потоковый режим (Thread) и режим обработчика (Handler), для каждого из которых можно сконфигурировать свои собственные стеки. Благодаря этому появляется возможность разработки более интеллектуального программного обеспечения и поддержки операционных систем
реального времени (ОСРВ). В ядро Cortex также входит 24-битный
автоматически перезагружаемый таймер, предназначенный для генерации периодических прерываний и используемый ядром ОСРВ. Если
у микропроцессоров ARM7 и ARM9 имеется два набора инструкций
(32-битный ARM и 16-битный Thumb), то у семейства Cortex предусмотрена поддержка набора инструкций ARM Thumb-2. Этот набор
представляет собой смесь 16- и 32-битных инструкций, которые позволяют добиться производительности 32-битного набора инструкций
ARM и плотности кода, свойственной 16-битному набору инструк
8

1.2. Общая характеристика Cortex-M3

ций Thumb. Thumb-2 – обширный набор инструкций, ориентированный на компиляторы языков C/C++. Это означает, что программа для
Cortex-микроконтроллера может быть полностью написана на языке
программирования C/C++.
Семейство STM32 состоит из двух групп. Группа Performance Line
работает на тактовых частотах до 72 МГц и оснащена полным набором устройств ввода-вывода (УВВ, англ. I/O), а группа Access Line
работает на частотах до 36 МГц и интегрирует ограниченный набор
устройств ввода-вывода.
Встроенные УВВ (два аналого-цифровых преобразователя АЦП,
таймеры общего назначения, последовательные интерфейсы I2C, SPI,
CAN, USB и часы реального времени RTC) гораздо сложнее аналогичных устройств для простых микроконтроллеров.Например,12-битный
АЦП оборудован датчиком температуры и поддерживает несколько
режимов преобразования, а микроконтроллеры с двумя АЦП могут
использовать их совместно еще в девяти режимах преобразования.
По аналогии с этим каждый из четырех таймеров, оснащенных блоками захвата и сравнения, может использоваться как отдельно, так
и совместно, образую более сложные счетные массивы таймеров. У
расширенного таймера (advanced timer) добавлена поддержка управления электродвигателями. Для этого у него предусмотрено 6 комплементарных выходов от широтно-импульсных модуляторов (ШИМ) с
программируемой паузой неперекрытия и вход экстренного останова, который переводит ШИМ-выходы в предварительно запрограммированное безопасное состояние. У интерфейса SPI предусмотрен
аппаратный генератор контрольных сумм (CRC) для 8 и 16 слов, что
упрощает реализацию интерфейса карт флэш-памяти SD и MMC.
В отличие от простых микроконтроллеров, у STM32 также предусмотрен многоканальный блок прямого доступа к памяти (ПДП).
Каждый канал может использоваться для передачи данных между регистрами любого из УВВ и запоминающими устройствами 8/16 или
32-битными словами. Каждое из УВВ может выполнять роль потокового контроллера ПДП, при необходимости отправляя данные или
посылая запрос на их получение. Арбитр внутренней шины и матрица шин минимизируют потребность в арбитраже доступа к шинам со
стороны микропроцессорного ядра и каналов ПДП. Это означает, что
блок ПДП является универсальным, простым в применении и реально
автоматизирует передачу потоков данных внутри микроконтроллера.
Микроконтроллеры STM32 отличаются сочетанием характеристик
малого энергопотребления и высокой производительности. Они способны работать от источника питания 2 В на тактовой частоте 72 МГц
и потреблять при этом ток, с учетом нахождения в активном состо
9

1. Введение в платформу Cortex-M3

янии всех встроенных ресурсов, всего лишь 36 мА. Если же использовать поддерживаемые ядром Cortex экономичные режимы работы,
то потребляемый ток можно снизить до 2 мкА в режиме STANDBY.
Для быстроты возобновления активной работы микроконтроллера
используется внутренний RC-генератор на частоту 8 МГц. Его активность сохраняется на время запуска внешнего генератора. Благодаря
быстроте перехода в экономичный режим работы и выхода из них результирующая средняя потребляемая мощность электропитания еще
больше снижается.
В STM32 интегрирован ряд аппаратных блоков, отвечающих за
безопасность работы микроконтроллера, в т. ч. маломощный супервизор питания, система защиты синхронизации и два отдельных сторожевых таймера. Первый сторожевой таймер относится к оконному
типу (windowed watchdog, WWDT). Его необходимо обновлять только в пределах отведенных временных рамок. Если это сделать слишком рано или слишком поздно, то он сгенерирует сигнал срабатывания. Другой сторожевой таймер полностью независим от первого.
Он синхронизируется от отдельного внутреннего генератора, который
не связан с главной системной синхронизацией. У микроконтроллера
также используется система защиты синхронизации, которая может
выявлять перебои в работе основного внешнего генератора и безопасно переключаться на работу от внутреннего RC-генератора частотой
8 МГц.
Флэш-память STM32 оснащена программируемой блокировкой
чтения через отладочный порт. После активизации этой блокировки будет также невозможно записать что-либо во флэш-память, что
исключает возможность внесения изменений в таблицу векторов прерываний. В остальной части флэш-памяти может быть активирована
блокировка записи. У микроконтроллера STM32 также имеются часы
реального времени и небольшая область энергонезависимого статического ОЗУ, которые питаются от отдельного резервного батарейного
источника электропитания. В этой области имеется вход реагирования на внешнее вмешательство. При изменении состояния на данном
входе генерируется прерывание и обнуляется содержимое энергонезависимого статического ОЗУ.
Иногда фирма ARM ссылается на свои процессоры по наименованию версии архитектуры. В этих обозначениях версия архитектуры
процессора Cortex-M3 определяется как ARMV7M. Иными словами,
процессор Cortex-M3 выполнен по архитектуре ARMV7M и поддерживает исполнение инструкций Thumb-2.

10

1.3. Микропроцессорное ядро Cortex

1.3. Микропроцессорное ядро Cortex

Основой процессора Cortex является 32-битное микропроцессорное ядро, имеющее RISC-систему команд. Данное ядро использует
упрощенную модель программирования ARM7/9, но при этом более
обширный набор инструкций с хорошей поддержкой целочисленной
арифметики, улучшенными битовыми операциями и более строгими
реально-временными характеристиками.

1.3.1. Конвейер

Микропроцессорное ядро Cortex способно выполнять большинство инструкций за один цикл, что достигается с помощью трехступенчатого конвейера:выборка–дешифрация–выполнение.Cortex поддерживает предсказание переходов для минимизации количества перезагрузок конвейера. Во время выполнения одной инструкции следующая инструкция дешифрируется, а третья инструкция считывается
из памяти. Этот механизм отлично работает с линейным кодом, но
если требуется выполнить переход, то, прежде чем продолжить выполнение кода программы, потребуется очистка и перезагрузка конвейера. Трехступенчатый конвейер микропроцессора Cortex оснащен
логикой предсказания переходов. Это означает, что при достижении
инструкции условного перехода выполняется упреждающая выборка.
В результате оба назначения инструкции условного перехода будут
доступны для исполнения и не произойдет снижения производительности. Хуже обстоят дела с инструкциями косвенного перехода, т. к. в
этом случае упреждающую выборку выполнить нельзя и перезагрузка
конвейера может оказаться неизбежной. Конвейер – это инструмент,
от которого зависит результирующая производительность микропроцессора Cortex и который не требует каких-либо действий со стороны
кода программы.

1.3.2. Регистровый файл

Микропроцессорное ядро Cortex-M3 содержит регистровый файл,
состоящий из шестнадцати 32-битных регистров (R0–R15). У регистров R13–R15 имеются особые функции.
R13 выступает в роли указателя стека (SP). Данный регистр является банковым, что делает возможной работу Cortex в двух режимах работы, в каждом из которых используется свое собственное пространство стека. Данная возможность обычно используется ОСРВ, которые

11

1. Введение в платформу Cortex-M3

могут выполнять свой системный код в защищенном режиме. У двух
стеков Cortex имеются собственные наименования: основной стек и
стек процесса.
R14 – регистр связи (LR). Он используется для хранения адреса
возврата из подпрограммы. Благодаря этому регистру Cortex быстро
переходит к подпрограмме и выходит из нее. Если же в программе
используется несколько уровней вложений подпрограмм, то компилятор будет автоматически сохранять R14 в стек.
R15 – счетчик программы (PC). Он является частью центрального регистрового файла, его чтение и обработка могут выполняться
аналогично любым другим регистрам.

1.3.3. Регистр статуса программы

Помимо регистрового файла, имеется отдельный регистр XPSR,
который называется регистром статуса программы. Он не входит в основной регистровый файл, а доступ к нему возможен с помощью двух
специальных инструкций. В XPSR хранятся значения полей, влияющих на исполнение инструкций Cortex. Регистр статуса программы
содержит поля статуса, от которых зависит исполнение инструкций.
Данный регистр разделен еще на три поля: статуса прикладной программы, исполнения программы и прерываний.
Регистр статуса программы содержит поля, от которых зависит
исполнение инструкций. Данный регистр разделен на три поля: статуса прикладной программы, исполнения программы и прерываний
(рис. 1.1). Биты регистра XPSR разделены на три группы, к каждой из
которых возможен доступ по собственному наименованию.

Рис. 1.1. Регистр статуса программы: ICI – возобновляемая прерыванием инструкция; IT – поле ’if then’; ISR – процедура обработки прерывания

Верхние пять бит (флаги кода условия) именуются полем статуса
прикладной программы. Первые четыре флага кода условия N, Z, C, V
(индикация отрицательного (N) или нулевого (Z) результата, переноса
(C) и переполнения (V)) устанавливаются и сбрасываются по итогам
выполнения инструкции обработки данных. Пятый бит Q используется при выполнении математических инструкций с насыщением алгоритмов цифровой обработки сигналов для индикации достижения
переменной своего максимального или минимального значения. Так
же как и 32-битные инструкции ARM, некоторые инструкции Thumb-2

12

Доступ онлайн
115 ₽
В корзину