Главная страница
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
qrcode

ОСНОВЫ ПРОГРАММИРОВАНИЯ микроконтроллеров. Основы программирования


НазваниеОсновы программирования
АнкорОСНОВЫ ПРОГРАММИРОВАНИЯ микроконтроллеров.pdf
Дата07.06.2019
Размер4.03 Mb.
Формат файлаpdf
Имя файлаOSNOVY_PROGRAMMIROVANIYa_mikrokontrollerov.pdf
оригинальный pdf просмотр
ТипУчебно-методическое пособие
#52985
страница1 из 7
КаталогОбразовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
  1   2   3   4   5   6   7

А.С. Васильев, О.Ю. Лашманов,
А.В. Пантюшин
ОСНОВЫ ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ
Санкт-Петербург
2016
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
УНИВЕРСИТЕТ ИТМО
А.С. Васильев, О.Ю. Лашманов
А.В. Пантюшин
ОСНОВЫ ПРОГРАММИРОВАНИЯ
МИКРОКОНТРОЛЛЕРОВ
Учебно-методическое пособие
Санкт-Петербург
2016
Васильев А.С., Лашманов О.Ю., Пантюшин А.В. Основы программирования микроконтроллеров. – СПб: Университет ИТМО, 2016.
– 95с.
В учебно-методическом пособии рассмотрены основные понятия и концепции программирования микроконтроллеров на примере микроконтроллеров серии 1986ВЕ9x производства ЗАО «ПКК МИЛАНДР» в среде разработки Keil uVision. Первый раздел пособия содержит техническое описание устройства микроконтроллера, теоретические сведения основ программирования на языке С в среде Keil uVision, второй раздел включает варианты индивидуальных заданий для выполнения студентами лабораторных работ по курсу «Основы программирования микроконтроллеров». Задания рассчитаны на освоение и понимания концепции и базового функционала микроконтроллеров серии 1986ВЕ9x.
Учебно-методическое пособие предназначено для студентов по направлению подготовки 12.04.02 «Оптотехника», 27.04.05 «Инноватика» и специальности 12.05.01 «Электронные и оптико-электронные приборы и системы специального назначения»
Рекомендовано к печати ученым советом факультета лазерной и световой инженерии, протокол № 9от 13.09.2016
Университет
ИТМО – ведущий вуз
России в области информационных и фотонных технологий, один из немногих российских вузов, получивших в 2009 году статус национального исследовательского университета. С 2013 года Университет ИТМО – участник программы повышения конкурентоспособности российских университетов среди ведущих мировых научно-образовательных центров, известной как проект «5 в
100».
Цель
Университета
ИТМО– становление исследовательского университета мирового уровня, предпринимательского по типу, ориентированного на интернационализацию всех направлений деятельности.
Университет ИТМО, 2016
Васильев А.С., Лашманов О.Ю., Пантюшин А.В. 2016

3
Введение
Микроконтроллеры представляют собой мощный вычислительный инструмент и прекрасную основу для создания современных высокопроизводительных и экономичных встраиваемых систем многоцелевого назначения. В одной микросхеме микроконтроллер включает в себя микропроцессор, память программ (обычно на основе ПЗУ), память данных (обычно на основе ОЗУ), устройство ввода/вывода, генератор тактовых сигналов, аппаратную поддержку интерфейсов I2C, SPI и многое другое.
Однокристальные микроконтроллеры находят широкое применение в самых разнообразных сферах: от измерительных приборов, фотоаппаратов и видеокамер, принтеров, сканеров и копировальных аппаратов до изделий электронных развлечений и всевозможной домашней техники.
В рамках обучения принципам работы и архитектуры микроконтроллеров студентам будет предложено познакомиться с микроконтроллерами серии 1986ВЕ9x, основанных на ядре ARM архитектуре, производства одного из лидера разработки отечественной микроэлектронной элементной базы ЗАО «ПКК МИЛАНДР».
На заре возникновения микропроцессоров разработка программного обеспечения происходила исключительно на том или ином языке ассемблера, ориентированном на конкретное устройство. По сути, такие языки представляли собой символьные мнемоники соответствующих машинных кодов, а перевод мнемоники в машинный код выполнялся транслятором. При этом главный недостаток ассемблерных языков заключался в том, что каждый из них был привязан к конкретному типу устройств и логике его работы. Кроме того, ассемблер сложен в освоении, что требует достаточно больших усилий для его изучения, но главное, если впоследствии потребуется перейти на использование микроконтроллеров других производителей, то они (усилия) окажутся потраченными впустую.
Студентам, обучающимся по курсу «Основы программирования микроконтроллеров», будет предложено разрабатывать программное обеспечение микроконтроллера на языке С. Язык С, являясь языком высокого уровня, лишен недостатков ассемблера и может использоваться для программирования любого микропроцессора, для которого есть компилятор с языка С. В языке С все низкоуровневые операции, выполняемые компьютерами, представлены в виде абстрактных конструкций, позволяющих разработчикам сосредоточиться на программировании одной лишь логики, не заботясь о машинном коде.
Изучив язык С, можно легко переходить от одного семейства микроконтроллеров к другому, тратя гораздо меньше времени на разработку.

