4.Функции SРI

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

Интерфейс SPI использует три линии для последовательной связи.

Дополнительно к многочисленным устройствам памяти все хорошо извест­ные производители предлагают совместимые с SPI аналого-цифровые (АЦП) и цифро-аналоговые (ЦАП) преобразователи, часы реального времени (RТС) и другие устройства.

Связи, требующиеся в типовом SРI-интерфейсе, показаны на Рис. 1. Мик­роконтроллер (МСU) посылает последовательные данные через свою МОSI (Master Out Slаvе In — Выход ведущего/Вход ведомого) линию на вход SI( S1аvе In — Вход ведомого) периферийного устройства. Периферийное устройство посылает свои данные через выход SО (S1аvе Out — Выход ведомого) на линию МISО. Обмен данных синхронизируется сигналом тактовой частоты SСК, который генерирует микроконтроллер.

Сигналы Chip Select (Выбор чипа) SS0. . .SS3 активизируют периферийное ус­тройство для доступа.

_Pic1

Рис. 1 Последовательный SРI-интерфейс.

Пример синхронизации для обмена данных между микроконтроллером (master) и периферийным (slave) устройством по интерфейсу SPI показан на Рис. 2

_Pic1

Рис. 2 Синхронизация SPI.

Функции, которыми требуется управлять через SPI, зависят от используемого периферийного устройства.

Интерфейс SPI работает подобно 8-битовому регистру сдвига. Байт, который требуется послать, сохраняется в регистре и будет перемещаться бит за битом на вывод МОSI. Освобождающиеся позиции заполняются битами, полученными с вывода МISО. Для передачи байта в регистр потребуется 8 тактов.

НЕ нашли? Не то? Что вы ищете?

Некоторые микроконтроллеры AVR имеют встроенный SPI. Если должно быть использовано это внутреннее периферийное устройство, то следует соответствующим образом сконфигурировать выводы микроконтроллера.

Микроконтроллеры с внутренними аппаратными средствами SPI допускают конфигурацию полярности и фазы тактовой частоты SСК. При отсутствии аппаратного SPI правильность синхронизации сигналов должна быть запрограммирована.

_Pic2Весь обмен данными SPI организовывает SPI Control Register (Регистр управ ления SPI) - SРСR (Рис. 3) [25].

Рис. 3 Биты регистра SРСR.

Биты управляющего регистра SPI устанавливаются следующим образом.

·  Установка бита SPE (SPI Enable — Разрешение SPI) в 1 разрешает SPI. Этот бит должен быть установлен для разрешения любой SPI-операции.

·  Если бит DORD (Data Огdег — Порядок данных) установлен в 1, то первым будет передаваться младший байт (LSB). Если этот бит сброшен в 0, то пер­вым будет передаваться старший байт (MSB).

·  Бит MSTR (Master/S1аvе Select — Выбор Маster/Slave) выбирает режим SPI, в котором работает микроконтроллер: 1 — режим Master, 0 — режим Slave.

·  Бит CPOL (C1ock Ро1агitу - Полярность тактовых импульсов) определяет полярность тактовых импульсов: 1 — по высокому уровню, 0 — по низкому уровню.

·  Бит СРНА (C1ock Рhаsе — Фаза тактовых импульсов) определяет фазу так­товых импульсов: 1 — по началу цикла, О — по половине цикла.

·  Биты SPR1 и SPR0 (SPI Сlосk Rate Select 1 и 2 — Выбор показателя тактовой частоты SPI) определяют показатель тактовой частоты SPI, когда микроконтроллер в режиме master. Соотношение между тактовой частотой микроконтроллера и SCK, в зависимости от значения этих битов, приведе­но в Табл. 1.

·  Установка бита SPIE (SPI Interrupt Enable - Разрешение прерывания SPI) в 1 разрешает прерывание SPI.

_Pic1Таблица 1 Соотношение между тактовой частотой микроконтроллера и SСК

Перечень функций SPI и их действия приведены в Табл. 2

Таблица 2 Перечень функций SРI

_Pic1

Прототипы этих функций размещаются в файле spi. h, расположенном в под­директории..\INC. Перед использованием этих функций директивой #include должен быть подключён файл spi. h[12].

5.LCD – функции

LCD-функции предназначены для облегчения пользователю сопряжения между программами Си и алфавитно-цифровыми LCD-модулями со встроенным чипом HD44780 от Hitachi или эквивалентным.

Контроллер HD44780 потенциально может управлять двумя строками по 40 символов в каждой (для модулей четырьмя строками по 40 символов используются два однотипных контроллера).

Название и описание выводов рассматриваемых LCD приведено в Табл. 3

_Pic1

Таблица 3 Описание выводов LCD на базе HD44780

При помощи этих выводов LCD обменивается информацией с управляющим микроконтроллером (в нашем случае - с AVR). Микроконтроллер AVR посылает в LCD команды, управляющие режимами его работы, и коды выводимых симво­лов. В свою очередь LCD может посылать микроконтроллеру AVR по его запросу информацию о своём состоянии и данные из своих внутренних блоков памяти.

