Главная страница
qrcode

А.В.Пуговкин И.А.Куан Н.К. Ахметов А.В. Бойченко. Методическое пособие по программированию микроконтроллеров. ТУСУР. Методическое пособие по программированию микроконтроллеров Учебно-методическое пособие


НазваниеМетодическое пособие по программированию микроконтроллеров Учебно-методическое пособие
АнкорА.В.Пуговкин И.А.Куан Н.К. Ахметов А.В. Бойченко. Методическое пособие по программированию микроконтроллеров. ТУСУР.pdf
Дата07.06.2019
Размер2.56 Mb.
Формат файлаpdf
Имя файлаA_V_Pugovkin_I_A_Kuan_N_K_Akhmetov_A_V_Boychenko_Metodicheskoe_p
оригинальный pdf просмотр
ТипМетодическое пособие
#52982
страница1 из 3
Каталог
  1   2   3
1
Министерство образования и науки Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ
И РАДИОЭЛЕКТРОНИКИ(ТУСУР)
А.В.Пуговкин, И.А.Куан, Н.К. Ахметов, А.В. Бойченко
Методическое пособие по программированию
микроконтроллеров
Учебно-методическое пособие
Томск
2016
2
Оглавление
3
1.
Описание микроконтроллеров
1.1.
Общие сведения
Микроконтро́ллер (англ. MicroControllerUnit,
MCU) — микросхема, предназначенная для управления электроннымиустройствами.
Типичный микроконтроллер сочетает на одном кристалле функции процессора и периферийных устройств, содержит ОЗУ и (или) ПЗУ.
По сути, это однокристальный компьютер, способный выполнять относительно простые задачи.
Отличается от микропроцессора интегрированными в микросхему устройствами ввода-вывода, таймерами и другими периферийными устройствами.
При проектировании микроконтроллеров приходится соблюдать компромисс между размерами и стоимостью с одной стороны и гибкостью, и производительностью с другой. Для разных приложений оптимальное соотношение этих и других параметров может различаться очень сильно.
Поэтому существует огромное количество типов микроконтроллеров, отличающихся архитектурой процессорного модуля, размером и типом встроенной памяти, набором периферийных устройств, типом корпуса и т. д. В отличие от обычных компьютерных микропроцессоров, в микроконтроллерах часто используется гарвардская архитектура памяти, то есть раздельное хранение данных и команд в ОЗУ и ПЗУсоответственно.
Кроме
ОЗУ, микроконтроллер может иметь встроенную энергонезависимую память для хранения программы и данных.
Многие модели контроллеров вообще не имеют шин для подключения внешней памяти.
Наиболее дешёвые типы памяти допускают лишь однократную запись, либо хранимая программа записывается в кристалл на этапе изготовления
(конфигурацией набора технологических масок). Такие устройства подходят для массового производства в тех случаях, когда программа контроллера не будет обновляться.
Другие модификации контроллеров обладают
4 возможностью многократной перезаписи программы в энергонезависимой памяти.
Неполный список периферийных устройств, которые могут использоваться в микроконтроллерах, включает в себя:

универсальные цифровые порты, которые можно настраивать как на ввод, так и на вывод;

различные интерфейсы ввода-вывода, такие, как UART, I²C, SPI, CAN, USB, IEEE 1394, Ethernet;

аналого-цифровые и цифро-аналоговые преобразователи;

компараторы;

широтно-импульсные модуляторы (ШИМ-контроллер);

таймеры;

контроллерыбесколлекторных двигателей, в том числе шаговых;

контроллеры дисплеев и клавиатур;

радиочастотные приемники и передатчики;

массивы встроенной флеш-памяти;