4
Студентам в рамках данного курса будет предложено выполнять разработку программного обеспечения микроконтроллеров в интегрированной среде программирования Keil uVision фирмы Keil
Elektronik. Данная среда предоставляет пользователю набор средств для написания и отладки кода программ для микроконтроллеров на основе ядра
ARM7, ARM9, Cortex M3 и других. В бесплатный дистрибутив входят следующие средства:
– интегрированная среда разработки;
– С/С++ компилятор;
– макроассемблер и линковщик;
– дебаггер uVision;
– дополнительные утилиты.

5
1 Архитектура микроконтроллеров серии 1986ВЕ9x
Микроконтроллеры серии 1986ВЕ9x, К1986ВЕ9х и К1986ВЕ92QI,
К1986ВЕ92QC
(далее
1986ВЕ9x), построенные на базе высокопроизводительного процессорного RISC ядра ARM Cortex-M3, содержат встроенную 128 Кбайт Flash-память программ и 32 Кбайта ОЗУ.
Микроконтроллеры работают на тактовой частоте до 80 МГц. Периферия микроконтроллера включает контроллер USB интерфейса со встроенным аналоговым приемопередатчиком со скоростями передачи 12 Мбит/с (Full
Speed) и 1.5 Мбит/с (Low Speed), стандартные интерфейсы UART, SPI и I2C, контроллер внешней системной шины, что позволяет работать с внешними микросхемами статического ОЗУ и ПЗУ, NAND Flash-памятью и другими внешними устройствами. Микроконтроллеры содержат три 16-разрядных таймера с 4 каналами схем захвата и ШИМ с функциями формирования
«мертвой зоны» и аппаратной блокировки, а также системный 24-х разрядный таймер и два сторожевых таймера. Кроме того, в состав микроконтроллеров входят: два 12-разрядных высокоскоростных (до 0,5М выборок в сек) АЦП с возможностью оцифровки информации от 16 внешних каналов и от встроенных датчиков температуры и опорного напряжения; два 12-разрядных ЦАП; встроенный компаратор с тремя входами и внутренней шкалой напряжений.
Встроенные RC генераторы HSI (8 МГц) и LSI (40 кГц) и внешние генераторы HSE (2…16 МГц) и LSE (32 кГц) и две схемы умножения тактовой частоты PLL для ядра и USB интерфейса позволяют гибко настраивать скорость работы микроконтроллеров. Архитектура системы памяти за счет матрицы системных шин позволяет минимизировать возможные конфликты при работе системы и повысить общую производительность. Контроллер DMA позволяет ускорить обмен информацией между ОЗУ и периферией без участи процессорного ядра.
Встроенный регулятор предназначенный для формирования питания внутренний цифровой части формирует напряжения 1,8В и не требует дополнительных внешних элементов. Таким образом, для работы микроконтроллера достаточно одного внешнего напряжения питания в диапазоне от 2,2 до 3,6В. Так же в микроконтроллерах реализован батарейный домен, работающий от внешней батареи при отсутствии основного питания. В батарейном домене могут быть сохранены специальные флаги, а также работают часы реального времени. Встроенные детекторы напряжения питания могут отслеживать уровень внешнего основного питания, уровень напряжения питания на батареи. Аппаратные схемы сброса при просадке питания позволяют исключить сбойную работу микросхемы при выходе уровня напряжения питания за допустимые приделы.

