пояснительная записка (1231539), страница 8
Текст из файла (страница 8)
Загрузка ПО контроллера производилась с помощью SPI программатора.
SPI представляет собой четырехпроводную синхронную шину, предназначенную для последовательного обмена данными между микросхемами. Данный интерфейс отличают простота использования и реализации, высокая скорость обмена и малая дальность действия.
При любом обмене данными по SPI одно из устройств является ведущим (Master), а другое ведомым (Slave). Обычно (но не всегда) в роли ведущего выступает микроконтроллер. Ведущий переводит периферийное устройство в активное состояние и формирует тактовый сигнал и данные. В ответ ведомое устройство передает ведущему свои данные. Передача данных в обе стороны происходит синхронно с тактовым сигналом [10].
Физически SPI реализуется на основе сдвигового регистра, который выполняет и функцию передатчика, и функцию приемника.
Сигналы, используемые данным интерфейсом, имеют следующее назначение:
-
MOSI — Master Output / Slave Input. Выход ведущего / вход ведомого. Служит для передачи данных от ведущего устройства к ведомому;
-
MISO – Master Input / Slave Output. Вход ведущего / выход ведомого. Служит для передачи данных от ведомого устройства к ведущему;
-
SLK — Serial Clock. Сигнал синхронизации. Служит для передачи тактового сигнала всем ведомым устройствам;
-
SS — Slave Select. Выбор ведомого. Служит для выбора ведомого устройства.
2.9.1 Протокол обмена по SPI
Протокол обмена по SPI аналогичен логике работы сдвигового регистра и заключается в последовательном побитном выводе/вводе данных по определенным фронтам тактового сигнала. Установка данных и выборка осуществляется по противоположным фронтам тактового сигнала.
Спецификация SPI предусматривает 4 режима передачи данных, которые отличаются между собой соотношением фазы и полярности тактового сигнала и передаваемых данных.
Эти режимы описываются двумя параметрами:
-
CPOL – clock polarity. Полярность тактового сигнала - определяет исходный уровень сигнала синхронизации;
-
CPHA – clock phase. Фаза тактового сигнала - определяет последовательность установки и выборки данных.
Режмы передачи данных по протоколу SPI:
-
SPI mode 0: CPOL = 0, CPHA=0. Тактовый сигнал начинается с уровня логического нуля. Защелкивание данных выполняется по нарастающему фронту. Смена данных происходит по падающему фронту;
-
SPI mode 1: CPOL = 0, CPHA=1. Тактовый сигнал начинается с уровня логического нуля. Смена данных происходит по нарастающему фронту. Защелкивание данных выполняется по падающему фронту;
-
SPI mode 2: CPOL = 1, CPHA=0. Тактовый сигнал начинается с уровня логической единицы. Защелкивание данных выполняется по падающему фронту. Смена данных выполняется по нарастающему фронту тактового сигнала;
-
SPI mode 3: CPOL = 1, CPHA=1. Тактовый сигнал начинается с уровня логической единицы. Смена данных выполняется по падающему фронту тактового сигнала. Защелкивание данных выполняется по нарастающему фронту;
Современные микроконтроллеры поддерживают все четыре режима работы SPI.
Стоит отметить, что передача данных по SPI может происходить не только старшим битом вперед, но и младшим. А количество байт передаваемых за время удержания сигнала выбора (SS) ничем не ограничено и определяется спецификацией используемого ведомого устройства. Также в спецификации на ведомое устройство указываются поддерживаемые режимы работы SPI, максимальная частота тактового сигнала, содержимое передаваемых или принимаемых данных.
2.10 ПО хоста для работы с контроллером AVR-USB-MEGA16
ПО хоста необходимо для взаимодействия с контроллером AVR-USB-MEGA16, чтобы мы могли выполнять ввод\вывод информации с\на его порты, и актировать его возможные другие функции.
Первым шагом написания ПО хоста является установка библиотеки libusb-win32, которая содержит набор необходимых команд для реализации USB протокола.
Для нашего контроллера ПО написано в среде разработки Delphi 7. Для подключения библиотеки необходимо внести её в список uses, как это показано ниже.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, ComCtrls, Buttons, LibUSB, ExtCtrls;
Код, реализующий алгоритм инициализации устройства, приведён в приложении А. С его помощью устройство получает возможность выполнять операции ввода\вывода и возможные другие функции.
На рисунке 2.2 представлено окно программы управления контроллером AVR-USB-MEGA16
У микроконтроллеров AVR есть 3 регистра, с помощью которых происходит полное управление ножками и чтение их состояния. Эти регистры называются DDRx, PORTx, PINx. Вместо x подставляется буква A, B, C или D, и после этого получается полное допустимое имя нужного регистра.
DDRx используется для перевода соответствующего порта на ввод или вывод, для настройки на выход необходимо записать в него логическую 1, на вход – 0.
PORTx – выходной регистр порта.
PINx – регистр, для считывания логического уровня с ножек контроллера. Если DDRx установлен в 1 – то считывание PINx покажет информацию, записанную в PORTx. Эту особенность необходимо учесть при программирование нашего устройства.
Рисунок 2.2 - окно программы управления контроллером
AVR-USB-MEGA16
Запись и чтение портов осуществляется процедурами:
-
SendUSBControlMessage(PC2USB,RQ_IO_WRITE, $00, aDDRD, 0, data);
-
SendUSBControlMessage(PC2USB,RQ_IO_WRITE, $80, aPORTA, 0, data);
-
SendUSBControlMessage(USB2PC,RQ_IO_READ, 0, aPORTD, 0, data).
Checkbox IN\OUT переводит регистр DDRx соответствующего порта на ввод\вывод.
procedure TForm1.chk15Click(Sender: TObject);
var
data: array [0..2] of char;
begin
If chk15.Checked then
SendUSBControlMessage(PC2USB,RQ_IO_WRITE, $00, aDDRA, 0, data)
else
SendUSBControlMessage(PC2USB,RQ_IO_WRITE, $FF, aDDRA, 0, data);
end;
Панели PORT_X используются для вывода информации на соответствующий пин контроллера, а панель usingPINS – отображения внешней информации на пинах контроллера, при условии что порт настроен на ввод. Опрос начинается по установке галочки в Cycle read PINs с периодом, установленным ниже.
2.11 Микросхема К155ИД3 (74154)
Микросхема К155ИД3 (74154) — дешифратор, позволяющий преобразовать четырехразрядный код, поступивший на входы 1, 2, 4, 8 в напряжение низкого логического уровня, появляющееся на одном из шестнадцати выходов 0-15. Электрические параметры К155ИД3 представлены в таблице 2.6 [11]. Дешифратор К155ИД3 (74154) имеет два входа разрешения дешифрации V1 и V2. Эти входы можно использовать как логические, когда дешифратор К155ИД3 (74154) служит демультиплексором данных. Тогда входы 1, 2, 4, 8 используются как адресные, чтобы направить поток данных, принимаемых входами V1 или V2, на один из выходов 0-15. На второй, неиспользуемый в этом включении вход V, следует подать напряжение низкого уровня.
По входам V1 и V2 даются сигналы разрешения выходов, чтобы устранять текущие выбросы, которыми сопровождается дешифрация кодов, появляющихся не строго синхронно (например, поступающих от счетчика пульсаций). Чтобы разрешить прохождение данных на выходы, на входы V1 и V2 следует дать напряжение низкого уровня согласно таблице 2.7. Эти входы необходимы также при наращивании числа разрядов дешифрируемого кода. Когда на входах V1 и V2 присутствуют напряжения высокого уровня, на выходах 0-15 появляются высокие уровни.
Таблица 2.6 – Электрические параметры К155ИД3
Параметр | Номинал |
Номинальное напряжение питания | 5 В |
Выходное напряжение низкого уровня | не более 0,4 В |
Выходное напряжение высокого уровня | не менее 2,4 В |
Входной ток низкого уровня | не более -1,6 мА |
Входной ток высокого уровня | не более 0,04 мА |
Ток потребления | не более 56 мА |
Время задержки распространения при включении |
|
Время задержки распространения при выключении |
|
Время дешифрации | не более 35 нс |
Потребляемая мощность | не более 294 мВт |
Таблица 2.7 - Таблица истинности К155ИД3
Вход | Выход | |||||||||||||||||||||
V0 | V1 | 8 | 4 | 2 | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | |
0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
Продолжение таблицы 2.7
Вход | Выход | ||||||||||||||||||||
0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
0 | 1 | X | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | X | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | X | X | X | X | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
2.12 Оптопары транзисторные
В качестве гальванической развязки между устройством ввода/вывода и внешними цепями в настоящем проекте, сопряжёнными с устройством используются транзисторные оптопары серии КР3040 – для входных цепей, и КР1040 – для выходных. КР3040 – четыре диодно-транзисторные оптопары в одном DIP16 корпусе, причём в ней по два оппозитно-расположенных светодиода, что позволило контролировать электрические цепи переменного тока. КР1040 – то же самое, но с одним светодиодом. Электрические параметры этих компонентов схожи, и представлены в таблице 2.8.