Микропроцессорная система на основе микропроцессорного контроллера

Назначение выводов микросхемы памяти. Регистры SPI для работы с периферией. Инициализация портов микроконтроллера и отправка данных по шине MOSI на указанный адрес. Схема подключения микроконтроллера STM32F405RG и микросхемы памяти F-RAM FM25V02A.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 10.02.2019
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

Федеральное агентство железнодорожного транспорта

Омский государственный университет путей сообщения

Кафедра «Автоматика и системы управления»

Микропроцессорная система на основе микропроцессорного контроллера

Пояснительная записка к курсовой работе

Омск 2016

Реферат

Пояснительная записка содержит 25 страниц, 15 рисунков, 6 таблиц.

Микроконтроллер, микросхема, память, SPI, регистр, вывод, бит, MOSI, MISO.

В ходе курсовой работы необходимо разработать структурную и принципиальную схему МП системы, выбрать микроконтроллер и микросхему памяти, реализовать их взаимодействие программно

Пояснительная записка выполнена в текстовом редакторе Microsoft Word 2007, принципиальная схема выполнена в пакете Microsoft Visio 2007, программа разработана в среде программирования CooCox IDE.

Введение

В настоящее время очень популярны микроконтроллеры фирмы STMicroelectronics. Они пришли на замену 8-битным контроллерам фирмы ATMEL. МК серии STM32 имеет большое количество преимуществ. Одно из самых главных - его универсальность. Если разделять писать программный код с четким делением между ядром и периферией, то можно обеспечить условия для очень быстро перехода с одного производителя на другой. Необходима будет только работа на уровне драйверов и периферии. Так же преимуществами являются производительность и цена. Но как хорош не был бы любой микроконтроллер, при работе со сложными процессами и большими объемами данных, его внутренней выделенной памяти может не хватать. Для этих целей к МК подключают внешние микросхемы памяти, которые позволяют справиться с этой проблемой. Если память необходима энергонезависимая, очень быстрая, и не с низким энергопотреблением, то взгляд сразу же падает на микросхемы памяти FRAM. Память этого типа обладает огромным быстродействием и энергонезависима, но имеет и ряд недостатков: ограниченное количество циклов перезаписи и высокая стоимость.

1. Описание структуры информационной системы

В состав информационной системы входят два элемента: микроконтроллер серии STM32F4 и микросхема F-RAM памяти FM25V02A. Общение между двумя этими устройствами происходит по интерфейсу SPI.

1.1STM32F4

1.1.1 Ресурсы микроконтроллера

Основанные на ARM Cortex-M4 микроконтроллеры серии STM32 F4 являются продолжением ведущей линейки STM32, обладая еще более высокой производительностью. Так же, как серия STM32 F2, эти микроконтроллеры изготавливаются по 90нм-технологии и используют запатентованный ST Microelectronics'ом ART Accelerator для достижения наилучших результатов тестов среди основанных на ядре Cortex-M микроконтроллеров, достигая показателей в 225 DMIPS/606 CoreMark и работая с флеш-памятью на частоте 180 МГц. Инструкции DSP и модуль операций с плавающей точкой дают возможность применять данные контроллеры в широком спектре проектов. Динамическое потребление питания позволяет снизить потребление тока при выполнении кода из флеш-памяти до 140 мкА/МГц для STM32F401 (максимальная частота до 84 МГц) и до 238 мкА/МГц для STM32F42x/43x, работающих на частоте до 180 МГц. Микроконтроллеры серии STM32 F4 являются результатом идеального симбиоза возможности управления МК в реальном времени и производительностью обработки сигналов, свойственной сигнальным процессорам, дополняя, таким образом, линейку контроллеров STM32 новым классом устройств, сигнальными микроконтроллерами (англ. digital signal controller, DSC). Серия состоит из пяти классов продуктов, которые полностью совместимы по выводам, периферии и програмному коду.

Характеристики серии:

STM32F401- 84 MHz CPU/105 DMIPS. Является экскурсом в серию STM32 F4, предлагая низкое потребление питания и корпуса малых размеров, в отличии от остальных классов серии STM32 F4.

STM32F405/415 - 168 MHz CPU/210 DMIPS, до 1 МБайт флеш памяти с расширенными возможностями сопряжения и шифрования.

STM32F407/417 - 168 MHz CPU/210 DMIPS до 1 МБайт флеш памяти с наличием Ethernet MAC и интерфейсом камеры для STM32F405/415.

STM32F427/437 - 168 MHz CPU/210 DMIPS, до 2 МБайт флеш, дополняя STM32F407/F417 расширенными возможностями сопряжения и шифрования.

STM32F429/439 - 180 MHz CPU/225 DMIPS, до 2 МБайт двухбанковой флеш-памяти с интерфейсом SDRAM, контроллером TFT LCD, технологией акселлерации Chrom-ART, последовательным аудиоинтерфейсом, предлагая большую производительность и меньшее энергопотребление по сравнению с STM32F4x7/F4x5.

Общие характеристики МК семейства:

- ARM 32-bit Cortex-M4 CPU;

- Частота тактирования 168МГц, 210 DMIPS/1.25 DMIPS/МГц (Dhrystone 2.1);

- Поддержка DSP-инструкций;

- Новая высокопроизводительная AHB-матрица шин;

- До 1 Mбайта Flash-памяти;

- До 192 + 4 кбайт SRAM-памяти;

- Напряжение питания 1,8…3,6В (POR, PDR, PVD и BOR);

- Внутренние RC-генераторы на 16МГц и 32кГц (для RTC);

- Внешний источник тактирования 4…26МГц и для RTC - 32,768кГц;

- Модули отладки SWD/JTAG, модуль ETM;

- Три 12-бит АЦП на 24 входных канала. Два 12-битных ЦАП;

- DMA-контроллер на 16 потоков с поддержкой пакетной передачи;

