Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Инициализация данных драйвера UARTa 1-го уровня

Читайте также:
  1. II. Контроль исходного уровня знаний студентов
  2. II. Контроль исходного уровня знаний студентов
  3. VI. Гигиенические требования к уровням шума, вибрации, ультразвука и инфразвука, электромагнитных полей и излучений, ионизирующего излучения
  4. А. Создание и заполнение базы данных
  5. А: Задания базового уровня сложности с выбором ответа
  6. А:задания базового уровня сложности с выбором ответа.
  7. Автоматизация ввода данных

Начальная инициализация структуры данных для обработчика прерывания _IrqUART

Подключиться к обработчику прерывания от таймера

Начальная инициализация структуры данных для обработки запросов чтения – записи данных с UARTa _UARTInfo

Настроить CR регистры UARTов. Структура _RegUart.

Настроить MR регистры UARTов. Структура _RegUart.

Подключение к драйверу SPORTa на передачу данных в контроллер UART RS-422. Массив идентификаторов ID_DT_RS422[VRS_422]

Подключение к драйверу SPORTa на прием данных с контроллера UART RS-422

Массив идентификаторов ID_DR_RS422[VRS_422].

Подключение к драйверу SPORTa или на передачу, или на прием данных в контроллер UART RS-485. Массив идентификаторов ID_RS485[VRS_485].

Проинициализировать буфера чтения/записи данных для всех UARTов.

Подключение к драйверу SPORTa на запись регистров контроллера UARTа.

Идентификатор ID_RegTUart.

Подключение к драйверу SPORTa на чтение регистров контроллера UARTа.

Идентификатор ID_RegRUart.

Запись регистров CR в контроллер UARTa. Для этого выполнить обмен данных по SPI с идентификатором ID_TRegUart.

Запись регистров MR в контроллер UARTa. Для этого выполнить обмен данных по SPI с идентификатором ID_TRegUart.

Обработчик прерывания от таймера.

Начало

Если наступило время запуска драйвера UARTa 1-го уровня i

то {

1. Установить признак наличия прерывания

2. Увеличить счетчик прерывание на 1

3. Поставить запрос ядру на загрузку контекста драйвера UARTa 1- го уровня

}

Конец

Алгоритм работы драйвера UARTa 1-го уровня

While(1){

Цикл по всем UARTам{

Обработка UART i

Если произошло прерывание от UART (IRQ_UART = 1) и завершена обработка i-го UARTa (UART_HANDLE = 0) или для i-го UART установлен запрос на запись данных, {

Чтение 10 регистров SR с контролера UARTa

RegUart->SR

Если произошло прерывание от таймера

Установить для всех UART в структуре _UARTInfo запрос на обслуживание – бит UART_HANDLE_R.

}

Если для i-го UARTa в структуре_UARTInfo есть запрос на чтение данных, то{

Обработка SR i-го UARTa SR = B_SR[i];

Если число слов приемника > 0, то {

Считать с FIFO i-го UARTa n байт принятых данных. Обмен данными осуществляется по SPI

Если чтение данных завершено {

Проверить обмен по SPI на ошибки

Записать n байт в Буфер для чтения данных с i-го UARTa. Маркер для записи сдвинуть на n-байт.

}

Для i-го UARTa в структуре_UARTInfo сбросить запрос на обслуживание бит UART_HANDLE_R

 

}

Если для i-го UARTa установлен запрос на запись данных (бит UART_HANDLE_W в структуре _UARTInfo){

Обработка SR i-го UARTa SR = RegUart->SR[i];

Определить сколько байт NB_FREE можно записать в FIFO UART i (Обработка регистра SR i).

Считать из буфера для записи данных i-го UARTa NB_FREE байт или пока Маркер чтения не будет равен Маркеру записи.

Записать полученные байты данных в SPI.

Если запись данных завершена {

Проверить обмен по SPI на ошибки

}

}

Переход к следующему UARTу

}// end Цикл по всем UARTам

}//end while(1)

Заключение

Драйвер UARTa 1-го уровня осуществляет передачу данных между буферами чтение/записи UARTов и FIFO контроллера UARTa.

Для записи данных в FIFO i-го UARTa драйвер выполняет следующий действия:

· определяет сколько байт можно записать в FIFO i-го UARTa;

· считывает столько же байт с буфера записи данных i-го UARTa или пока Маркер чтения не будет равен Маркеру записи;

· записывает считанные байты данных в FIFO i-го UARTa.

Для чтения данных с FIFO i-го UARTa драйвер выполняет следующий действия:

· определяет сколько байт поступило в FIFO i-го UARTa;

· считывает столько же байт с FIFO i-го UARTa;

· записывает считанные байты в Буфер для чтения данных с i-го UARTa или или пока Маркер чтения не будет равен Маркеру записи.


Дата добавления: 2015-12-08; просмотров: 48 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.008 сек.)