
- •Учебный центр информационных технологий “информатика” выпускная квалификационная работа по куррсу профессиональной переподготовки
- •Введение
- •Задание на разрабатываемое устройство
- •Требования к охранным, пожарным шлейфам
- •Требования к входным и выходным исполнительным органам
- •Требования к конфигурированию и настройке устройства
- •Электронные компоненты печатной платы
- •Технические характеристики и параметры основных компонентов
- •Применяемые схемотехнические решения
- •Программное обеспечение микроконтроллера
- •Основная структура проекта
- •Задачи операционной системы реального времени.
- •Взаимодействие задач и прерываний.
- •Функции обработчиков прерываний
- •Rtos задачи проекта
- •Передача параметров настройки по usb
- •Программное обеспечение windows form c#
- •Определение общей структуры приложения
- •Создание библиотеки из ссылочных типов содержащие поля данных
- •Основная сборка проекта
- •Заключение
- •Список литературы
- •Приложение 1. Внешний вид приложения
Передача параметров настройки по usb
При передаче данных от ПО компьютера, оно открывает необходимый COM порт и передает все данные. Драйвер обеспечивающий связь COM порта с пакетами USB передаваемых контроллеру обеспечивает максимальный размер пакета данных 64 бита. Процесс получения данных выполняется через контрольную точку 0. В конце передачи пакета данных генерируется прерывание и вызывается функция обработки данных –
VCP_DataRx (uint8_t* Buf, uint32_t Len) в файле usbd_cdc_vcp.c. Чтобы не превысить лимит в 64 байта и избежать потери данных передача данных выполняется по каналам настроенным в пользовательском приложении. Например вначале передаем данные по строкам вначале строка №1 затем строка №2 и.т.д . Для строки №1 первое передаваемое сообщение будет N79529091812 –это номер телефона , вторым сообщением следует Hиванов Е.П.-это пользователь, С030001 –для этой строки используется четвертый канал который работает с телефонами под индексами 00 и 01 в массиве телефонов и.т.д. Все передаваемые сообщения обрабатываются по первому символу и записываются в соответствующую структуру данных.
Структура получаемых данных описана в файле StructUSB_tel.h :
typedef struct
{
uint8_t Nom_Chan[MAXKANADC] ; //номера используемых каналов
uint8_t kolvo ; //общее количество телефонов
uint8_t Numb_tel[MAXKOLVOTEL][12]; //здесь сохраняются телефоны
} Tel_Def;
#define TelefoneM ((Tel_Def*)TEL_BASE)
#define TEL_BASE 0x080E0000
Где TEL_BASE –базовый адрес структурной переменной телефоны, все данные сохраняем в последнем 11 секторе Flash памяти [5] Рис 4.6.1.
Рис 4.6.1 Карта Flash памяти микроконтроллера
Также определим массив структурных переменных содержащие настройки каналов:
typedef struct
{
uint8_t kolispADC; //количество используемых уставок
uint8_t vidOpovesh[4]; //вид оповещения для каждой уставки
uint8_t SoobSMS[4][60]; //сообщение для каждой уставки
uint8_t UrovADC[4][2]; //уставка значений напряжений
uint8_t ZadADC[4][2]; //задержка для каждой уставки
uint8_t napravl[4]; //направление действия
………..
} KanADC;
#define TEL_BASE 0x080E0000
#define ADCstr (( KanADC *)ADC_struct) –данные по каналам записываются по адресу 0x080E021D.
Пример реализации функции записи данных во флэш память Рис 4.6.2 :
static uint16_t VCP_DataRx (uint8_t* Buf, uint32_t Len)
{ ……uint8_t fi=0;
if (* Buf=='N') // встретили букву N это телефоны
{
fi=fiS+1; //вспомогательная переменная хранит общее количество тел.
Buf++;
flash_unlock(); //разблокируем flash память для записи
if(fi==0)
flash_erase_page(0x58);//если это первый телефон очищаем память
flash_write_start(); //начинаем запись телефонов
for(pi=0;pi<11;pi++)
TelefoneM->Numb_tel[fi][pi]=*Buf++;
TelefoneM->Numb_tel[fi][pi]=’\0’;
flash_write_end ( ); //конец записи во flash
flash_lock(); //блокируем запись
fiS++; //ведем счет текущим телефонам
…….
}
Рис 4.6.2. Запись конфигурационных данных во Flash память