6
Основные технические характеристики микроконтроллеров серии
1986ВЕ9x приведены в таблице 1.
Таблица1 – Основные характеристики микроконтроллеров серии
1986ВЕ9x
1986ВЕ91T
1986ВЕ94T
К1986ВЕ91Н4
1986ВЕ92У
К1986ВЕ92QI
К1986ВЕ92QC
1986ВЕ93У
Корпус
132 вывода бескорпусная
64 вывода
48 выводов
Ядро
ARM Cortex-M3
ПЗУ
128 Кбайт Flash
ОЗУ
32 Кбайт
Питание
2,2…3,6 В
Частота
80 МГц
USER IO
96 96 43 30
USB
Device и Host FS (до 12 Мбит/с) встроенный PHY
UART
2 2
2 2
CAN
2 2
2 2
SPI
2 2
2 1
I2C
1 1
1
-
2 х 12- разрядных
АЦП
16 каналов
16 каналов
8 каналов
4 канала
ЦАП
12 разрядов
2 2
1 1
Компаратор
3 входа
3 входа
2 входа
2 входа
Внешняя шина
32 разряда
32 разряда
8 разряда
-
На рисунке1 показана структурная блок-схема микроконтроллера серии 1986ВЕ9x.

7
Рисунок 1 – Структурная блок-схема микроконтроллера серии 1986ВЕ9x.
Память микроконтроллера реализована с единым адресным пространством, которая имеет максимальный объем 4 Гбайта. В данное адресное пространство отображаются различные модули памяти и периферии.
AMBA
AHB
Арбитр шины
ARM Cortex-M3
RISC CORE
Контроллер прямого доступа в память, DMA
Контроллер прерываний
1хСистемный таймер
JTAG/SW отладчик
ППЗУ (Flash)
Память программ
4х8Kх32
ОЗУ
Память программ
8Kх32
ПЗУ
256х32
Внешняя системная шина
AHBAPB мост
К
он трол л
ер
U
A
R
T
2 к
ан ал а
К
он трол л
ер
I2C
К
он трол л
ер си ст ем н
ой ч
ас тот ы
К
он трол л
ер
S
P
I
2 к
ан ал а
К
он трол л
ер
B
K
P
Д
ет ек тор н
ап ряж ен и
й
П
орт ы
в в
од а/
в ы
в од а
3х16 та й
м ер
А
Ц
П
Ц
А
П
U
S
B

8
Адрес
Размер
Блок
Примечание
Память программ
0x0000_0000 1 Кбайт
BOOT ROM
Загрузочная программа
0x0800_0000 128 Кбайт
EEPROM
Область Flash-памяти программ с пользовательской программой
0x1000_0000 256 Мбайт
EXTERNAL BUS
Область доступа к внешней системной шине
Память данных
0x2000_0000 32Кбайт
SYSTEM RAM
Область внутреннего
ОЗУ
0x2200_0000 16 Мбайт
SYSTEM RAM
Bit Band Region
Область битового доступа внутреннего
ОЗУ
0x3000_0000 256 Мбайт
EXTERNAL BUS
Область доступа к внешней системной шине
Периферия
0x4000_0000 1536 байт
0
CAN1
Регистры контроллера интерфейса CAN1 0x4000_8000 1536 байт
1
CAN2
Регистры контроллера интерфейса CAN2 0x4001_0000 904 байт
2
USB
Регистры контроллера интерфейса USB
0x4001_8000 20 байт
3
EEPROM_CNTRL Регистры контроллера
Flash-памяти программ
0x4002_0000 48 байт
4
RST_CLK
Регистры контроллера сигналов тактовой частоты
0x4002_8000 80 байт
5
DMA
Регистры контроллера прямого доступа в память
0x4003_0000 72 байт
6
UART1
Регистры контроллера интерфейса UART1 0x4003_8000 72 байт
7
UART2
Регистры контроллера интерфейса UART2 0x4004_0000 36 байт
8
SPI1
Регистры контроллера интерфейса SSP1 0x4005_0000 28 байт
10
I2C1
Регистры контроллера интерфейса I2C1 0x4005_8000 4 байт
11
POWER
Регистры детектора напряжения питания
0x4006_0000 12 байт
12
WWDT
Регистры контроллера сторожевого таймера
WWDT
0x4006_8000 16 байт
13
IWDT
Регистры контроллера сторожевого таймера
IWDT
0x4007_0000 128 байт
14
TIMER1
Регистры управления

