ДП_поясняк (1231259), страница 7
Текст из файла (страница 7)
Рисунок 2.19 - Цоколевка SD карты
Таблица 2.2 – Пояснение к рисунку 2.19
2.5.3 Инициализация SD карты
Перед началом инициализации, так как мы работаем с картой в SPI режиме, необходимо перевести карту в режим работы по SPI. Для перехода в режим SPI нужно дождаться, пока напряжения на карте достигнет 3В (несколько миллисекунд, после включения) и подать более 74 импульсов на вывод CLK, при высоком уровне на выводах CS и DI. После нужно выставить на вывод CS нулевой уровень.
Далее карта входит в режим SPI, теперь для успешной работы следует подать команды сброса и инициализации CMD0, CMD1 прежде, чем писать/читать данные из карты. Команд для карты довольно много, часть из них приведена в таблице 2.3.
Таблица 2.3 - Основные команды управления SD картой
Рассмотрим формат команды для SD карты, который показан на рисунке 2.20.
Рисунок 2.20 - Формат команды SD карты
Вначале идет индекс команды. Индекс команды в десятичном виде определяется как 64+имя команды. Далее следует 4 байта аргументов (данные, адрес), затем 7-ми битная контрольная сумма. После успешной отправки команды следует сделать байтовую паузу из 8*N тактовых импульсов (N - целое), после чего карта ответит. Ответ может быть типа R1,R2,R3. В нашем случае, ответы будут только типа R1. Поэтому рассмотрим только его. Старший бит R1 всегда равен 0. Назначения остальных битов хорошо видно на рисунке 2.21.
Рисунок 2.21 - Структура ответного байта
Рассмотрим процесс инициализации карты памяти командами CMD0,CMD1. Вначале, при высоком уровне на выводах CS и DI, подаем 80 тактовых импульсов на вывод CLK. Далее на все время работы с картой подаем на вывод CS логический ноль, далее подаем команду CMD0, контрольная сумма для которой равна 0x95 (контрольная сумма в нашем случае нужна только для команды CMD0, в остальных случаях она не проверяется, поэтому все время будем использовать 0х95 как контрольную сумму). Далее, после байтовой паузы, карта должна ответить 0х01, что означает, что она вошла в SPI режим и готова принимать команды. Теперь подаем команды CMD1, и после паузы ожидаем от карточки ответа 0х00, которые говорит о том, что карта готова к обмену данными.
Обмен данными между картой памяти и микроконтроллером будет производиться стандартными блоками по 512 байт. Адресация карты побайтная, начиная с нуля, но считывать данные можно только блоками. Адресом блока служит первый его байт. То есть 0-й блок имеет адрес 0х0000, 1-й блок - 0х0200, 2-й блок – 0х400 и т.д. (справедливо для размера блока 512 байт). В SDHC картах адресация поблочная, адресом блока служит его номер. Операция чтения блока производится в следующем порядке. Подается команда CMD17, далее байтовая пауза, если принимается ответ 0х00, то после еще одной байтовой паузы принимается блок данных, структура которого показана на рисунке 2.22.
Рисунок 2.22 - Структура блока данных
Схема подключения карты к контроллеру и принципы работы представлены на листе 4 графического материала.
2.6 Разработка узла электропитания
Перед разработкой питающего узла устройства, необходимо проанализировать характеристики используемых устройств с точки зрения энергопотребления. Сводные характеристики основных устройств, приведены в таблице 2.4.
Таблица 2.4 – Сводная таблица основных функциональных узлов
| Наименование | Напряжение питания, В | Потребляемый ток, мА |
| Atmega32 | 2.7 - 5.5 | 200 |
| Mrf24J40ma | 3.0 - 3.6 | 30 |
| SD карта | 3.0 - 3.3 | 80 |
| LCD дисплей | 4.5 – 5.5 | 0,6 |
Как видно из таблицы 2.4, нужно два типовых напряжения питания 5 В и 3.3 В с общим током потребления соответственно 206 мА и 110 мА. Для этих целей использовали две микросхемы стабилизаторы напряжения.
Микросхема LM7805 дает выходное напряжение 5 В, и максимальный выходной ток 1 А. В микросхеме предусмотрены защита от теплового перегрева и короткого замыкания. Микросхема размещена на радиаторе, для отвода рассеваемого тепла. Схема включения типовая и представлена на листе 6 графического материала.
Микросхема LM317 – это параметрический стабилизатор напряжения, который способен выдавать напряжение 1.25-37 В, и ток 1,5 А. Для того, чтобы стабилизатор выдавал напряжение 3.3 В, в цепи обратной связи стабилизатора, согласно технической документации, установлен делитель напряжения. Схема включения приведена на листе 6 графического материала.
В качестве питания микросхем, был выбран импульсный блок питания, который выдает 12 В постоянного тока, с величиной максимального тока нагрузки – 1,0 А. Блок работает от сети 220 В, частотой 50 Гц.
2.7 Дизайн устройства, разработка корпуса.
Опытная модель сделана в виде законченного устройства. Внутри корпуса расположена монтажная плата, на которой монтированы все комплектующие: контроллер и обвязка, SD-слот, разъем для переходника COM-USB, разъем для приемопередатчика, соединительный разъем для шлейфа дисплея, радиатор, переключатель питания. При этом на самом корпусе предусмотрены разъем для подключения устройства сопряжения с объектами, разъем для подключения блока преобразования сигналов, отверстие под дисплей, отверстие для подключения питающего провода, кнопки управления, разъем для подключения отладочного программатора. Печатная плата, законченный вид устройства представлены на листе 6 графического материала.
2.8 Разработка программного обеспечения
2.8.1 Создание пользовательского приложения на ПК
2.8.1.1 Функции и задачи приложения
Разрабатываемая опытная модель устройства должна иметь функции как отдельного устройства, так и выполнять функции узла системы обработки информации. То есть, собирать и обрабатывать информацию, а также отправлять информацию на компьютер, посредством двух каналов передачи – беспроводной и проводной. Беспроводной канал организуется с помощью концентратора информации, подключенного к ПК. Проводной канал осуществляется путем непосредственного подключения устройства к компьютеру. Таким образом, пользовательское приложение должно корректно обрабатывать информацию, полученную от обоих источников.
Приложение должно иметь весь необходимый для работы с устройством мониторинга функционал, а именно:
-
настройка подключения устройства по USB/COM;
-
настройка подключения устройства-концентратора к ПК и приложению;
-
настройка подключения устройства к беспроводной сети;
-
отображать текущие значения принимаемых и отправляемых данных, при обмене информацией;
-
вести лог файл обмена информацией;
-
содержать справочную информацию о протоколах обмена;
-
регистрацию не которых принимаемых данных в базе данных.
2.8.1.2 Описание используемых библиотек и компонентов
Для подключения приложения к устройству, используется эмулированный COM порт. Со стороны устройства, физически, будет подключение к порту USB, но со стороны ПК это будет виртуальный COM. Таким образом, нам необходим компонент для работы с COM портом, причем посредством не прямого подключения к физическому COM, через адреса на внутренней шине ПК. Для этих целей используется компонент AsyncFree.
Компонент AsyncFree позволяет подключаться к COM порту посредством создания специального Handle – файла. Путем записи и чтения этого файла, осуществляется запись / чтение в COM порт. Компонент позволяет настраивать подключение к порту. Основные настройки подключения:
-
выбор номера COM порта;
-
выбор скорости подключения (Baudrate);
-
размер одной посылки в байтах;
-
количество стоп битов;
-
проверка на четность.
Сам компонент очень удобен в использовании, так как содержит в себе встроенные инструменты. Основные инструменты, которые были использованы:
-
AfComPort – для подключения к COM;
-
AfDataDispatcher – для промежуточной обработки данных;
-
AfDataTerminal – для отображения данных отправляемых и принимаемых.
Для подключения к базе данных был использован компонент FIBPlus. Он реализует подключение к базе данных через систему управления базами данных – Fire Bird посредством SQL запросов. Для этих целей FIBPlus включает в себя специальные инструменты:
-
FIBDataBase – подключается к базе данных;
-
FIBDataSet – выполняет стандартные SQL запросы и сортировку;
-
FIBTransaction – выполняет операция чтения и записи в базу данных.
Для отображения информации и взаимодействия с пользователем были взяты стандартные компоненты – кнопки, поля отображения текстовой и графической информации, вкладки и окна.
2.8.1.3 Алгоритм работы пользовательского приложения на ПК
Алгоритм работы пользовательского приложения на первый взгляд простой. Это обеспечивает среда разработки приложения Delphi 7 за счет автоматического подключения библиотек для работы по созданию графического интерфейса.
Алгоритм работы программы представлен в виде блок-схеме на листе 5 графического материала
На плакате описаны только основные функции, на самом же деле алгоритм программы более сложный и громоздкий.
Вначале программа производит стартовую инициализацию. Описываются необходимые переменные. В основной части программы происходит вывод графической информации на экран. Информация на экране обновляется раз в секунду, после переполнения программного таймера.
По прерыванию по приему данных, программа считывает строки, отправленные устройством, и производит их расшифровку.
В прерывании по нажатию кнопок интерфейса, программа определяет, какая кнопка была нажата и производит соответствующие инструкции.
2.8.2 Разработка управляющей программы микроконтроллера
2.8.2.1 Функции и задачи управляющей программы
Для выполнения функциональных задач, связанных с вычислительными задачами, а так же совместной работы отдельных узлов опытной модели устройства, был использован микроконтроллер. Контроллер работает под управлением специальной программы-прошивки. Программа должна обеспечивать следующие функции:
-
обеспечивать опрос каналов АЦП, а так же производить необходимые вычисления;
-
производить опрос объектов контроля с двумя дискретными состояниями;
-
обеспечивать вывод информации на дисплей;
-
обеспечивать работу приемопередатчика, а так же обмен информацией в сети;
-
обеспечивать обмен информацией с компьютером посредством UART интерфейса;
-
подключение и работу с картой памяти;
-
обеспечивать взаимодействие с пользователем посредством кнопок и пользовательских удаленных команд;
-
обеспечивать первичную обработку информации;
-
выполнять функции часов реального времени;
-
ведение даты.
Реализация программы будет производиться на языке программирования С (Си), так как разработчик имеет достаточный опыт написания и навык отладки программ на этом языке.
2.8.2.2 Описание используемых библиотек и компонентов
Для работы с отдельными узлами устройства, которые являются законченными устройствами, применялись специальные библиотеки. Некоторые из них были доработаны, оптимизированы с целью улучшения качества кода, а так же уменьшение затрачиваемой в последствие памяти контроллера.
Для инициализации портов ввода вывода, памяти, регистров и периферии контроллера использовалась библиотека, поставляемая вместе с AvrStudio – «io.h».
Для работы с приемопередатчиком MRF24J40ma была использована библиотека – «MRF24J40.h». В библиотеке размещены все дескрипторы и функции, необходимые для работы с модулем. Соблюдены все описанные правила работы с модулем, выдержаны все тайминги и программные задержки, где это не обходимо. Библиотека позволяет инициализировать устройство, работать с внутренней памятью устройства, где находятся управляющие регистры и буферы обмена информацией. Основные функции библиотеки представлены далее.
MRF_init(). Эта функция производит все необходимые, для первоначальной инициализации модуля, записи в регистры. Функция ни чего не возвращает, и не имеет аргумента.
MRF_setChannel(Channel) – функция установки одного из 16-ти радиоканалов каналов устройства. Функция ни чего не возвращает. Аргументом является один из номеров канала, которые описаны в заголовочном файле библиотеки.
MRF_write_s(addr, data) – функция записи в регистры памяти контроллера модуля, которые находятся в области коротких адресов. Функция имеет аргумент в виде одно байтового слова – адреса регистра. Адреса переопределены по именам регистров в заголовочном файле, для удобства и читаемости кода. Функция ни чего не возвращает.