встроенные тактовый генератор и сторожевой таймер;
5
1.2.
Описание микроконтроллера 1986ВЕ92У
Разработка Центра Проектирования российской компании ЗАО "ПКК
Миландр" – 32-разрядный RISC микроконтроллер.
Микроконтроллеры серии 1986ВЕ9x, К1986ВЕ9х и К1986ВЕ92QI,
К1986ВЕ92QC
(далее
1986ВЕ9x), построенные на базе высокопроизводительного процессорного RISC ядра ARM Cortex-M3, содержат встроенную 128 Кбайт Flash-память программ и 32 Кбайта ОЗУ.
Микроконтроллеры работают на тактовой частоте до 80 МГц. Периферия микроконтроллера включает контроллер USB интерфейса со встроенным аналоговым приемопередатчиком со скоростями передачи 12 Мбит/с
(FullSpeed) и 1.5 Мбит/с (LowSpeed), стандартные интерфейсы UART, SPI и
I2C, контроллер внешней системной шины, что позволяет работать с внешними микросхемами статического ОЗУ и ПЗУ, NAND Flash-памятью и другими внешними устройствами. Микроконтроллеры содержат три 16-разрядных таймера с 4 каналами схем захвата и ШИМ с функциями формирования
«мертвой зоны» и аппаратной блокировки, а также системный 24-х разрядный таймер и два сторожевых таймера. Кроме того, в состав микроконтроллеров входят: два 12-разрядных высокоскоростных (до 0,5М выборок в сек) АЦП с возможностью оцифровки информации от 16 внешних каналов и от встроенных датчиков температуры и опорного напряжения; два 12-разрядных ЦАП; встроенный компаратор с тремя входами и внутренней шкалой напряжений.
6
Таблица 1.1 - Основные характеристики микроконтроллеров серии
1986ВЕ9х
Таблица 1.2 - Сравнение микроконтроллеров STMи Миландр
Stm32f0
1986ВЕ92У
Корпус
Н18.64-1В,
LQFP64
UFQFN32, LQFP32,
LQFP48,LQFP64
Ядро
ARM Cortex-M0
ARM Cortex-M3
ПЗУ
До 64кбайт Flash
128 Кбайт Flash
ОЗУ
8кбайт
32 кбайт
Питание
2...3.6В
2.2...3.6В
Частота
48МГц
80 МГц
Температура
-40°С ….+105°С
- 60°С...+125°С
Коммуникационные
интерфейсы
I2C, USART, SPI,
I2S,HDMI
I2C, USART, SPI,
CAN,HDMI
7
Рисунок 1.1 – Структурная блок-схема микроконтроллера 1986ВЕ9х
8
2.
Демонстрационно-отладочная
плата
1986EvBrd_64.
Техническое описание.
2.1.
Общие положения.
Демонстрационно-отладочная плата
1986EvBrd_64
(далее
1986EvBrd_64) предназначена для:

демонстрации функционирования и оценки производительности микроконтроллера 1986ВЕ92У и его основных периферийных модулей;

демонстрации функционирования интерфейсных микросхем CAN и
COM (RS-232) интерфейсов;

отладки собственных проектов с применением установленных на плате блоков;

программирования памяти программ микроконтроллеров
1986ВЕ92У.
Для демонстрации функционирования, 1986EvBrd_64 подключается к:

к COM порту персонального компьютера;

к CAN или COM (RS-232) интерфейсу дополнительного внешнего устройства, например, аналогичной демонстрационно-отладочной плате
1986EvBrd_64;

к источнику питания +5В.
Для программирования памяти программ микроконтроллеров
1986ВЕ92У применяется внешний внутрисхемный программатор ULINK2
(Keil) или JEM-ARM-V2(Phyton).
Питание 1986EvBrd_64 осуществляется от адаптера постоянного тока напряжением +5 вольт или от шины USB.
Комплектация:

печатная плата 1986EvBrd_64;

образец микроконтроллера 1986ВЕ92У;

нуль-модемный кабель для COM (RS-232) интерфейса;

кабель USB-A/USB-B;
9

блок питания для отладочной платы