Три вывода LCD предназначены для подачи питающего напряжения (VSS, VDD) и напряжения смещения (V0), которое управляет контрастностью дисплея. На Рис. 4 показана схема питания этих выводов.

_Pic2

Рис. 4 Cхема питания LCD.

Выводы DВ0...DВ7 используются для организации мультиплексированной шины «Команды/данные». На выводы RS, R/W, Е (или Е1, Е2 для LCD 4х40) микроконтроллер AVR выставляет управляющие сигналы.

При помощи сигнала на линии RS микроконтроллер сообщает контроллеру LCD о том, что именно передаётся по шине: команда или данные. Если RS = 0, адресуется регистр команд, если RS = 1 - регистр данных.

Данные через регистр данных, в зависимости от текущего режима, могут по­мещаться (или прочитываться) в видеопамять (DDRAM) или в ОЗУ знакогенератора (CGRAM) по текущему адресу.

Информация, попадающая в регистр команд, интерпретируется устройством выполнения команд как управляющая последовательность. Прочтение регистра команд возвращает в семи младших битах текущее значение счётчика адреса (АС), а в старшем разряде - флаг занятости (ВЕ).

Сигнал на линии Е (или Е1, Е2) является стробом, сопровождающим сигналы на шине «Команды/данные». Запись информации в LCD происходит по спаду этого сигнала.

Потенциал на управляющем выводе R/W задаёт направление передачи дан­ных: запись в RAM LCD (R/W = 0) или считывание оттуда (R/W = 1).

Для случая, когда микроконтроллер имеет ограниченное количество линий ввода/вывода, предусмотрен второй вариант подключения LCD с использовани­ем 4-битной шины «Команды/данные». При этом каждый байт данных передаёт­ся по линиям 0В4...ВВ7 последовательно двумя тетрадами, начиная со старшей.

Контроллер LCD после приёма байта команды или байта данных требует некоторого времени для обработки полученной информации, в течение которого микроконтроллер AVR не должен выполнять новые передачи.

Для того чтобы определить, когда контроллер LCD закончит свои внутренние операции, микроконтроллер AVR может опрашивать BUSY-флаг (флаг занятости - ВЕ), который сбросится только тогда, когда контроллер LCD освободится. Второй, более простой способ заключается в том, что управляющий микроконтроллер, зная, сколько времени требуется LCD на обработку той или иной команды, просто выполняет временную задержку после каждой передачи информации.

Видеопамять (DDRAM), имеющая общий объём 80 Б, предназначена для хра­нения кодов символов, отображаемых на LCD. Видеопамять организована в две строки по 40 символов в каждой. Эта привязка является жесткой и не подлежит изменению, другими словами, независимо от того, сколько реальных строк будет иметь каждый конкретный LCD-модуль скажем, 80х1 или 20х4, адресация видеопамяти всегда производится как к двум строкам по 40 символов.

При записи или считывании буфера данных обращение осуществляется к ячейке, на которую в данный момент указывает курсор. У двустрочных LCD первые 40 ячеек буфера данных обычно отображаются на верхней строке дисплея, а вторые 40 ячеек - на нижней.

Кроме DDRAM, контроллер LCD содержит ещё один блок памяти - знакоге­нератор. Его «прошивка», т. е. соответствие кодов начертанию символов, обычно имеется в описании LCD. Пример такой «прошивки» представлен в Табл. 4.

Из допустимых для размещения в DDRAM кодов символы с кодами 0х00...0х07 (и их дубликаты с кодами 0х08...0х0F) имеют специальное назначение - это переопределяемые символы, графическое изображение кото­рых может назначить сам пользователь, поместив соответствующую информа­цию в области CGRAM. Для программирования доступны 8 переопределяемых символов в режиме с матрицей 5х7 точек. Для каждого из восьми перепрограмми­руемых символов в CGRAM отводится по 8 ячеек памяти, каждая из которых со ответствует одной строке точек в изображении символа. Для символа 0 (код сим вола 0х00) адреса ячеек памяти - 0х00...0х07, для символа 1 (код символа 0х01) адреса ячеек памяти - 0х08...0х0F и т. д. Таким образом, перепрограммируемая часть знакогенератора содержит 64 байта памяти (8х8).

Для кодирования матрицы используются горизонтально «уложенные» байты, пять младших битов которых несут информацию о рисунке (причём 1 означает, что сегмент будет включён), 4-й бит каждого из 8 байтов матрицы определяет ле вую колонку символа, а 0-й - правую. Старшие три бита не используются и могут иметь любые значения[12].

Таблица 4. Пример прошивки знакогенератора LCD-модуля на базе HD44780

_Pic1

Пример кодирования CGRAM для одного символа приведён на Рис. 5 (символ 2, код символа 0х02).

_Pic2

Рис. 5. Пример кодирования символа (незначащие биты показаны светлым шрифтом).

У контроллера HD44780 существует набор внутренних флагов (Табл. 5), оп­ределяющих режимы работы различных элементов контроллера.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4