
- •Пояснительная записка к курсовой работе
- •Оглавление
- •1. Постановка задачи.
- •1.1. Стандартное задание
- •1.2. Индивидуальное задание
- •2. Техническое задание
- •3. Описание аппаратных и программных средств лабораторного комплекса
- •3.1. Структура аппаратных средств
- •3.1.1. Структурная схема лабораторного комплекса
- •3.1.2. Плата мк – системы
- •3.1.2.1. Конфигурируемые узлы мк c8051f064
- •Интерфейс прямого доступа к памяти (dma)
- •3.1.2.2. Внешняя память xram
- •3.1.2.3. Входные усилители
- •3.1.2.4. Микросхема моста uart-usb
- •3.1.2.5. Сопряжение платы с pc
- •3.1.2.6. Питание платы
- •3.1.3. Требования к pc
- •3.1.4. Осциген
- •. Перечень программных средств лабораторного комплекса
- •Средства программирования и отладки мк-системы
- •Интегрированная среда разработки фирмы SiLabs ide 2.0
- •3.2.1.2. Ассемблер, компилятор и линкер интегрированной среды разработки Keil
- •3.2.2. Средства разработки Windows-приложений
- •3.2.2.1. Среда разработки
- •3.2.2.2. Библиотека win32 api функций
- •3.2.3. Приложения для осцигеНа.
- •3.2.3.1. Драйвер конфигурируемого выносного блока
- •3.2.3.2. Windows-приложение ogView
- •3.2.4. Драйвер виртуального com-порта фирмы SiLabs
- •Организация бесконечного цикла встроенного приложения
- •Отключение сторожевого таймера
- •Переключение с внутреннего генератора на внешний
- •Конфигурирование портов ввода/вывода
- •Конфигурирование аналого-цифровых преобразователей adc
- •Конфигурирование интерфейса dma
- •Инициализация последовательного интерфейса uart
- •Выбор и инициализация таймера для установки скорости обмена данными по последовательному каналу
- •Инициализация таймера для установки времени дискретизации входного сигнала
- •Прием данных с pc
- •Другие используемые функции
- •Конфигурирование узлов мк с учетом данных, пришедших с pc
- •Разработка Windows-приложения
- •4.4.1. Особенности использования среды разработки
- •4.4.2. Описание файлов проекта
- •4.4.3. Обобщенная схема алгоритма многопоточного приложения
- •4.4.4. Внешний вид и описание графического интерфейса, принципы построения программы
- •Описание структуры и организация программы
- •4.4.5.1. Назначение подключаемых файлов
- •4.4.5.2. Описание прототипов функций
- •4.4.5.3. Функция WinMain()
- •4.4.5.4. Функция главного окна
- •4.4.5.5. Организация дополнительных потоков, их назначение
- •4.4.5.6. Рабочие функции дополнительных потоков
- •4.4.5.7. Синхронизация потоков
- •4.4.5.8. Особенности обработки сообщений Windows в программе
- •4.4.6.2. Организация настроек com-порта в графическом интерфейсе
- •4.4.6.3. Использование функций WaitCommEvent(), WaitForSingleObject(), WaitForMultiplyObject()
- •Работа оператора с приложением
- •4.4.7.1. Последовательность запуска приложения на мк и пк в лаборатории
- •4.4.7.2. Адаптация к спектру входного сигнала
- •Описание протокола rs-232
- •Список используемых источников информации
- •Приложения
- •Исходные тексты модулей программы для мк
- •Фрагменты листингов файлов мк-приложения, полученные в результате трансляций: map-file и др
- •Исходные тексты файлов Windows-приложения
Конфигурирование интерфейса dma
Конфигурирование интерфейса DMA происходит в функции DMA0_Init()по следующему алгоритму:
Запись значения 0x00 в регистр DMA0CN – отключаем DMA
Запись 16-битной переменной XRAM_START_ADD в 16-битный регистр DMA0DA – установка начального адреса данных
Запись значения переменной NumSamp (количество выборок) в регистр счетчика повторений DMA0CT
Запись значения 0x00 (начальный адрес команд) в регистр адреса команд DMA0IPT;
В зависимости от переменной ADC_Mode (режим работы АЦП) в регистр данных команд DMA0IDT записываем либо значение 0x10 (b00010000) (получение данных с ADC0 в однофазном режиме), либо значение 0x40 (b01000000) (получение данных с ADC0 в дифференциальном режиме)
Запись значения 0x00 в регистр данных команд DMA0IDT – команда «Конец операции»;
Запись значения 0x00 в регистр границы команд DMA0BND (адрес, с которого начинается выполнение команд);
Запись значения 0xA0 (b10100000) в регистр DMA0CN – включение DMA в 1-ом режиме.
Описанный алгоритм иллюстрирует следующий код:
DMA0CN = 0x00; // Disable DMA interface
DMA0DA = XRAM_START_ADD; // Starting Point for XRAM addressing
DMA0CT = NUM_SAMPLES; // Get NUM_SAMPLES samples
DMA0IPT = 0x00; // Start writing at location 0
// Push instructions onto stack in order they will be executed
if (ADC_Mode == 's')
DMA0IDT = DMA0_GET_ADC0; // Retrieve data from ADC0
else DMA0IDT = DMA0_GET_DIFF;//Retrieve differential data from ADC0-ADC1
DMA0IDT = DMA0_END_OF_OP; // End of operations
DMA0BND = 0x00; // Begin instruction executions at address 0
DMA0CN = 0x20; // switch DMA0 to mode 1
Инициализация последовательного интерфейса uart
Инициализация последовательного порта UART происходит в функции UART0_Init().
Инициализация последовательного порта UART проходит по следующему алгоритму:
Запись значения 0x50 (b01010000) в регистр управления UART0 SCON, значения 0x10 (b00010000) в регистр состояния и выбора источника тактирования UART0 SSTA0 (установка УАППа в 1-ый режим работы – стандартный асинхронный полный дуплексный обмен данными с использованием 10 бит для передачи 1 байта данных, данные передаются через внешний вывод TX0 и принимаются через RX0, скорость обмена данными обеспечивается с помощью таймера T1)
Инициализация таймера T1 с помощью регистров TMOD (0x20 – режим 2, т.е. 8-разрядный автоперезагружаемый таймер-счетчик), CKCON (0x10 – таймер T1 тактируется системным тактовым сигналом) и задание значений переполнения таймера (TH1 = -(SYSCLK / BAUDRATE)/16) и начального значения таймера (TL1 = -(SYSCLK / BAUDRATE)/16).
Описанный алгоритм иллюстрирует следующий код:
SCON0 = 0x50 // Mode 1: 8-Bit UART, Variable Baud Rate, UART0 reception enabled.
SSTA0 |= 0x10; // UART0 baud rate divide-by-two disabled.Timer 1 generates UART0 TX Baud Rate
// T1 initialization
SFRPAGE = TIMER01_PAGE;
TMOD = 0x20; // Mode 2: 8-bit counter/timer with autoreload
TH1 = -(SYSCLK / BAUDRATE)/16; // 250; // Reload value
TL1 = -(SYSCLK / BAUDRATE)/16; // 250; // Start value for T1
TR1 = 1; // Start T1
CKCON |= 0x10; // Timer 1 uses the system clock.