- 17 таймеров (16 и 32 разряда);

- Два сторожевых таймера (WDG и IWDG);

- Коммуникационные интерфейсы: I2C, USART (ISO 7816, LIN, IrDA), SPI, I2S;

CAN (2,0 B Active);

- USB 2.0 FS/HS OTG;

- 10/100 Ethernet MAC (IEEE 1588v2, MII/RMII);

- Контроллер SDIO (карты SD, SDIO, MMC, CE-ATA);

- Интерфейс цифровой камеры (8/10/12/14-битные режимы);

- FSMC-контроллер (Compact Flash, SRAM, PSRAM, NOR, NAND и LCD 8080/6800);

- Аппаратный генератор случайных чисел;

- Аппаратное вычисление CRC, 96-битный уникальный ID;

- Модуль шифрования AES 128, 192, 256, Triple DES, HASH (MD5, SHA-1), HMAC;

- Расширенный температурный диапазон -40…105°C.

1.1.2 Встроенные интерфейсы коммуникации

Ethernet. Данный блок присутствует не во всех продуктах семейства, а лишь в контроллерах STM32F407 / STM32F417. Блок выполнен в строго по стандарту IEEE802.3. Возможна передача данных со скоростью 10/100 Мбит/с. Доступна синхронизация часов для чего протокол IEEE1588 v2 реализован аппаратно. Для оптоволоконной либо медной линии требуется применение стороннего приемопередатчика. PHY-трансивер соединяется напрямую с портом MII или RMII. 

USB (Universal Serial Bus). На борту присутствует два раздельных блока USB. Первый - USB OTG full-speed, является полностью аппаратной реализацией и совместим со стандартами USB 2.0, а также OTG 1.0. Работает на скорости до 12 Mбит/с. Поддерживается работа в режиме Host/Device/OTG. Присутствует SRP (Session request protocol) и HNP (Host negotiation protocol).

Второй - USB OTG high-speed работает в режиме Host/Device/OTG с высокой скоростью 480 Мбит/с, для чего необходим блок приемопередатчика, работающего на высокой скорости через специальный ULPI-интерфейс. 

SDIO (Secure Digital Input/Output). Интерфейс позволяет работать с картами SD/SDIO/MMC-картами памяти и дисковыми контроллерами CE-ATA. В восьмибитном режиме несущая частота обмена данными составляет 48 MHz. Контроллер соответствует таким стандартам: SD Memory Card 2.0, MultiMediaCard System 4.2 (работа в режимах 1/4/8 бит), SD I/O Card 2.0 (режимы 1го и 4х бит), CE-ATA 1.1. 

SPI (Serial Peripheral Interface). Устройство оснащено тремя блоками SPI, каждый из которых работает в режиме Мaster (Мultimaster) либо в режиме Slave, передавая данные полудуплексно, полнодуплексно либо симплексно. Поддерживается аппаратный расчет контрольных сумм CRC для повышения помехоустойчивости канала связи: так CRC может быть передан последним байтом слова в режиме Tx, присутствует автопроверка правильности CRC последнего пришедшего байта. Блок устройства SPI1 работает на скоростях вплоть до 37,5 Mбит/с. Другие ограничены максимальной скоростью в 21 Мбит/с.

Передача данных идет в виде 8- или 16-битных блоков, вперед младшим либо старшим битом. При чем допускается программная замена фазы и полярности сигнала тактирования. 

USART (Universal Synchronous Asynchronous Receiver Transmitter). В микроконтроллер встроено четыре блока USART и два UART (Universal Asynchronous Receiver Transmitter). Блоки USART1 и USART6 допускают высокоскоростной обмен данными на скорости до 10,5 Mбит/с. Другие же поддерживают скорость не более 5,25 Mбит/с. На нативном уровне присутствует поддержка передачи данных согласно стандарта NRZ (Non Return to Zero).

Обмен данными осуществляется с использованием 8- либо 9-битных блоков, один или два бита которых выделены как стоп-биты и биты проверки четности. USART можно сконфигурировать на режим SPI, блок USART при этом выступает в роли ведущего устройства SPI. Используя блок USART можно организовать подключение к интерфейсу LIN, нашедшему применение в автомобильной промышленности, либо настроить на энкодинг/декодинг ИК-сигнала IrDA. Возможна работа с модемами по линиям управления RTS и СTS. Поддерживается работа со смарт-карточками. 

I2C (Inter-Integrated Circuit). На борту МК содержится три блока I2C, поддерживающих работу в режиме Master/Slave (ведущий или ведомый), а также в режиме Мultimaster (режим в котором на шине присутствуют несколько Master-устройств, разделяющих общие ресурсы Slave, либо поочередно изменяющих свое состояние с Master на Slave и обратно). В составе устройства имеется модуль диагностики и исправления пакетных ошибок PEC. Используется 7-битный и 10-битный режим адресации. Поддерживаются общепринятые для протокола скорости обмена данными до 100 kHz в простом режиме и 400 kHz в режиме сверхбыстрого обмена данными. Модули могут быть сконфигурированны на расширенные протоколы SMBus 2.0 и PMBus. 

I2S (Inter-Integrated Sound). В микроконтроллере присутствуют два мультиплексированных блока I2S со встроенным SPI. Оба модуля могут быть сконфигурированны на работу в режиме Мaster либо Slave. Данные передаются по 16, 24 или 32 бита полнодуплексно или симплексно.

Среди поддерживаемых протоколов такие: Phillips I2S, PCM, MSB и LSB с выравниванием данных. Интерфейс I2S был разработан для обмена звуковыми данными в цифровом формате. Отныне для тактирования присутствует отдельный PLL, делающий возможным генерацию частот сэмплов аудио от 8 до 192 kHz с погрешностью не более 0,01%. 