диск с программным обеспечением, документацией, схемотехническими файлами и исходными кодами программ.
2.2.
Состав платы
Рисунок 2.1– Внешний вид демонстрационно-отладочной платы
Установленные на плату компоненты показаны Рисунок 2.2, их описание содержится в Таблица 2.1.
10
Рисунок 2.2– Компоненты платы
Таблица 2.1 - Описание компонентов платы 1986EvBrd_64
№ на
Рисунок
2.2
Описание компонентов платы 1986EvBrd_64 1
Контактирующее устройство для микроконтроллера 1986ВЕ92У.
Микроконтроллер должен быть установлен в спутник-держатель.
2
Разъем Х27 портов A,E,F микроконтроллера.
3
Разъем карты памяти microSD.
4
Переключатели выбора режима загрузки.
5
Разъем USB-B.
11
№ на
Рисунок
2.2
Описание компонентов платы 1986EvBrd_64 6
Подстроечный резистор на 7-м канале АЦП.
7
Разъем BNC внешнего сигнала на 7-м канале АЦП.
8
Разъем BNC внешнего сигнала на 1-м входе компаратора
9
Разъем BNC выхода ЦАП1 10
Разъем Audio 3.5мм выхода ЦАП1 через звуковой усилитель
11
Батарея 3.0В
12
ЖК индикатор 128х64 13
Кнопка WAKEUP
14
Кнопки UP, DOWN, LEFT, RIGHT, SELECT
15
Кнопка RESET.
16
Разъем питания 5В.
17
Фильтр питания
18
Разъем RS-232.
19
Разъем CAN.
20
Приемо-передатчик RS-232 5559ИН4.
21
Приемо-передатчик CAN 5559ИН14.
22
Разъем отладки JTAG-B.
23
Набор светодиодов на порте C.
24
Разъем отладки JTAG-А.
25
Разъем Х26 портов B,C,D микроконтроллера.
Таблица 2.2- Подключение портов микроконтроллера к разъемам Х26,
Х27
Контакт
Вывод МК/питание
Х26
Х27 1,2
GND
GND
12
Контакт
Вывод МК/питание
Х26
Х27 3,4
+3,3V
+3,3V
5
PD0
PA6 6
PD1
PA7 7
PD2
PA4 8
PD3
PA5 9
PD4
PA2 10
PD5
PA3 11
PD6
PA0 12
-
PA1 13
PB0
-
14
PB1
-
15
PB2
PE1 16
PB3
PE3 17
PB4
-
18
PB5
-
19
PB6
PF0 20
PB7
PF1 21
PB8
PF2 22
PB9
PF3 23
PB10
PF4 24
PC0
PF5 25
PC1
PF6 26
PC2
-
27,28
+5V
+5V
29,30
GND
GND
Назначение установленных на плате конфигурационных перемычек:
13

POWER_SEL – выбор источника питания для платы между разъемом USB и внешним источником питания.

SLEW RATE – выбор скорости передачи данных интерфейса CAN.

CAN LOAD – выбор нагрузки линии CAN.

ADC_INP_SEL – выбор источника сигнала для 7-го канала АЦП между подстроечным резистором “TRIM” и BNC разъемом “ADC”.

COMP_INP_SEL – выбор источника сигнала на 1-м входе компаратора между BNC разъемом “COMP_INP” и выходом ЦАП1.

DAC_OUT_SEL – выбор назначения сигнала с выхода ЦАП1 между
BNC разъемом “DAC_OUT” и звуковым усилителем.
Назначение установленных на плате переключателей и клавиш:

SW1, SW2 – переключатели выбора режима работы.
Таблица 2.3– Режимы работы
SW2
SW1
Режим работы
0 0
Режим микроконтроллера, код исполняется из Flash памяти начиная с адреса 0х0800_0000.
0 1
Режим микроконтроллера, код исполняется из Flash памяти начиная с адреса 0х0800_0000, отладка через разъем
JTAG_A.
1 0
Режим микропроцессора, код исполняется из внешней памяти начиная с адреса 0х1000_0000.
1 1
Режим микропроцессора, код исполняется из внешней памяти начиная с адреса 0х1000_0000, отладка через разъем
JTAG_B.

UP, DOWN, LEFT, RIGHT, SELECT – программируемые пользователем клавиши.

RESET – сигнал аппаратного сброса МК.
14