9
После включения питания и снятия внутренних и внешних сигналов сброса микроконтроллер начинает выполнять программу из загрузочной
Таймер 1 0x4007_8000 128 байт
15
TIMER2
Регистры управления
Таймер 2 0x4008_0000 128 байт
16
TIMER3
Регистры управления
Таймер 3 0x4008_8000 48 байт
17
ADC
Регистры управления
АЦП
0x4009_0000 12 байт
18
DAC
Регистры управления
ЦАП
0x4009_8000 12 байт
19
COMP
Регистры управления
Компаратора
0x400A_0000 36 байт
20
SPI2
Регистры контроллера интерфейса SSP1 0x400A_8000 32 байт
21
PORTA
Регистры управления порта А
0x400B_0000 32 байт
22
PORTB
Регистры управления порта B
0x400B_8000 32 байт
23
PORTC
Регистры управления порта C
0x400C_0000 32 байт
24
PORTD
Регистры управления порта D
0x400C_8000 32 байт
25
PORTE
Регистры управления порта E
0x400D_8000 84 байт
27
BKP
Регистры доступа и управления батарейным доменом
0x400E_8000 32 байт
29
PORTF
Регистры управления порта F
0x400F_0000 88 байт
30
EXT_BUS_CNTRL Область доступа к внешней системной шине
0x4200_0000 16 Мбайт
PERIPHERAL Bit Band
Region
Область битового доступа к регистрам периферии
0x5000_0000 256 Мбайт
EXTERNAL BUS
Область доступа к внешней системной шине
Внешняя системная шина
0x6000_0000 1 Гбайт
EXTERNAL BUS
Область доступа к внешней системной шине
0xA000_0000 1 Гбайт
EXTERNAL BUS
Область доступа к внешней системной шине
SYSTEM REGION
0xE000_0000 256 Мбайт
Системные регистры процессора ARM
Cortex-M3

10
области ПЗУ BOOT ROM. В загрузочной программе микроконтроллер определяет, в каком из режимов он будет функционировать, и переходит в этот режим.
1.1 Описание основных регистров микроконтроллера
1.1.1 Порты ввода/вывод
Микроконтроллер имеет 6 портов ввода/вывода. Порты 16-разрядные, и их выводы мультиплексируются между различными функциональными блоками, управление для каждого вывода отдельное. Для того, чтобы выводы порта перешли под управление того или иного периферийного блока, необходимо задать для нужных выводов выполняемую функцию и настройки.
Для работы с портами ввода/вывода используются библиотека
MDR32F9Qx_port.h, которая описывает следующие регистры:
– MDR_PORTA
– MDR_PORTB
– MDR_PORTC
– MDR_PORTD
– MDR_PORTE
– MDR_PORTF
Для инициализации используется структура типа PORT_InitTypeDef с полями:
– PORT_OE – направление передачи данных
– PORT_FUNC – режим работы вывода порта
– PORT_MODE – режим работы контроллера
– PORT_SPEED – скорость фронта вывода
– PORT_Pin – выбор выводов для инициализации
Функциональное назначение портов приведено в таблице 120 и 121 стр.184 спецификации микроконтроллеров серии 1986ВЕ9х.
1.1.2 Контроллер АЦП.
В микроконтроллере реализовано два 12-разрядных АЦП. С помощью АЦП можно оцифровать сигнал от 16 внешних аналоговых выводов порта D и от двух внутренних каналов, на которые выводятся датчик температуры и источник опорного напряжения. Скорость выборки составляет до 512 тысяч преобразований в секунду для каждого АЦП.
В качестве опорного напряжения преобразования могут выступать:
– питание АЦП с выводов AUCC и AGND
– внешние сигналы с выводов ADC0_REF+ и ADC_REF-
Контроллер АЦП позволяет:
– оцифровать один из 16 внешних каналов;