CAN (Controller Area Network). На борту находится два CAN-модуля, работающих по стандартам 2.0А и 2.0В, скорость работы при этом достигает 1 Мбит/с. Модули могут работать со стандартными, а также с расширенными кадрами. Модуль CAN содержит три буфера передачи, трехкаскадный FIFO-стек и 28 банков фильтров (распределены и масштабируемы). 

DCMI (Digital Camera Interface). Присутствует в контроллерах STM32F407 и STM32F417. При помощи данного интерфейса можно организовать прямое подключение к камере или CMOS-матрице. Возможна внутренняя и внешняя синхронизация покадрово или построчно, работа в непрерывном режиме, автообрезка лишних частей изображения. Среди поддерживаемых форматов 8/10/12/14-битное прогрессивное видео, YCbCr 4:2:2 и RGB 565, JPEG. 

FSMC (Flexible Static Memory Controller). Блок используется для подключения жидкокристаллических дисплеев либо внешней памяти напрямую. Блок содержится лишь в 100-, 144- или 176-пиновых корпусах.

Возможно сопряжение с подключенной синхронной либо асинхронной памятью или PCMCIA-устройствами. В основном блок предназначен для выдачи данных МК в соответствующем подключенным устройствам виде без лишних затрат процессорного времени на перекодирование данных.

Таким образом каждое внешнее устройство имеет собственный адрес из пула, собственные сигналы для управления. Подав необходимый сигнал выбора микросхемы можно получить доступ к тому или иному внешнему устройству (одновременное использование не допустимо). Возможно подключение таких типов памяти как NAND Flash, Compact Flash, NOR Flash, SRAM и PSRAM. Интерфейс сконфигурирован для работы с LCD-контроллерами Motorola 6800 и Intel 8080, однако может быть легко использован для сопряжения с контроллерами других производителей.

1.1.3 Регистры SPI для работы с периферией

Для упрощения работы со всей периферией микроконтроллера, (таймеры, UART, SPI и т.д.) компания ST придумала библиотеку под названием stdperiph_lib. С её использованием код становится более понятным и читаемым, а так же улучшается переносимость кода с одного STM32 контроллера на другой. Чтобы понять как использовать SPI, крайне желательно ознакомиться со всеми регистрами через которые происходит взаимодействие с ним.

Таблица 1 - Регистр SPI_CR1

BIDI MODE

BIDI OE

CRC

EN

CRC NEXT

DFF

RX ONLY

SSM

SSI

LASB FIRST

SPE

BR[2:0}

MSTR

CPOL

CPHA

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

rw

 

BIDIMODE - если этот бит установлен, то прием и передача данных осуществляются по одному проводу (не считая SCK). При этом MOSI вывод ведущего подключается к MISO ведомого.

BIDIOE - этот бит используется в однопроводном режиме. Если он установлен - SPI модуль только передает данные. Если сброшен - то принимает.

CRCEN - включает аппаратный модуль расчёта контрольной суммы. 0 - выключен, 1 - включен. Изменять состояние этого бита можно только когда SPI модуль выключен (бит SPE = 0).

CRCNEXT - если этот бит установлен, то после следующей передачи байта данных, будет отправлена контрольная сумма.

DFF - если бит сброшен, то SPI модуль передает/принимает данные по 8 бит, в противном случае передается/принимается сразу по 16 бит. Изменять состояние этого бита можно только когда SPI модуль выключен (бит SPE=0).

RXONLY - если используется 2-х проводной режим (см. бит BIDIMODE) то установка этого бита запрещает передачу, SPI модуль работает только на приём

Перед описанием следующих двух бит, нужно отметить одну интересную особенность вывода NSS (он же SS он же CS). Если SPI модуль настроен в режиме ведомого, то он может получать сигнал с ноги NSS или же программно. Если бит SSM сброшен, то сигнал SS будет считываться с ноги NSS, а если он установлен, то состояние ноги NSS игнорируется. В таком случае для управления сигналом SS возлагается на бит SSI. Бит установлен - есть сигнал SS, в противном случае нет. Если же SPI модуль работает в режиме ведущего, то ногу NSS нужно подтянуть к питанию или включить программное управление (SSM=1) и установить бит SSI. В противном случае - SPI модуль подумает, что появился новый ведущий и сам станет ведомым. 

LSBFIRST -задает порядок передачи бит:

0 - сначала передается старший бит; 

1 - сначала передается младший бит.

SPE - выключает/выключает SPI модуль

BR2,BR1,BR0 - задают скорость приема/передачи (частоту SCK). Частота тактирования модуля SPI делится на число, которое задается комбинацией этих трех бит.

Изменять состояние этих бит можно только когда SPI модуль выключен (бит SPE=0).

Таблица 2 - Настройка частоты SCK

BR2

BR1

BR)

Делитель

0

0

0

2

0

0

1

4

0

1

0

8

0

1

1

16

1

0

0

32

1

0

1

64

1

1

0

128

1

1

1

256

MSTR - если бит установлен - SPI модуль является ведущим, иначе ведомым.

CPOL - полярность сигнала SCK.

CPHA - фаза сигнала SCK.

Таблица 3 - Регистр SPI_CR2

Reserved

TXEIE

RXNEIE

ERRIE

FRF

Res.

SSOE

TXMAEN

RXDMAEN

rw

rw

rw

rw

rw

rw

rw

TXEIE - разрешает прерывание, когда буфер передачи пуст (всё передалось)

RXNEIE - разрешает прерывание, когда буфер заполнен данными и их можно забирать.

ERRIE - разрешает прерывание в случае возникновения ошибки. Их всего три, чтобы разобраться какая возникла, нужно смотреть состояние бит в регистре статуса.

FRF - Frame format, выбор протокола TI для обмена данными.

0 - SPI Motorola mode

1 - SPI TI mode

SSOE - Если этот бит выставлен, то SPI модуль (в режиме ведущего) сам управляет выводом NSS. Т.е. перед началом передачи выставляет ноль на этом выводе, а после завершения - выставляет единицу.