WAKEUP – сигнал внешнего выхода из режима Standby.
15
3.
Описание среды разработки
Для программирования микроконтроллеров используется среда разработки KeiluVision.
Немецкая фирма Keil разрабатывает и поставляет среды разработки для платформ: ARM, 8085, 251, C166, JTAG-отладчики и отладочные платы для них. Следует отметить, что компания Keil является официальным партнером
ARM, а сама Keil-MDK является совместной разработкой Keil и ARM
(http://www.arm.com). Так ядро IDE (компилятор, линковщик, ассемблер и ряд утилит) собственная разработка ARM, от Keil-а только оболочка (µVision IDE) и отладчик.
16
4.
Установка и настройка KeiluVision
4.1.
Установка
В папке «Материалы для лабораторных работ» запустить файл
«MDK520.EXE» (Рисунок 4.1).
Рисунок 4.1
Рисунок 4.2 – Процесс установки
17
Рисунок 4.3 – Процесс установки
После установки, запускаем Keil. При первом запуске запустится
PackInstaller (Рисунок 4.4).
Рисунок 4.4 - PackInstaller
18
Теперь добавим пакет поддержки контроллеров Миландр.Пакет находитсяв папке
«Материалы для лабораторных работ» файл
«mdr_spl_v1.4.1.rar».
В PackInstaller жмем File ->Import и выбираем необходимый нам пакет
(Рисунок 4.5).
Рисунок 4.5 – Добавление пакета в PackInstaller
После установки пакета во вкладке Devices должен появиться раздел
Milandr, а во вкладке Packs раздел Keil::MDR1986ВЕхх.
19
Рисунок 4.6 – Результат добавления пакета
Закрываем PackInstaller и запускаем Keil.
20
4.2.
Программатор
Для отладки, тестирования и программирования внутренней памяти микроконтроллеров необходим программатор-отладчик.
Нами будет использоваться программатор MT-Link. Он является аналогом известного программатора J-Link.
Программатор подключается к компьютеру с помощью USB-кабеля и использует интерфейсы для внутрисхемной отладки SWD – SerialWireDebug или JTAG. На плате предусмотрено два разъема для подключения программатора (JTAG-A и JTAG-B). где 1 – кабель USB; 2 - шлейф программатора; 3-программатор MT-Link.
Рисунок 4.7 – Программатор MT-Link
Установим драйвера программатора J-Link(MT-Link), запустив файлы
«Setup_JLinkARM_V468a» и «MT-Link», которые находится в папке
«Материалы для лабораторных работ».
Программатор MT-Link и USB-кабель соедините междусобой.
Подключите шлейф программатора к разъему JTAG-A, расположенному на плате.
21
Установите переключатели в положения:
Таблица 4.1 – Положения переключателей
SW1
SW2
SW3 1
0 0
Рисунок 4.8 – Подключение платы
Подключаем MT-Link к компьютеру, в диспетчере устройств должно отобразиться устройство J-Linkdriver в разделе «Контроллеры USB» (Рисунок
4.9).
Рисунок 4.9
22
4.3.
Настройка Keil и запуск демонстрационного проекта
Далее необходимо скопировать файл «MDR32F9x.FLM», который находится в папке «Материалы для лабораторных работ», в папку «Flash» где установлен KeiluVision (по умолчанию путь «C:\Keil_v5\ARM\Flash»).
Запустим демонстрационную программу EV1986BE2Test.uvproj,которая находится в папке «Материалы для лабораторных работ->TestProgs».
Переходимв Project -> «Options for Target» (Рисунок4.10).
Рисунок 4.10
ВовкладкеDeviceнеобходимовыбратьпроцессорARMCortex-M3: Milandr>Milandr->Cortex-M3->MDR1986BE92.
Рисунок 4.11 – Выбор процессора
23
Во вкладке Debug выбираем(устанавливаем) следующие параметры:
-Use: J-LINK/J-TRACE Cortex
- Load Application at Startup
- RuntoMain().
Послечего (далее) нажмемкнопку «Settings».
Рисунок 4.12 – Установка параметров во вкладке Debug
В списке «PORT» нужно сменить JTAG на SW и выбрать частоту в списке рядом в 1MHz.
24
Рисунок 4.13 – Настройка J-Link
Переходим во вкладку «FlashDownload» (Рисунок 4.14). Там ставим галочку «EraseFullChip»и затем нажмите кнопку Add.
Рисунок 4.14
Из списка выбираем нужный микроконтроллер. Затем нажмите кнопку
Add (Рисунок 4.15).
25
Рисунок 4.15
После добавления микроконтроллера он отражается в окне
ProgrammingAlgorithm. Нажмите кнопку ОК (Рисунок 4.16).
Рисунок 4.16
Теперь среда разработки KeiluVision готова для разработки и отладки приложений на микроконтроллере.
26
Теперь мы можем запустить демонстрационный проект. Для этого в главном меню выбираем Project->BuildTarget.
Рисунок 4.17 – Построение проекта
При успешной компиляции, в левом нижнем окне BuildOutput появится надпись «0 Error(s), 0 Warnings».
Рисунок 4.18 – Окно BuildOutput
Теперь необходимо загрузить программу в микроконтроллер выбрав
Flash->Download.
Рисунок 4.19 – Загрузка проекта
27
В результате успешной загрузкина LEDдисплее вы увидите следующее сообщение.Управляя клавишами, в меню можно включить различные тесты. Выберите тест светодиодов, установив курсор напротив LEDSнажмите кнопку SELECT. В результате светодиоды на порте Cзагораются.
Рисунок 4.20 – Результат исполнения демонстрационного проекта
28
4.4.
Создание нового проекта в среде KeiluVision
ЗапуститесредуKeiluVision5, в строке главного менювыберите:
Project ->NewuVisionProject…
Создайте папку для проекта. Примечание: путь до папки с проектом не должен содержать кириллицы.
29
После создания нового проекта в появившемся окне выбора микроконтроллера во вкладке Device необходимо выбрать процессор ARM
Cortex-M3: Milandr->Milandr->Cortex-M3->MDR1986BE92.
После выбора микроконтроллера появляется окно с выбором библиотек.
Нажмите «Ок», все необходимые библиотекидобавим в ручную, взяв их из демонстрационного проекта.
В результате у нас получилось дерево проекта. Для того чтобы создать необходимые подкатегории. Для этого по самой верхней папке жмем правой кнопкой мыши и выбираем «ManageProjectitems…»
30
В разделе«Groups» создадим несколько папок для различных видов файлов:

User– для пользовательских данных;

LCD - для драйверов LCD, библиотека работы с LCD, который установлен на плате.

Flash- для кода работы с Flash, здесь хранится библиотека для работы с Flashконтроллера.

Libs–для библиотек CMSIS и SPL.
31
Структура проекта выглядит следующим образом:
Далее необходим добавить все необходимые файлы из демонстрационного проекта «Материалы для лабораторных работ->TestProgs».
Скопировать нужно выделенные файлы. Файл main.cдобавить в папку
User.
32
Далее необходимо добавить файлы библиотеки в проект.
Для этого нажимаем правой кнопкой по нужной папке в дереве проекта и выбираем «AddExistingFilestoGroup ‘Имя группы’…».
В открывшемся окне нужно выбрать тип файлов «Allfiles (*.*)». После чего выбрать все необходимые файлы.
Необходимо добавить:

Впапку User -> «User ->main.c».

Впапку Flash -> «flash ->MilFlash.c».

Впапку LCD -> «mlt ->mlt_lcd.c».
33

ВпапкуLibs -> «Libraries\1986BE9x_StdPeriph_Driver\src ->всефайлы
.c».

ВпапкуLibs ->
«Libraries\CMSIS\CM3\DeviceSupport\1986BE9x\startup\arm -> startup_1986be9x.s». В этом файле прописаны все «вектора переходов». Иначе говоря, по любому прерыванию (к примеру, нажатие кнопки) контроллер возвращается к этой таблице и смотрит, куда ему перейти, чтобы выполнять код дальше.

ВпапкуLibs->
«Libraries\CMSIS\CM3\DeviceSupport\1986BE9x\startup\arm -> system_1986BE9x.c».
В результате проект примет следующий вид:
Далее необходимо очистить файл main.c. Удаляем все, кроме оболочки функции main и #include файлов. Должно остаться так:
34
Около самого верхнего #include файла стоит крестик - keil не видит данный файл. Для того, чтобы исправить это, необходимо указать путь к этому файлу. Для этого жмем Alt+F7. В открывшемся окне переходим во вкладку
C/C++. Для того, чтобы исправить это, нужно нажать галочку около надписи
«C99 Mode». Это даст возможность писать на более совершенном стандарте языка Си, чем это можно было делать изначально. Далее следует нажать на прямоугольник с «…» внутри. Справа около строчки с подписью
«IncludePaths».
В открывшемся окне нажимаем на иконку с прямоугольником, слева от крестика. Это создаст пустую строку. В правом углу созданной строчки жмем на «…». После чего указываем нужную папку, в которой лежат интересующие
35 нас файлы. После этого жмем «ОК». Папка будет добавлена. Необходимо добавить все эти пути.
Жмем «ОК» и переходим в файл main.c.
Теперь осталось лишь в настройках настроить J-LINK (см. выше).
36
  1   2   3

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


связь с админом