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

Методичка_ТулГУ_1986ВЕ91Т. Основы программирования 32-разрядных микроконтроллеров 1986ВЕ91Т компании Миландр


НазваниеОсновы программирования 32-разрядных микроконтроллеров 1986ВЕ91Т компании Миландр
АнкорМетодичка ТулГУ 1986ВЕ91Т.pdf
Дата23.05.2017
Размер2.03 Mb.
Формат файлаpdf
Имя файлаMetodichka_TulGU_1986VE91T.pdf
оригинальный pdf просмотр
ТипЛабораторная работа
#21020
страница4 из 5
КаталогОбразовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
Образовательный портал Как узнать результаты егэ Стихи про летний лагерь 3агадки для детей
1   2   3   4   5

Лабораторная работа №6. Изучение схемы тактировая. Изменение тактовой частоты.
Цель работы:
Изучение модуля RST_CLK микроконтроллера 1986ВЕ91Т, и способов его программирования в среде Keil uVision5, написание программы для изучения тактирования от различных источников, а также изменения частоты тактирования.
Приборы и материалы:
1.
Отладочная плата MDR1986VE91T Rev 4 2.
Программатор J-Link ARM
3.
Блок питания 5В, 1.4А
4.
ПК с установленной средой программирования Keil uVision
5.
Осциллограф
Порядок работы:
1.
Собрать аппаратную часть по рекомендациям лабораторной работы № 2 2.
Открыть проект MDRProject в среде программирования Keil uVision.
3.
Подключить к проекту библиотеку RST_CLK, необходимую для работы схемы тактирования.
4.
Выполнить работы согласно Лабораторной работе №3 (про таймеры) загрузить программу в микроконтроллер.
5.
Наблюдать переключение светодиодов стенда с частотой около 1 секунды. Подключить осциллограф к контакту 29 разъёма X32.1 (Нулевой провод согласно рис.5.5). Получившаяся осциллограмма показана рис. 6.1.
Рисунок 6.1 осциллограмма напряжения на светодиоде.
Как видим, длительность импульса составляет 1 с.
6.
Добавить перед while(1) в функции main() следующий код
/* Включение HSE осциллятора (внешнего кварцевого резонатора)*/
RST_CLK_HSEconfig(RST_CLK_HSE_ON); if (RST_CLK_HSEstatus() == SUCCESS) /*
Если
HSE
осциллятор
включился
и
прошел
текст
*/
{
// Выбор HSE осциллятора в качестве источника тактовых импульсов для CPU_PLL
// и установка умножителя тактовой частоты CPU_PLL равного 7
// Частота внешнего кварца равна 8 МГц Максимальная частота процессора 80 МГц ,
// RST_CLK_CPU_PLLconf
ig ( Источник тактирования PLL, Коэффициент умножения=
9+1 );
// Коэффициент умножения=0 соответствует умножение на 1.
RST_CLK_CPU_PLLconfig ( RST_CLK_CPU_PLLsrcHSEdiv1, 9 );
34

/*
Включение
схемы
PLL*/
RST_CLK_CPU_PLLcmd(ENABLE); if (RST_CLK_CPU_PLLstatus() == SUCCESS) //
Если
включение
CPU_PLL
прошло
успешно
{
/*
Установка
CPU_C3_prescaler = 2 */
RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV2);
/* Установка CPU_C2_SEL от CPU_PLL выхода вместо CPU_C1 такта*/
RST_CLK_CPU_PLLuse(ENABLE);
/* Выбор CPU_C3 такта на мультиплексоре тактовых импульсов микропроцессора (CPU clock
MUX) */
RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
} else
/* блок CPU_PLL не включился*/
{while(1);}
} else
/* кварцевый резонатор HSE не включился */
{while(1);}
7.
Перекомпилировать и загрузить приложение на микроконтроллер.
Рисунок 6.2. Осциллограмма напряжения после изменения тактовой частоты
Как видим на осциллографе, частота импульсов увеличилась в 10 раз, визуально светодиоды стенда переключаются с гораздо большей частотой, то есть микропроцессор работает на частоте 8*10=80МГц.
8. Выполнить индивидуальное задание преподавателя.
35

Сведения для выполнения
Рис 6.3 Структурная схема тактирования микроконтроллера
Рассмотрим основные элементы системы тактирования:
1 Встроенный RC генератор HSI
Генератор HSI вырабатывает тактовую частоту 8 МГц. Генератор автоматически запускается при появлении питания UСС и при выходе в нормальный режим работы вырабатывает сигнал
HSIRDY в регистре батарейного домена BKP_REG_0F. Первоначально процессорное ядро запускается на тактовой частоте HSI. При дальнейшей работе генератор HSI может быть отключен при помощи сигнала HSION в регистре BKP_REG_0F. Также генератор может быть подстроен при помощи сигнала HSITRIM в регистре BKP_REG_0F.
2 Встроенный RC генератор LSI
Генератор LSI вырабатывает тактовую частоту 40 кГц. Генератор автоматически запускается при появлении питания UСС и при выходе в нормальный режим работы вырабатывает сигнал
LSIRDY в регистре BKP_REG_0F. Первоначально тактовая частота генератора LSI используется для формирования дополнительной задержки tpor. При дальнейшей работе генератор LSI может быть отключен при помощи сигнала LSION в регистре BKP_REG_0F.
3 Внешний генератор HSE
Генератор HSE предназначен для выработки тактовой частоты 2.16 МГц с помощью внешнего резонатора. Генератор запускается при появлении питания UCC и сигнала разрешения HSEON в регистре HS_CONTROL. При выходе в нормальный режим работы вырабатывает сигнал HSERDY в регистре CLOCK_STATUS. Также этот генератор может работать в режиме HSEBYP, когда входная тактовая частота с входа OSC_IN проходит напрямую на выход HSE. Выход OSC_OUT находится в этом режиме в третьем состоянии.
36

4 Внешний генератор LSE
Генератор LSE предназначен для выработки тактовой частоты 32 КГц с помощью внешнего резонатора. Генератор запускается при появлении питания BDUCC и сигнала разрешения
LSE
ON в регистре BKP_REG_0F. При выходе в нормальный режим работы вырабатывает сигнал LSERDY в регистре BKP_REG_0F. Также осциллятор может работать в режиме
LSEBYP, когда входная тактовая частота с входа OSC_IN32 проходит напрямую на выход
LSE. Выход OSC_OUT32 находится в этом режиме третьем состоянии. Так как генератор LSE питается от напряжения питания BDUCC и его регистр управления BKP_REG_0F расположен в батарейном домене, то генератор может продолжать работать при пропадании основного питания UCC. Генератор LSE используется для работы часов реального времени.
5 Встроенный блок умножения системной тактовой частоты
Блок умножения позволяет провести умножение входной тактовой частоты на коэффициент от 2 до 16, задаваемый на входе PLLCPUMUL[3:0] в регистре PLL_CONTROL. Входная частота блока умножителя должна быть в диапазоне 2…16 МГц, выходная - до 100 МГц. При выходе блока умножителя тактовой частоты в расчетный режим вырабатывается сигнал
PLLCPURDY в регистре CLOCK_STATUS. Блок включается с помощью сигнала
PLLCPUON в регистре PLL_CONTROL. Выходная частота используется как основная частота процессора и периферии.
6 Встроенный блок умножения USB тактовой частоты
Блок умножения позволяет провести умножение входной тактовой частоты на коэффициент от 2 до 16, задаваемый на входе PLLUSBMUL[3:0] в регистре PLL_CONTROL. Входная частота блока умножителя должна быть в диапазоне 2…16 МГц, выходная должна составлять 48 МГц.
При выходе блока умножителя тактовой частоты в расчетный режим вырабатывается сигнал
PLLUSBRDY в регистре CLOCK_STATUS. Блок включается с помощью сигнала PLLUSBON в регистре PLL_CONTROL. Выходная частота используется как основная частота протокольной части USB интерфейса. Управление тактовыми частотами ведется через периферийный блок
RST_CLK. При включении питания микроконтроллер запускается на частоте HSI генератора.
Выдача тактовых сигналов синхронизации для всех периферийных блоков, кроме RST_CLK, отключена. Для начала работы с нужным периферийным блоком необходимо включить его тактовую частоту в регистре PER_CLOCK. Некоторые контроллеры интерфейсов (UART, CAN,
USB, Таймеры) могут работать на частотах, отличных от частоты процессорного ядра, поэтому в соответствующих регистрах (UART_CLOCK, CAN_CLOCK, USB_CLOCK, TIM_CLOCK) могут быть заданы их скорости работы. Для изменения тактовой частоты ядра можно перейти на другой генератор и/или воспользоваться блоком умножения тактовой частоты. Для корректной смены тактовой частоты сначала должны быть сформированы необходимые тактовые частоты и затем осуществлено переключение на них на соответствующих мультиплексорах, управляемых регистрами CPU_CLOCK и USB_CLOCK.
7 Делители частоты и мультиплексоры
Эти элементы позволяют коммутировать внутренние цепи схемы тактирования. Коммутация позволяет создать гибкую конфигурацию тактирования всех устройств микроконтроллера.
Для включения тактирования необходимо:
- разрешить работу тактового генератора;
- проверить правильность включения осциллятора или генератора, и прошел ли он тест;
- выбрать его в качестве источника тактовых импульсов схемы PLL или микроконтроллера в зависимости от той конфигурации, которая Вам необходима.
Для работы со схемой тактирования предусмотрены процедуры,объявленные в файле
MDR32F9Qx_rst_clk.h., они включают в себя процедуры инициализации настройки и проверки работоспособности устройств схемы тактирования.
37

Задание:
Задание 1.
Измените частоту работы микропроцессора на 4Мгц, 8МГц, или другую по заданию преподавателя.
Задание 2.
Напишите программу, работающую на частоте генератора LSI или LSE по заданию преподавателя.
Приложение:
Текст программы
#include
#include
#include
PORT_InitTypeDef PORTDInit;
//Инициализация портов ввода вывода
void PortsInit(){
PORT_StructInit(&PORTDInit); //Load defaults
RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTD, ENABLE);
PORTDInit.PORT_Pin = PORT_Pin_10 | PORT_Pin_11 | PORT_Pin_12 | PORT_Pin_13 | PORT_Pin_14;
PORTDInit.PORT_OE = PORT_OE_OUT;
PORTDInit.PORT_MODE = PORT_MODE_DIGITAL;
PORTDInit.PORT_SPEED = PORT_SPEED_SLOW;
PORT_Init(MDR_PORTD, &PORTDInit);
} uint8_t cur_i;
//Процедура мигания светодиодами
void NextLED(){ switch(cur_i++ % 5) { case 0:
PORT_ResetBits(MDR_PORTD, PORT_Pin_14);
PORT_SetBits(MDR_PORTD, PORT_Pin_10); break; case 1:
PORT_ResetBits(MDR_PORTD, PORT_Pin_10);
PORT_SetBits(MDR_PORTD, PORT_Pin_11); break; case 2:
PORT_ResetBits(MDR_PORTD, PORT_Pin_11);
PORT_SetBits(MDR_PORTD, PORT_Pin_12); break; case 3:
PORT_ResetBits(MDR_PORTD, PORT_Pin_12);
PORT_SetBits(MDR_PORTD, PORT_Pin_13); break; case 4:
PORT_ResetBits(MDR_PORTD, PORT_Pin_13);
PORT_SetBits(MDR_PORTD, PORT_Pin_14); break;
}
}
TIMER_CntInitTypeDef TIM1Init;
//
Процедура
инициализации
таймера
// при частоте процессора 8 МГц обеспечивает вызов процедуры обработки прерывания 1 раз в
//
секунду
void TimerInit(){
RST_CLK_PCLKcmd(RST_CLK_PCLK_TIMER1, ENABLE);
TIMER_BRGInit(MDR_TIMER1, TIMER_HCLKdiv1);
TIMER_CntStructInit(&TIM1Init);
//Load defaults
TIM1Init.TIMER_Prescaler = 8000;
TIM1Init.TIMER_Period = 1000;
TIMER_CntInit(MDR_TIMER1, &TIM1Init);
// Инициализация прерываний таймера
NVIC_EnableIRQ(Timer1_IRQn);
NVIC_SetPriority(Timer1_IRQn, 0);
38

TIMER_ITConfig(MDR_TIMER1, TIMER_STATUS_CNT_ZERO, ENABLE);
TIMER_Cmd(MDR_TIMER1, ENABLE);
}
//
Обработчик
прерывания
таймера
void Timer1_IRQHandler() { if(TIMER_GetITStatus(MDR_TIMER1, TIMER_STATUS_CNT_ZERO)){
NextLED();
TIMER_ClearITPendingBit(MDR_TIMER1, TIMER_STATUS_CNT_ZERO);
}
} int main() {
PortsInit();
TimerInit(); cur_i = 0;
/* Включение HSE осциллятора (внешнего кварцевого резонатора)*/
RST_CLK_HSEconfig(RST_CLK_HSE_ON); if (RST_CLK_HSEstatus() == SUCCESS) /*
Если
HSE
осциллятор
включился
и
прошел
текст
*/
{
// Выбор HSE осциллятора в качестве источника тактовых импульсов для CPU_PLL
// и установка умножителя тактовой частоты CPU_PLL равного 7
// Частота внешнего кварца равна 8 МГц Максимальная частота процессора 80 МГц ,
// RST_CLK_CPU_PLLconfig ( Источник тактирования PLL, Коэффициент умножения 9);
RST_CLK_CPU_PLLconfig ( RST_CLK_CPU_PLLsrcHSEdiv1, 9 );
/*
Включение
схемы
PLL*/
RST_CLK_CPU_PLLcmd(ENABLE); if (RST_CLK_CPU_PLLstatus() == SUCCESS) //
Если
включение
CPU_PLL
прошло
успешно
{
/*
Установка
CPU_C3_prescaler = 2 */
RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV2);
/* Установка CPU_C2_SEL от CPU_PLL выхода вместо CPU_C1 такта*/
RST_CLK_CPU_PLLuse(ENABLE);
/* Выбор CPU_C3 такта на мультиплексоре тактовых импульсов микропроцессора (CPU clock
MUX) */
RST_CLK_CPUclkSelection(RST_CLK_CPUclkCPU_C3);
} else
/* блок CPU_PLL не включился*/
{while(1);}
} else
/* кварцевый резонатор HSE не включился */
{while(1);} while(1){
// Основной пустой цикл
}
}
39

Лабораторная работа №7. Изучение модуля UART
Цель работы:
Изучение модуля UART микроконтроллера 1986ВЕ91Т и способов его программирования в среде Keil uVision5, написание простейших программ, изучение .
Приборы и материалы:
1.
Отладочная плата MDR1986VE91T Rev 4 2.
Программатор J-Link ARM
3.
Блок питания 5В, 1.4А
4.
ПК с установленной средой программирования Keil uVision
5.
Цифровой осциллограф
6.
Нуль модемный кабель для подключения по интерфейсу RS232C
7.
Свободная программа Putty.exe.
Порядок работы:
1.
Собрать лабораторную установку согласно рис. 7.1
Рисунок 7.1 Внешний вид лабораторной установки: 1- осциллограф, 2-программтатор
TP-LINK (J-LINK), 3- щуп осциллографа, 4-демонстрационная плата на базе 1986ВЕ91Т,
5- нуль модемный кабель для подключения по интерфейсу RS-232C, 6- микропереключатели для выбора режима загрузки, 7-микроконтроллер 1986ВЕ91Т в контактирующем устройстве, 8-разъем питания.
2. Нульмодемный кабель подключить к порту RS 232C ЭВМ (9 контактный разъем на задней панели).
3. Установить программу PuTTY [5] https://www.chiark.greenend.org.uk/

sgtatham/putty/download.html
40

4. Подключить программатор к разъему JTAG_B
5. Создать проект в среде Keil uVision5 или использовать MDRproject
6. Подключить библиотеки PORT, RST_CLK, UART в менеджере.
7. Заменить текст main.c на текст программы (см. Приложение). Данная программа принимает один байт данных по RS232 и тот же, принятый байт данных, выдает обратно на компьютер.
8.
Скомпилировать и загрузить проект в микроконтроллер
9. Запустить программу Putty, установить настройки: Serial line – COM№ порт к которому подключен микроконтроллер (Возможные варианты № можно узнать в диспетчере устройств Windows); Speed – 115200; Connection type - Serial как показано на рис. 7.2 и нажать Open
Рисунок 7.2. Окно программы Putty
10.
В появившемся окне рис 7.3 ввести произвольный текст.
Рисунок 7.3. Окно программы Putty
Как видим, те данные, которые вводятся с клавиатуры, отображаются в окне
Putty, что говорит о двунаправленной передаче данных между контроллером и ЭВМ.
11. Подключить осциллограф к ножкам 13 и 14 разъема X32.2 зажать любую клавишу на клавиатуре компьютера и добиться на экране осциллографа картинки содержащей процесс передачи байт как показано на рис 7.4.
41

Рисунок 7.4 Прием байта в микроконтроллер (внизу), обратная передача данных на ЭВМ (вверху).
12. Выполнить индивидуальное задание преподавателя.
Сведения для выполнения
Модуль универсального асинхронного приемопередатчика (UART – Universal
Synchronous Asynchronous Receiver Transmitter) представляет собой периферийное устройство микроконтроллера. В состав контроллера включен кодек (ENDEC –
ENcoder/DEcoder) последовательного интерфейса инфракрасной (ИК) передачи данных в соответствии с протоколом SIR (SIR – Serial Infra Red) ассоциации Infrared
Data Association (IrDA).
Основные характеристики модуля UART
Может быть запрограммирован для использования как в качестве универсального асинхронного приемопередатчика, так и для инфракрасного обмена данными (SIR). Содержит независимые буферы приема (16x12) и передачи (16x8) типа
FIFO (First In First Out – первый вошел, первый вышел), что позволяет снизить интенсивность прерываний центрального процессора. Программное отключение FIFO позволяет ограничить размер буфера одним байтом.
Программное управление скоростью обмена. Обеспечивается возможность деления тактовой частоты опорного генератора в диапазоне (1x16 – 65535x16).
Допускается использование нецелых коэффициентов деления частоты, что позволяет использовать любой опорный генератор с частотой более 3.6864 МГц максимальная скорость обмена:
· в режиме UART – до 921600 бит/с;
· в режиме IrDA – до 460800 бит/с;
· в режиме IrDA с пониженным энергопотреблением – до 115200 бит/с.
Поддержка стандартных элементов асинхронного протокола связи – стартового и стопового бит, а так же бита контроля четности, которые добавляются перед передачей и удаляются после приема.
Независимое маскирование прерываний от буфера FIFO передатчика, буфера
FIFO приемника, по таймауту приемника, по изменению линий состояния модема, а также в случае обнаружения ошибки.
Поддержка прямого доступа к памяти.
Обнаружение ложных стартовых бит.
Формирование и обнаружения сигнала разрыва линии.
Поддержка функция управления модемом (линии CTS, DCD, DSR, RTS, DTR и
42

RI).
Возможность организации аппаратного управления потоком данных.
Полностью программируемый асинхронный последовательный интерфейс с характеристиками:
· данные длиной 5, 6, 7 или 8 бит;
· формирование и контроль четности (проверочный бит выставляется по четности, нечетности, имеет фиксированное значение, либо не передается);
· формирование 1 или 2 стоповых бит.
Кодек ИУ обмена данными IrDA SIR обеспечивает:
· программный выбор обмена данными по линиям асинхронного приемопередатчика либо кодека ИК связи IrDA SIR;
· поддержку функционирования с информационной скоростью до
115200 бит/с в режиме полудуплекса;
· поддержку длительности бит для нормального режима (3/16) и для режима пониженного энергопотребления (1.41 – 2.23 мкс).
Наличие идентификационного регистра, однозначно идентифицирующего модуль, что позволяет операционной системе выполнять автоматическую конфигурацию.
Работа в режиме UART
Для инициализации UART в библиотеке предусмотрена структура
UART_InitTypeDef; typedef struct
{ uint32_t
UART_BaudRate;
1   2   3   4   5

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

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

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