TXDMAEN - разрешает/запрещает запрос DMA по завершению передачи

RXDMAEN - разрешает/запрещает запрос DMA по завершению приема

Таблица 4 - Статусный регистр SPI_SR

Reserved

FRE

BSY

OVR

MODF

CRC ERR

UDR

CHSID E

TXE

RXNE

r

r

r

r

rc_w9

r

r

r

r

FRE - Frame error flag, флаг ошибки, он используется когда SPI модуль работает в режиме «TI mode» (бит FRF=1).

BSY - если этот бит установлен, значит, модуль SPI занят передачей данных.

OVR - бит выставляется в том случае, если в SPI модуль поступили новые данные и были записаны на место данных, которые не были прочитаны.

MODF - выставляется в том случае, если ведущий перестал быть ведущим. Такое возможно когда нога ведущего NSS настроена как вход и на неё поступил сигнал низкого уровня.

CRCERR - ошибка контрольной суммы.

UDR - флаг не используется в режиме SPI.

TXE - Передача данных завершилась.

RXNE - Приём данных завершен.

Регистр SPI_DR

Представляет собой 16-ти битный регистр данных. На самом деле регистров два - один для передачи, а другой для приёма, но работа с ними осуществляется через один регистр SPI_DR. Если в него что-либо записывается, то запись данных производится в регистр для передачи. Если происходит чтение, то данные считываются из регистра для приёма данных.

Регистр SPI_CRCPR:

В этот регистр записывают некоторое число, которое влияет на расчет контрольной суммы. По умолчанию записано число 7.

Регистр SPI_TXCRCR:

Сюда записывается контрольная сумма, которая была рассчитана для передаваемых данных.

Регистр SPI_RXCRCR:

Сюда записывается контрольная сумма, которая была рассчитана для принятых данных.

1.2Микросхема памяти FM25V02A

1.2.1 Описание микросхемы

FM25V02A представляет собой последовательную память F-RAM с организацией памяти 32768 Ч 8 бит. Доступ к данным происходит по стандартному промышленному последовательному периферийному интерфейсу (SPI). Функциональная работа F-RAM аналогична последовательной flash-памяти и последовательной EEPROM. Основными различиями между FM25V02A и последовательной флэш-памятью или EEPROM с такими же выходами, являются превосходная производительность записи F-RAM, высокая прочность и низкая потребляемая мощность.

При доступе к FM25V02A, пользователь обращается к тридцати двум тысячам адресов восьмибитных (байт) данных. Эти данные поступают или извлекаются из устройства последовательно. Адреса доступны с помощью протокола SPI, который включает в себя выбор микросхемы, код операций и двухбайтовый адрес. Верхний бит диапазона адресов является не значащим, в то время как полный адрес из 15 бит определяет адрес каждого байта однозначно.

Рисунок 1 - Логическая блок схема микросхемы памяти

Рисунок 2 - Расположение выводов микросхемы памяти

Таблица 5 - Назначение выводов микросхемы памяти

Название выхода

Вход/

выход

Описание

SCK

Вход

Последовательный тактовый вход. Служит для подачи внешних тактовых импульсов.

CS

Вход

Выбор микросхемы. Сигнал низкого уровня на этом входе активирует микросхему. При высоком уровне устройство входит в режим ожидания с низким энергопотреблением, игнорируя все остальные входы.

SI

Вход

Последовательный вход. Все данные поступают в устройство на этот вход. Вход принимает сигнал по переднему фронту последовательного тактового сигнала , в остальное время он находится в высокоимпендансном состоянии.

SO

Выход

Последовательный выход. Он активируется при чтении данных с микросхемы, во всех остальных случаях находится в высокоимпендансном состоянии. Считывание данных приводится в движение по заднему фронту последовательного тактового сигнала.

WP

Вход

Защита от записи. Этот вход активен, при поступающем сигнале низкого уровня. Данный вход препятствует операции записи в регистр состояний, когда WPEN установлен в «1». Это важно, так как другие функции защиты от записи управляются через регистр состояний. Если вывод не используется, то он должен быть подключен к Vdd.

HOLD

Вход

Вход удержания. Данный вход используется, когда хост процессор должен прервать операцию работы с памятью для других задач. Когда поступает сигнал низкого уровня, текущая задача приостанавливается. Устройство игнорирует любые изменения на входах SCK и CS. Все переходы сигнала на этом входе должны происходить в то время, когда на SCK низкий уровень сигнала.

Vss

Питание

Заземление. Необходимо подключить к земле.

Vdd

Питание

Вход питания устройства. (3.3 В)

FM25V02A является ведомым устройством SPI и работает со скоростью до 33 МГц. Эта высокоскоростная последовательная шина обеспечивает высокопроизводительную последовательную связь с ведущим устройством SPI. Очень много микроконтроллеров имеют аппаратные порты SPI, позволяющие реализовать прямой интерфейс. Также довольно просто эмулировать SPI порт, используя обычные порты микроконтроллеров, которые этого не делают. FM25V02A работает в SPI Mode 0 и 3.

Рисунок 3 - Схема подключения микросхемы FM25V02A к SPI микроконтроллеру

1.2.2 SPI режимы

FM25V02A активируется с помощью микроконтроллера как его SPI периферия и может работать в одном из двух режимов:

- SPI Mode 0 (CPOL = 0, CPHA = 0)

- SPI Mode 3 (CPOL = 1, CPHA = 1)

Для каждого из этих режимов, ввод данных фиксируется по нарастающему фронту сигнала со входа SCK, начиная с первого переднего фронта после того, как CS станет активным. Если сигнал на входе SCK в начальное время после активации CS высокого уровня (режим 3), то первый передний фронт сигнала на входе SCK учитывается. Выходные данные считываются на заднем фронте SCK. Режимы SPI представлены на рисунках Х и Х. Состояние входа SCK, когда ведущее устройство не передает или считывает данные:

- SCK остается на низком уровне для режима 0;

- SCK остается на высоком уровне для режима 1.

Рисунок 4 - SPI режим 0

Рисунок 5 - SPI режим 3

Устройство определяет режим SPI из состояния входа SCK, когда устройство выбрано в результате подачи сигнала низкого уровня на вход CS. Если SCK на низком уровне, когда устройство выбрано, то режим SPI 0. Если SCK вход на высоком уровне, он работает в режиме SPI 3.

При первом включении микросхемы, следует учитывать, что ее нельзя использовать сразу же. Существует временной интервал (tpu), который необходимо выдержать, между подачей питания и выбора микросхемы. Минимальное значение этого интервала равно 1 мс.

1.2.3 Структура команд

Есть девять команд, называемых опкоды, которые могут быть выданы ведущим устройством к FM25V02A. Они приведены в таблице 6. Эти опкоды контролируют функции, выполняемые памятью.

Таблица 6 - Опкоды микросхемы памяти

Название

Описание

Опкод

WREN

Установка задвижки разрешения записи

0000 0110b

WRDI

Сброс задвижки разрешения записи

0000 0100b

RDSR

Считать регистр состояния

0000 0101b

WRSR

Установить регистр состояния

0000 0011b

READ

Считать данные из памяти

0000 0011b

FSTRD

Быстрое считываение данных из памяти

0000 1011b

SLEEP

Включит режим ожидания

1011 1001b

RDID

Считать ID устройства

1001 1111b

Reserverd

Зарезервировано

1100 0011b

1100 0010b

0101 1010b

0101 1011b

WREN. При включении питания микросхемы, функция записи у нее отключена. Перед любой операцией записи должна быть выполнена команда WREN. Отправка опкода WREN позволяет пользователю пользоваться другими опкодами для операций записи. Они включают в себя установку регистра состояния (WRSR) и записи памяти (WRITE). Отправка этого опкода устанавливает внутреннюю задвижку разрешения записи. Флаг в регистре состояния, называющийся WEL, считывает состояние задвижки. Его установка в «1» указывает на то, что запись является разрешенной. Напрямую этот бит установить нельзя. При отключении микросхемы (установка CS в «1»), этот бит автоматически сбрасывается. Это отключает возможность дальнейших операций записи в регистре состояния и памяти микросхемы, пока снова не будет выполнена команда WREN.

Рисунок 6 - Конфигурация опкода WREN

WRDI. Данный опкод является противоположностью WREN. Он отключает любую возможность записи и сбрасывает задвижку разрешения записи, соответственно устанавливая бит WEL в «0».

Рисунок 7 - Конфигурация опкода WRDI

1.2.4 Регистр состояния

Таблица 7 - Биты регистра состояния

Бит 7

Бит 6

Бит 5

Бит 4

Бит 3

Бит 2

Бит 1

Бит 0

WPEN(0)

X(0)

X(0)

X(0)

BP1(0)

BP0(0)

WEL(0)

X(0)

Бит 0. Бит является не важным, в него невозможно что-либо записать и он всегда возвращает - при чтении.

Бит 1. Показывает статус задвижки разрешения записи на устройство. По умолчанию этот бит установлен в «0» (запись отключена). При установке в «1», запись данных на микросхему становится возможной.

Бит 2. Бит защиты блока данных. Используется для блокировки участка памяти. Более подробно в таблице Х.

Бит 3. Бит защиты блока данных. Используется для блокировки участка памяти. Более подробно в таблице Х.

Биты 4-6. Являются не важными. В них невозможно что-либо записать и всегда возвращают «0» при их чтении.

Бит 7. Используется для включения защиты от записи (вход WP).

Таблица 8 - Защита блоков данных от записи

BP1

BP0

Диапазон блокирования

0

0

-

0

1

6000h - 7FFFFh (1/4)

1

0

4000h - 7FFFFh (1/2)

1

1

0000h - 7FFFFh (полностью)

1.2.5 Операции с памятью

Любая операция записи на микросхему начинается с опкода WREN, при активной микросхеме (на CS «0»). Следующий опкод - WRITE. За ним следует два байта, содержащие в себе адрес из 15 бит (А14-А0) первого байта данных, который должен быть записан в память. Старший бит адреса игнорируется. Затем байты данных начинают записываться в память последовательно, до тех пор пока ведущее устройство генерирует тактовые сигналы на вход SCK и держит сигнал на входе CS на низком уровне. Если достигается последний адрес (7FFFFh), то данные начинают снова записываться с нулевого адреса (0000h). Передний фронт сигнала CS завершает операцию записи. Диаграмма работы записи представлена на рисунке 8.

Рисунок 8 - Операция записи в память (опкод WREN не показан)

Операция чтения происходит аналогичным образом. Если микросхема активирована, ведущее устройство может выдать опкод READ. После этой команда отправляется два байта данных содержащих в себе необходимый адрес из 15 бит (старший бит игнорируется). После получения этих двух команд, устройство отправляет данные ведущему устройству в следующие 8 тактов (если данные были записаны побайтно). Во время операции чтения, вход SI игнорируется. Последующие байты, которые являются байтами данных, считываются последовательно. Адрес увеличивается до тех пор, пока на вход SCK приходит тактовый сигнал и микросхема активна ( на CS «0»). Если будет достигнут последний адрес, то данные начнут считывать с нулевого адреса. Передний фронт на входе CS прерывает операцию чтения и устанавливает выход SO в третье состояние. Операция считывания показана на рисунке 9.

Рисунок 9 - Операция чтения из памяти

Режим удержания (выход HOLD) может быть использован для прерывания операции, без ее полного отключения. Если ведущее устройство подает на выход HOLD низкий уровень сигнала, когда на SCK также низкий уровень, текущая операция приостанавливается. При установке входа HOLD в логическую единицу, когда на SCK низкий уровень, операция возобновляется. Переходы на входе HOLD могут осуществляться только при низком уровне сигнала на входе SCK, но во время состояния удержания SCK и CS все так же могут переключаться. Работа режима удержания показана на рисунке 10.

Рисунок 10 - Режим удержания

На данном устройстве возможет режим сна с низким уровнем энергопотребления. Микросхема входит в данный режим когда опкод SLEEP синхронизируется с передним фронтом сигнала на входе CS. Когда устройство находится в режима сна, входы SCK и SI игнорируется и SO находится в третьем состоянии, но устройство так же продолжает следить за сигналом на входе CS. При следующем падающем фронте на входе CS, устройство возвращается в нормальный режим работы после времени tREC (max. 400 мкс). Выход SO на период пробуждения так же остается в третьем состоянии. Во время пробуждения устройству не обязательно реагировать на опкоды, поэтому ведущее устройство может послать опкод и ждать оставшееся время tREC до пробуждения. Принцип работы показан на рисунке 11.

Рисунок 11 - Режим сна

2. Разработка схем МП системы

Для реализации данной микроконтроллерной системы необходимо обозначить ее структуру. Контроллером фирмы STM был выбран STM32F405RG. Микросхемой памяти выбрана FM25V02A. У контроллера напряжение питания составляет 3.3 В, поэтому при питании от внешнего источника с напряжением 5 В также необходим стабилизатор напряжения. Для этих целей был выбрана микросхема MIC5319. Структурная схема приведена на рисунке 12. Принципиальная схема в приложении А.

Рисунок 12 - Структурная схема

3. Разработка ГСА и управляющей программы МП системы

3.1 ГСА и ее описание

Для проверки работоспособности схемы приведенной в приложении А, необходимо реализовать управляющую программу. С помощью нее достаточно отправить один байт данных на микросхему и принять обратно. ГСА управляющей программы представлена на рисунке 13.

Рисунок 13 - ГСА управляющей программы

В первую очередь, перед началом работы основной программы, необходимо инициализировать порты микроконтроллера. Для данной задачи это порты PA7(SPI1_MOSI), PA6 (SPI1_MISO),PA5 (SPI1_CLK) ,PB1(CS) ,PB0 (WP) и PC5 (HOLD). Для каждого блок выводов (PAx, PBx, PCx) сначала необходимо инициализировать тактирование, а затем задать функции, которые они будут выполнять. Порты PB1, PB0 и PC5 используются как простые выходы, причем для нашей задачи все их необходимо изначально установить в «1». Далее в программе необходимо будет изменять только состояние порта PB1. Оставшиеся три вывода инициализируются в режиме альтернативной функции (то есть в режиме SPI1). После этого необходимо задать параметры самого SPI модуля: режим работы, количество передаваемых данных, предделитель, режим передачи данных, порядок передачи данных и другое.

После выполнения приведенных выше действий, начинает выполняться основная программа. Для работы с микросхемой необходимо после каждой передачи данных ждать пока регистр, отвечающий за занятость передатчика, не установится в «0», чтобы все данные успевали передаваться из сдвигового регистра. Также при необходимости используется активация/деактивация микросхемы, для переключения режимов работы чтение/запись. Листинг программы представлен в приложении Б.

3.2 Среда программирования и отладка

Средой программирования была выбрана CooCox IDE, так как она имеет некоторые преимущества перед другими средами. Она предназначена для разработки программ микроконтроллеров архитектуры ARM, а также является одной из самых простых и быстрых в плане установки и настройки, решений. Среда позволяет загружать исходный код программы, редактировать его, проводить компиляцию, прошивать контроллер и проводить отладку.

Программа основана на базе Eclipse и имеет все ее достоинства. Редактор кода включает в себя подсветку синтаксиса и всплывающие подсказки. Присутствуют функции глобальной замены переменной и предложения вариантов окончания кода. Среда поддерживает микроконтроллеры серии ST, а также ряд других семейств: Atmel, Holtek, Freescale, Nuvoton, NXP, Energy Micro, Texas Instruments и некоторые другие. Список чипов постоянно увеличивается с каждой версией программы. Встроенный дебаггер ST-Link поддерживает все основные режимы отладки.

Отладка проходила путем отслеживания ошибок кода самой средой программирования и анализом осциллограмм.

3.3 Результат работы программы

На рисунках 14 и 15 представлен результат работы программы. На рисунке 14 показана отправка опкодов и данных на микросхему памяти. Перед отправкой импульсов состояние входа CS устанавливается в логический «0». Затем начинается отправка синхроимпульсов и опкода разрешения записи WREN (0x06), который устанавливает бит WEL регистра состояния в единицу. После установки данного бита, необходимо снова деактивировать микросхему (CS в «1») и активировать (CS в «0»), чтобы посылать следующие опкоды для работы с микросхемой. Вторым опкодом (второй блок синхроимпульсов) является WRITE (0х02), который обозначает режим записи в память с адреса, указанного в последующих двух байтах (третий и четвертый блок синхроимпульсов, в данном случае адрес 0х0000). После этого на микросхему передаются непосредственно данные (по байту), на этой осциллограмме это пятый блок синхроимпульсов с передаваемым значением 0х11. Запись байта была произведена и микросхема снова приводится в неактивное состояние. После завершения работы с опкодом WREN она должна автоматически установить бит WEL в 0 и запретить любую запись на микросхему, но для большей конкретики эта операция была выполнена явно. Для этого F-RAM снова активируется и на нее посылается опкод WRDI (0x04), запрещающий производить операции записи. Микросхема снова деактивируется. На этом заканчивается полная операция записи в микросхему. Операция чтения производится по аналогичному алгоритму работы опкода WRITE, с тем лишь отличием, что ему не нужно никаких разрешений, главное чтобы данный участок памяти не был заблокированным. Микросхема активируется и начиная с седьмого блока синхроимпульсов начинается операция считывания данных, первой отправкой является опкод READ (0x03), сообщающий F-RAM о том, что необходимо выводить из HI-Z состояния вывод SO и отправлять данные микроконтроллеру. Но перед отправкой данных, также как и при записи, указывается начальный адрес с которого будет производиться чтение (восьмой и девятый блоки синхроимпульсов). Адрес был выбран тем же (0х0000), что и при записи, чтобы считать ранее записанный байт. После проведения данных операция, на микросхему посылается фиктивный байт, для подачи синхроимпульсов, в течении которых, она выдает данные на вывод SO (рисунок 15) и контроллер считывает эти данные. Они такие же, как и при записи (0х11), это означает, что система работает правильно. После операции чтения, микросхема снова деактивируется.

Рисунок 14 - Отправка данных на микросхему памяти (вывод SI)

Рисунок 15 - Прием данных с памяти (вывод SO)

Заключение

В рамках данной работы, было произведено знакомство с микроконтроллерами фирмы STMicroelectronics и ядром семейства ARM Cortex M4. Изучены основы программирования микроконтроллера и работы с периферией по шине SPI.

Была изучена микросхема F-RAM памяти FM25V02A, режимы ее функционирования и подключение к SPI микроконтроллеру.

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

В результате выполнения курсовой работы были разработаны схема подключения микроконтроллера STM32F405RG и микросхемы памяти F-RAM FM25V02A и управляющая программа. Принципиальная схема подключения и управляющая программа, приведены в приложениях А и Б соответственно.

микропроцессорный контроллер память

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

Интерфейс SPI в STM32. Часть 1 [Электронный ресурс] / Режим доступа: http://easystm32.ru/interfaces/45-spi-interface-part-1

Меджахед, Д. STM32: эпоха 32-битных микроконтроллеров наступила / С. Д. Меджахед. Новости электроники, 2011. №6.

Интерфейс SPI в STM32. Часть 2 [Электронный ресурс] / Режим доступа: http://easystm32.ru/interfaces/45-spi-interface-part-2

СТП ОмГУПС-1.2-2005. Работы студенческие учебные и выпускные квалификационные: общие требования и правила оформления текстовых документов. - Омский Государственный Университет Путей Сообщения, Омск, 2005. 28с.

Приложение А

Листинг программы

#include "stm32f4xx.h"

#include "stm32f4xx_gpio.h"

#include "stm32f4xx_spi.h"

#include "stm32f4xx_rcc.h"

#define HOLD (1<<5)

uint8_t WRITE;

uint8_t RD;

uint8_t WREN;

#define CS_LOW GPIO_ResetBits(GPIOB, GPIO_Pin_1);

#define CS_HIGH GPIO_SetBits(GPIOB, GPIO_Pin_1);

void init(){

GPIO_InitTypeDef gpio;

SPI_InitTypeDef SPI_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);

gpio.GPIO_Mode = GPIO_Mode_OUT;

gpio.GPIO_Speed = GPIO_Speed_25MHz;

gpio.GPIO_OType = GPIO_OType_PP;

gpio.GPIO_Pin = HOLD;

GPIO_Init(GPIOC, &gpio);

GPIO_SetBits(GPIOC, HOLD);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

gpio.GPIO_Mode = GPIO_Mode_OUT;

gpio.GPIO_Speed = GPIO_Speed_25MHz;

gpio.GPIO_OType = GPIO_OType_PP;

gpio.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0;

GPIO_Init(GPIOB, &gpio);

CS_HIGH

GPIO_SetBits(GPIOB, GPIO_Pin_0);

// Тактирование модуля SPI1 и порта А

RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

// Настраиваем ноги SPI1 для работы в режиме альтернативной функции

GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_SPI1);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_SPI1);

gpio.GPIO_Mode = GPIO_Mode_AF;

gpio.GPIO_Speed = GPIO_Speed_50MHz;

gpio.GPIO_OType = GPIO_OType_PP;

gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;

gpio.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_6 | GPIO_Pin_5;

GPIO_Init(GPIOA, &gpio);

//Заполняем структуру с параметрами SPI модуля

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //полный дуплекс

SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // передаем по 8 бит

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; // Полярность и

SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; // фаза тактового сигнала

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // Управлять состоянием сигнала NSS программно

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; // Предделитель SCK

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; // Первым отправляется старший бит

SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // Режим - мастер

SPI_Init(SPI1, &SPI_InitStructure); //Настраиваем SPI1

SPI_Cmd(SPI1, ENABLE); // Включаем модуль SPI1....

// Поскольку сигнал NSS контролируется программно, установим его в единицу

// Если сбросить его в ноль, то наш SPI модуль подумает, что

// у нас мультимастерная топология и его лишили полномочий мастера.

SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);

}

Листинг программы Б, лист 1

int main(void)

{

init();

CS_LOW

uint8_t ADDR = 0x00;

uint8_t data = 0x11;

uint16_t buf = 0x0000;

WREN = 0x06;

WRITE = 0x02;

RD = 0x03;

init();

CS_LOW

SPI_I2S_SendData(SPI1, WREN);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

CS_HIGH

CS_LOW

SPI_SendData(SPI1, WRITE);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, ADDR);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, ADDR);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, data);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

CS_HIGH

CS_LOW

SPI_I2S_SendData(SPI1, 0x04);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

CS_HIGH

CS_LOW

SPI_SendData(SPI1, RD);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, ADDR);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, ADDR);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

SPI_SendData(SPI1, ADDR);

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

//GPIO_SetBits(GPIOC, LED);

while(SPI_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

SPI_I2S_SendData(SPI1, SPI_I2S_ReceiveData(SPI1));

while(SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == SET);

CS_HIGH

}

Размещено на Allbest.ru

...

Подобные документы

  • Объем двухпортовой памяти, расположенной на кристалле, для хранения программ и данных в процессорах ADSP-2106x. Метод двойного доступа к памяти. Кэш-команды и конфликты при обращении к данным по шине памяти. Пространство памяти многопроцессорной системы.

    реферат [28,1 K], добавлен 13.11.2009

  • Разработка алгоритма работы и структуры контроллера кэш-памяти с полностью ассоциативным отображением основной памяти. Представление операционной и управляющей частей черного ящика устройства. Схема алгоритма контроллера кэш на уровне микроопераций.

    курсовая работа [1,0 M], добавлен 19.03.2012

  • Используемые в компьютерах устройства памяти для хранения данных. Внутренние (оперативная и кэш-память) и внешние устройства памяти. Уровни иерархии во внутренней памяти. Подключения дисководов и управления их работой с помощью дискового контроллера.

    презентация [47,7 K], добавлен 26.11.2009

  • Сравнительный анализ статической и динамической памяти. Быстродействие и потребление энергии статической памятью. Объем памяти микросхем. Временные диаграммы чтения и записи памяти. Микросхемы синхронной и асинхронной памяти. Режимы модулей памяти.

    презентация [114,2 K], добавлен 27.08.2013

  • Описание функциональной схемы интеллектуального контроллера. Сравнительная характеристика выбранных устройств. Параметры электронных элементов микроконтроллера. Схема подключения к управляющей системе. Общий алгоритм функционирования системы управления.

    курсовая работа [757,2 K], добавлен 26.12.2012

  • Общая характеристика и функциональные особенности микросхем динамической памяти SDRAM, их классификация и типы, внутреннее устройство. Основные требования к конструкции корпусов. Отношение между тактовым сигналом и циклами передачи данных памяти RDRAM.

    презентация [277,4 K], добавлен 27.08.2013

  • Физическая организация памяти компьютера. Организация структуры обработки потока данных. Степень и уровни параллелизма. Оценка иерархической организации памяти. Динамическая перестройка структуры. Микросхемы запоминающих устройств. Кэш-память процессора.

    лекция [2,4 M], добавлен 27.03.2015

  • Иерархия запоминающих устройств ЭВМ. Микросхемы и системы памяти. Оперативные запоминающие устройства. Принцип работы запоминающего устройства. Предельно допустимые режимы эксплуатации. Увеличение объема памяти, разрядности и числа хранимых слов.

    курсовая работа [882,6 K], добавлен 14.12.2012

  • Разработка компьютерного устройства RAM-диск, позволяющего считывать, записывать и хранить информацию в модулях динамической памяти типа SDRAM под управлением микроконтроллера. Составление структурной и принципиальной схемы устройства, листинг программы.

    курсовая работа [3,9 M], добавлен 24.12.2012

  • Структура и основные элементы микроконтроллера. Разрядность и система команд процессора. Методы представления информации. Память и её типы. Режимы работы портов электронного устройства. Многофункциональность выводов микро-ЭВМ. Семейства микроконтроллеров.

    презентация [1,2 M], добавлен 16.12.2011

  • Характеристика устройства и технологических данных промышленного робота СМ40Ц. Описание микропроцессорного комплекта серии U83-K1883, системы его команд, микросхемы К572ПВ4, функциональной, принципиальной схем и алгоритма работы программы управления.

    курсовая работа [5,8 M], добавлен 02.06.2010

  • Создание приемника команд RC5 для персонального компьютера на основе микроконтроллера ATmega8. Особенности написания файла прошивки и симулирование устройства. Порядок выполнения сборки собственной схемы и характеристика полученного микроконтроллера.

    курсовая работа [2,0 M], добавлен 24.11.2013

  • Выбор элементной базы: микроконтроллера; микросхем для реализации системной шины; памяти; кварцевого генератора; сторожевого таймера; индикатора и коммутатора; последовательного порта. Программное обеспечение микропроцессорной системы обработки сигналов.

    курсовая работа [259,3 K], добавлен 19.04.2012

  • Разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. Текст программы, инициализация указателя стека, структура системы и ресурсов микроконтроллера. Запись кодов при программировании данного устройства.

    контрольная работа [18,4 K], добавлен 24.12.2010

  • Идентификация объекта управления на основе экспериментальных данных. Синтез информационно-управляющей системы и анализ ее характеристик: аналогового регулятора Смита и его цифровое перепроектирование, адаптация. Выбор микропроцессорного контроллера.

    курсовая работа [683,3 K], добавлен 16.10.2013

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

    курсовая работа [891,8 K], добавлен 24.12.2012

  • Рассмотрение структурной схемы микропроцессорной системы обработки данных. Описание архитектуры микроконтроллера ATmega161. Расчет оперативного запоминающего устройства. Строение, назначение адаптера параллельного интерфейса, способы его программирования.

    курсовая работа [621,5 K], добавлен 24.09.2010

  • Разработка структурной схемы и алгоритма функционирования микропроцессорного модуля программного обеспечения автоматизированной информатизационно-измерительной системы. Характеристика принципиальной схемы модуля, распределения памяти и задание портов.

    курсовая работа [1,2 M], добавлен 28.08.2012

  • Оперативная память - часть памяти компьютера: назначение, функции, способ передачи данных процессору. Современные запоминающие устройства: голографическое, молекулярное, на основе графеновой наноленты и нанотрубках; принцип работы и перспективы развития.

    реферат [1,3 M], добавлен 21.04.2011

  • Обеспечение непосредственной связи контроллера прямого доступа к памяти (ПДП) и памяти микроЭВМ. Совместное использование шин системного интерфейса процессором и контроллером. Последовательность и алгоритм программирования контроллера прямого доступа.

    реферат [122,6 K], добавлен 13.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.