11
– оцифровать значение встроенного датчика температуры;
– оцифровать значение встроенного источника опорного напряжения;
– осуществить автоматический опрос заданных каналов;
– выработать прерывание при выходе оцифрованного значения за заданные пределы;
– запускать два АЦП синхронно для увеличения скорости выборки.
Для осуществления преобразования требуется не менее 28 тактов синхронизации CLK. В качестве синхросигнала может выступать частота процессора CPU_CLK, либо частота ADC_CLK, формируемая в блоке
«Сигналы тактовой частоты».
Для работы с портами ввода/вывода используются библиотека
MDR32F9Qx_adc.h
, которая описывает регистры АЦП с помощью задания структур ADC_InitTypeDef для настройки преобразователя и
ADCx_InitTypeDef для настройки канала преобразователя.
Структура ADC_InitTypeDef имеет следующие поля:
– ADC_SynchronousMode
– выбор режима работы двух преобразователей;
– ADC_StartDelay – определяет задержку начала преобразований от старта системы [0:15];
– ADC_TempSensor
– включение/выключение температурного датчика;
– ADC_TempSensorAmplifier – включение/выключение усилителя температурного датчика;
– ADC_TempSensorConversion
– включение/выключение преобразования показаний от температурного датчика;
– ADC_IntVRefConversion
– включение/выключение преобразования показаний опорного напряжения;
– ADC_IntVRefTrimming – определяет интервал считывания значений опорного напряжения;
Структура ADCx_InitTypeDef имеет следующие поля:
– ADC_ClockSource – указывает источник тактирующего сигнала;
– ADC_SamplingMode – задает режим считывания показаний;
– ADC_ChannelSwitching – включение/выключение возможности переключения каналов АЦП;
– ADC_ChannelNumber – номер канала;
– ADC_Channels – маска номеров каналов;
– ADC_LevelControl – включение/выключение слежения за уровнем
АЦП;
– ADC_LowLevel – значение нижнего уровня АЦП;
– ADC_HighLevel – значение верхнего уровня АЦП;
– ADC_VRefSource – определяет источник питания АЦП;

12
– ADC_IntVRefSource – определяет тип напряжения источника питания АЦП;
– ADC_Prescaler – задает параметры предусилителя;
– ADC_DelayGo
– задержка начала преобразований в последовательном режиме;
Подробное описание регистров блока контроллера АЦП приведено в таблице 292 стр.318 спецификации микроконтроллеров серии 1986ВЕ9х.
1.1.3 Контроллер ЦАП.
В микроконтроллере реализовано два ЦАП. Для включения ЦАП необходимо чтобы бит Cfg_ON_DACx был установлен в 1, используемые выводы ЦАП порта Е были сконфигурированы как аналоговые и были отключены какие-либо внутренние подтяжки. Оба ЦАП могут работать независимо или совместно. При независимой работе ЦАП (бит
Cfg_SYNC_A=0
) после записи данных в регистр данных DACx_DATA на выходе DACx_OUT формируется уровень напряжения, соответствующий записанному значению. При синхронной работе (бит Cfg_SYNC_A=1) данные обоих ЦАП могут быть обновлены одной записью в один из регистров DACx_DATA. ЦАП может работать от внутренней опоры
Cfg_M_REFx=0
, тогда ЦАП формирует выходной сигнал в диапазоне от 0 до напряжения питания AUCC. В режиме работы с внешней опорой
Cfg_M_REFx=1
ЦАП формирует выходное напряжение в диапазоне от 0 до значения DACx_REF.
Для работы с аналоговыми портами ввода/вывода используется библиотека
MDR32F9Qx_dac.h
Для работы
ЦАП достаточно сконфигурировать соответствующий вывод на работу в аналоговом режиме и использовать функцию DAC1_Init или DAC2_Init для указания источника опорного напряжения.
Описание регистров блока контроллера АЦП приведено в таблице
307 стр.326 спецификации микроконтроллеров серии 1986ВЕ9х.
  1   2   3   4   5   6   7

перейти в каталог файлов

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей

Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей