Контрольная по ТОЭ. Заказ_202275. 1. Общая характеристика и описание компонентов 4 Микропроцессорный модуль 4
Скачать 0.67 Mb.
|
|
Скорость передачи, бод | Время передачи одного бита, мкс | Время передачи байта, мкс |
4800 | 208 | 2083 |
9600 | 104 | 1042 |
19200 | 52 | 521 |
38400 | 26 | 260 |
57600 | 17 | 174 |
115200 | 8,7 | 87 |
Обмен данными посредством интерфейса USART осуществляется в полнодуплексном режиме. Это значит, что прием и передачу данных можно выполнять одновременно.
Интерфейс USART имеет два сигнала RX и TX, которые часто обозначают как RXD и TXD, чтобы подчеркнуть, что данные сигналы относятся к передаче данных.
Если подключаются два устройства USART, то порты RX одного устройства соединяются с портами TX другого (см. рис.2), применяется перекрестное соединение [2].
Рисунок 2.1 – Обмен данными между устройствами по интерфейсу USART
3. Разработка схемы соединения компонентов
Схема соединение микроконтроллера ATmega16 с микросхемой FLASH памяти AT25F2048 представлена на рис.3.1, а также в приложении 1.
Рисунок 3.1. Схема соединения компонентов МПК и FLASH памяти
4. Разработка алгоритма и управляющей программы
Алгоритм
Рисунок 4.1. Блок-схема алгоритма считывания/записи/изменения содержимого FLASH
Программа
К интерфейсу SPI микроконтроллера подключена микросхема Flash памяти AT25F2048 объемом 256 Кбайт (262 144 байт). Пространство адресов поделено на четыре сектора по 64 Кбайт (64 х 1 024 = 65 536 байт) каждый — 256 страниц на сектор (65 536 байт / 256 = 256 байт одна страница). Микросхема памяти может обмениваться данными в одном из двух режимов: SPI MODE 0 или SPI MODE 3. Максимальная частота тактового сигнала SCK – 20 МГц.
Для наглядности операций с памятью (чтение, запись, очистка) используем интерфейс USART микроконтроллера, подключенный к COM-порту компьютера. Микроконтроллер через USART передает меню работы с Flash-памятью. В зависимости от того, какой пункт выбран (на компьютере), выполняется то или иное действие с памятью через интерфейс SPI.
В начале программы инициализируются два интерфейса микроконтроллера: USART (функция USART_INIT ()) и SPI (функция
SPl_MasterInit ()).
В функции инициализации интерфейса SPI назначаем выводы:
/SS — выбор подчиненной, микросхемы;
SCK — тактовая частота SPI-интерфейса;
MOSI — настраиваем как выход (для подчиненного устройства — вход);
MISO — настраиваем как вход (для подчиненного устройства — выход).
Поскольку микроконтроллер управляет подчиненным устройством с помощью регистра SPCR, задаем режим “Master”. Используя регистр SPCR и SPSR, задаем тактовую частоту на выводе SCK/ск /4=10 МГц /4 = 2,5 МГц.
В бесконечном цикле с помощью функции printf_P выводим через USART микроконтроллера в COM-порт компьютера меню для работы с Flash-памятью. Функция print f_P выводит данные, которые хранятся в памяти программ, чтобы не занимать ОЗУ микроконтроллера. Данные объявлены как PSTR (). Это тип, объявленный в файле
После вывода меню функция getchar () ожидает передачи символа от компьютера, т.е. выбора пункта меню. Принятый символ записывается в переменную choose. В зависимости от ее содержимого, оператор switch выполняет ту или иную последовательность действий.
Если принят символ “1”, то вызывается функция RDID (), которая передает по интерфейсу SPI Flash-памяти) инструкцию 0001 XI01. После передачи инструкции, которая занимает восемь циклов (тактовых сигналов SCK), мы принимаем от микросхемы памяти ответ (код изготовителя и идентификационный код) и передаем его через USART микроконтроллера в COM-порт компьютера.
Рисунок 4.2. Схема соединения компонентов в Proteus
Рисунок 4.3. Виртуальный терминал
Листинг программы приведен в приложении 2.
Заключение
В ходе выполнения данного курсового проекта нами были рассмотрены:
основные технические характеристики и архитектура микроконтроллера ATmega16
инструкции управления FLASH памятью микросхемы AT25F2048
характеристика и принцип работы последовательного интерфейса USART
Мы разработали:
электрическую принципиальную схему соединения компонентов;
блок-схему алгоритма считывания/записи данных FLASH памяти;
Управляющую программу для микроконтроллера
Проект устройства считывания/записи в САПР Proteus
В результате выполнения курсового проекта было разработано считывающее/записывающее цифровое устройство, на микроконтроллере ATmega16 с внешней FLASH памятью на микросхеме AT25F2048 по интерфейсу USART.
Библиографический список
- Г.С. Воробьева Микроконтроллеры семейства AVR Лабораторный практикум Методические рекомендации к выполнению цикла лабораторных работ по дисциплине «Основы микропроцессорной техники» для студентов направлений 210100 «электроника и микроэлектроника» и 200300 «биомедицинская инженерия». – Томск, 2009 – 90 с.
https://www.alldatasheet.com/datasheet-pdf/pdf/255831/ATMEL/AT25F2048.html
Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. — М.: Издательский дом «Додэка-XXI», 2007 г.
Трамперт В. Измерение, управление и регулирование с помощью AVR-микроконтроллеров.: Пер. с нем. — К.: «МК-ПРЕСС», 2006г.
Ключев А.О., Ковязина Д.Р., Петров Е.В., Платунов А.Е. Интерфейсы
периферийных устройств. – СПб.: СПбГУ ИТМО, 2010. – 290 с.
Магда Ю. С. Программирование последовательных интерфейсов. — СПб.: БХВ-Петербург, 2009. — 304 с.
Приложение 1. Схема соединения
Приложение 2. Листинг программы
Листинг программы
#include
#include
#include
#include
#include
#include
//////////////////////////////SPI функции НАЧАЛО
//НАЧАЛО функция инициализации SPI интерфейса
void SPI_MasterInit()
{
//Установить ножки /SS, SCK, MOSI(по этой линии передаем данные), как выходы
DDRB |= (1<<4)|(1<<7)|(1<<5);//PB4(/SS), PB7(SCK), PB5(MOSI)
//на /SS установить 5 вольт(устройство подключенное к SPI - отключено)
PORTB|=(1<<4);
//ножку MISO(PB6) как вход (по этой линии принимаем байт информации от внешних устройств)
DDRB&=(1<<6);
//Включить SPI, режим Master, частота тактового сигнала(SCK) fck/4
//прерывания от SPI запрещены
SPSR&=(1<<0);//SPI2X(0) в 0
SPCR&=(1<<1)&(1<<0);//SPR1(1) в 0, SPR0(0) в 0
SPCR = (1<<6)|(1<<4);//SPE(6) в 1, MSTR(4) в 1
//микросхема памяти поддерживает Mode 0(соответственно его и установили)
SPCR&=(1<<3);//CPOL - "0", импульсы положительной полярности
SPCR&=(1<<2);//CPHA - "0", обработка данных по переднему фронту сигнала
SPCR&=(1<<5);//DORD - "0", порядок передачи данных с старшего разряда
}
//КОНЕЦ функции инициализации SPI интерфейса
//НАЧАЛО функция приема байта с SPI интерфейса
unsigned char SPI_MasterReseive()
{
SPDR = 0xFF;//чтоб начать прием нужно (стартануть SCK) поэтому передаем по SPI интерфейсу - FF
//ждем до тех пор пока байт передасца(появится 1 в разряде SPIF регистра SPSR)
while(SPSR & (1<<7)){};//7 - SPIF
return SPDR;//возвращаем принятый байт
}
//КОНЕЦ функция приема байта с SPI интерфейса
//НАЧАЛО функция передачи байта с SPI интерфейса
unsigned char SPI_MasterTransmit(char cData)//принимаем в функцию байт, в переменную cData
{
SPDR = cData;//передаем байт в сдвиговый регистр SPDR
//ждем до тех пор пока байт отправится(появится 1 в разряде SPIF регистра SPSR)
while(SPSR & (1<<7)){};//7 - SPIF
return SPDR;//возврашаем принятый байт
}
//НАЧАЛО функция передачи байта с SPI интерфейса
//////////////////////////////SPI функции КОНЕЦ
//////////////////////////////USART функции НАЧАЛО
//НАЧАЛО функция инициализации USART
void USART_INIT(unsigned int UBRR_baud)//функция принимает значение в пременную UBRR_baud
{
//Устанавливаем скорость передачи/приема(скорость записывается в два регистра UBRRH 4рех битный и UBRRL 8 битный, соответсвенно младьшие 8 бит должны записыватся в UBRRL а старшие 4бита в UBRRH)
UBRRH = (unsigned char)(UBRR_baud>>8);//значение хранящиеся в UBRR_baud - сдвигаем в право на 8 бит, например надо записать число 504(1 1111 1000) в UBRRH регистр нужно записывать все после 8го бита тогда сдвинув вправо на 8 вышло(1) соответственно присваиваем UBRRH еденицу
UBRRL = (unsigned char)UBRR_baud;//поскольку явное преобразование к 8 битам то в UBRRL присвоится 8 младьших разрядов, а все старшие после 8го бита отбросится
//Чтобы обращатся к регистру UCSRC - нужно установить 1 в разряд (URSEL), данный разряд нужно устанавить однавременно с установкой нужных нам разрядов в данном регистре
//Режим работы асинхронный - разряд UMSEL сбросить(0)
//Режим работы схемы (Четность) - выключить, сбросить(0) разряды UPM1 и UPM0
//Количество стоп битов 1, разряд USBS сбросить(0)
//Устанавливаем режим (Биты данных) 8 бит - разряды UCSZ1, UCSZ0 установить в (1), а также разряд UCSZ2 регистра UCSRB нужно будет сбросить(0)
//Разряд UCPOL при работе в асинхронном нужно сбросить(0)
UCSRC=(1<