русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


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


 

RS-232C – интерфейс.

Если длинна соединенных линий составляет десятки метров, устройство сопряжения должно преобразовывать последовательный код в параллельный и наоборот.

 

 
 

 

 


Преобразователь уровней преобразует ТТЛ уровни в уровни кабеля RS-232С.

IFC1488 – МС передатчик.

КР559ИП19.

 
 

 

 


Микросхема приемник IFC1489 (КР559ИП20).

 

 
 

 

 


Преобразователь кода преобразуют:

Параллельный в последовательный.

Последовательный в параллельный.

I8251 (КР580ВВ51А)

I8250 (КР1847ВВ2)

TL16C450

TL16C550

Последовательные порты в компьютере:

СОМ1 3F8H – 3FFH (адреса) IRQ4 (прерывание)

COM2 2F8H – 2FFH (адреса) IRQ3 (прерывание)

COM3 3E8H – 3EFH (адреса) IRQ10 (прерывание)

COM4 2E8H – 2EFH (адреса) IRQ12 (прерывание)

 

Разъем:

 

 

Внутренняя структура портов:

УАПП: i8250, TL16C450.

 
 

 

 


В состав УАПП входят 8 регистров, но используются только 6 адресов.

Каждый порт имеет базовый адрес (BASE):

COM1: BASE=3F8H

COM2:BASE=2F8H

Регистры по адресу BASE – два регистра:

Их выбирают с помощью специального управляющего бита, который записывается в седьмой разряд RG адреса BASE+3:

  1. при нулевом значении этого бита по адресу BASE расположен регистр для записи передаваемого байта и чтения принимающего.
  2. если управляющий бит =1, то по адресу BASE будет RG для записи младшего байта делителя частоты тактового генератора.

 

НЕХ - код частоты Скорость передачи, бит/с НЕХ - код Скорость
000С
00С0

 



Регистры по адресу BASE+1 (тоже 2 регистра с одинаковым адресом). Управляющий бит – седьмой разряд RG по адресу BASE+3.

  1. при нулевом значении этого бита по адресу BASE+1 находится регистр управления прерываниями.
  2. при единичном значении регистр старший разряд кода делителя частоты.

Регистры по адресу BASE+2 (идентификации прерываний, содержимое указывает на причину прерывания).

Регистр по адресу BASE+3 (регистр управления УАПП).

Номер бита Назначение
0,1 Количество бит передаваемых данных: 00 – 5 бит 01 – 7 бит 10 – 6 бит 11 – 8 бит
Количество стоповых битов: 0 – 1 бит 1 – 2 бита
3,4 Контроль паритета: 0Х – контроля нет 10 – контроль на нечет 11 – контроль на четность
Задание контрольного бита: 1 – контрольный бит = 0 (нечетный паритет) 1 – контрольный бит = 1 (четный паритет) Микросхема сама вычисляет паритет.
1 – постоянная передача 0 – нормальная передача символов.
Управляющий бит для выбора назначения регистров BASE и BASE+1

 

Регистр по адресу BASE+4 (для управления модемом).

Номер бита Назначение
Состояние линии DTR
Состояние линии RTS
2,3 Состояние выходов УАПП(OUT1 и OUT2)
Режим работы УАПП: 0 – рабочий 1 – диагностический
5,6,7 Не используется

 

Регистр по адресу BASE+5 (регистр состояния (статуса) УАПП) позволяет контролировать ошибки при приеме.

Бит Назначение
1 – данные получены и готовы для чтения
1 – ошибка переполнения при приеме
1 – ошибка паритета при приеме
1 – ошибка формата (не приняты стоповые сигналы)
1 – обнаружен запрос на прерывание передачи
1 – буферный регистр передатчика пуст
1 – регистр сдвига передатчика пуст.
1 – TIME OUT

 

Регистр по адресу BASE+6 – регистр состояния модема.

Бит Назначение
Линия CTS изменила состояние
Линия DSR изменила состояние
Линия RI изменила состояние
Линия DCD изменила состояние
Состояние линии CTS
Состояние линии DSR
Состояние линии RI
Состояние линии DCD

 

Перед использованием УАПП нужно инициализировать:

  1. записать по адресу BASE+3 управляющий байт с 1 в седьмом бите.
  2. записать код делителя частоты по адресу BASE и BASE+1.
  3. записать по адресу BASE+3 управляющий байт с 0 в седьмом бите и требуемыми значениями остальных битов.
  4. записать управляющий байт по адресу BASE+1 (если прерывания не используются, то 0).
  5. записать управляющий байт по адресу BASE+4.

 

Заголовочный файл (для констант) – serial.h.

//Определение адресов регистров int BASE//

#define OUT_REG BASE //регистр передачи данных.

#define IN_REG BASE //регистр приема данных

#define LOW_DIV BASE //адрес регистра младшего байта делителя

#define HIGH_DIV BASE+1 //адрес регистра старшего байта делителя

#define INT_REG BASE+1 //регистр разрешения прерывания

#define INT_ID_REG BASE+2 //регистр идентификации прерывания

#define CONTROL BASE+3 //регистр управления

#define MODEM BASE+4 //регистр управления модемом

#define STATUS BASE+5 //регистр состояния УАПП

#define M_STATUS BASE+6 //регистр состояния управляющих сигналов.

 

// Основные константы

# define B_4800 24

# define B_9200

# defineDEVISOR 0x80 //бит управления доступа к регистрам делителя

# define BIT_8 0x03 //длина посылки 8 бит

# define STOP_2 0x04 //2 стоповых бита

# define NOPARITY 0x00 //нет паритета

# define DTR 0x01 //бит управления линией DTR

# define RTS 0x02 //бит управления линией RTS

# define LOOPBACK 0x10 //бит управления тестовым регистром УАПП

# define DATA_IN 0x01 //маска бита «данные приняты»

# define DATA_OUT 0x80 //маска «бита готов к передаче»

# define OVERRUN 0x02 //маска бита «переполнение»

# define FRAME_ERR 0x08 //ошибка формата

# define CTS 0x10 //маска бита состояния линии CTS

# define DSR 0x20 // маска бита состояния линии DSR

 

//Прототипы функций

void init ( ); //функция инициализации порта

void out_sym (int symbol); //функция вывода символа

int in_sym ( ); //функция ввода символа

 

Программа тестирования последовательного порта:

/*test.cpp*/

# include <stdio.h>

# include <dos.h>

# include <conio.h>

# include “serial.h”

#define ESC 27

main ( )

{

BASE = 0x3F8;

Int symbol, symbol2;

Init ( ); //инициализация УАПП

Outportb (MODEM, LOOPBACK); //перевод порта в тестовый режим

While (1)

{

symbol = getch ( );

if (symbol = = ESC)

return;

out_sym (symbol); //вывод в порт

symbol2 = in_sym ( ); //ввод из порта

printf (“Передано: %х, принято: %х \n”, symbol, symbol2);

}

return 0;

}

 

void init ( )

{

outportb (CONTROL, DIVISOR);

outportb (LOW_DIV, B_9200);

outportb (HIGH_DIV, B_9600>>8);

outportb (CONTROL, BIT_8 | NOPARITY | STOP_2);

outportb (INT_REG,0); //запрет прерывания

}

 

void out_sum (int symbol)

{

while (inportb (STATUS) & DATA_IN) = = 0);

outportb (out_REG, symbol);

}

 

int in_sym ( )

{

int sym;

while (inportb (STATUS) & DATA_IN) = = 0); //ожидание готовности к приему

if (intportb ((STATUS) & (FRAME_ERR | OVERRUN))!=0);

}

printf (“Ошибка приема \n”);

return;

{

sym = inportb (IN_REG);

return sym;

}

 

1. Прием и передача без квитирования:

 

 

 
 

 


2. С квитированием:

а) с программным квитированием XON/XOFF.

 

 

 


Если приемник готов к вводу данных, он передает XON=11h, получив этот код передатчик передает 1 байт. Когда приемник не готов принять данные – он выдает XOFF = 13h и передатчик перестает передачу данных.

Недостаток – низкая скорость передачи

 

б) с аппаратным квитированием:

 

 
 

 


1. RTS и CTS

2. DTR и DSR

3. RTS и CTS; DTR и DSR

 

Интерфейсная шина I2C.

 

 

3 вида устройств:

  1. Интеллектуальный узел – осуществляет управление; микроконтроллеры; однокристальные ЭВМ.
  2. Блоки общего назначения (дисплей, порты ввода – вывода, устройства памяти, АЦП, ЦАП).
  3. Специализированные устройства, характерные для отдельных приложений: блоки настройки, коммутации.

 

Phillips разработала простую двухпроводную, двунаправленную шину для межсхемного соединения: intel IC (IIC, I2C). С её помощью можно строить все устройства и реализовать все их функции.

Используются только две линии:

SDA – линия данных (последовательная передача)

SCL – линия синхронизации.

 

Стандартная скорость – до 100 кбит/с.

Быстрый режим – до 400 кбит/с.

Суммарная емкостная нагрузка не должна превышать 400 пФ.

Существует множество микросхем, которые имеют встроенный интерфейс: КМОП, n-МОП, ТТЛ, ЭСЛ.

Достоинство:

I) для конструкторов:

1) Блоки на функциональной схеме реализуются отдельными МС.

2) Нет необходимости разрабатывать интерфейс (схема присоединения к шине).

3) Одни и теже микросхемы могут использоваться в различных приложениях.

4) Отдельные микросхемы легко могут быть добавлены или убраны, не влияя на систему.

5) Упращается отладка и настройка системы для изготовителя.

 

II) для изготовителя:

1) Для соединения микросхемы требуется всего 2 линии, следовательно упрощается разводка и следовательно уменьшается стоимость и габариты плат.

2) Возможность наличия на линии нескольких ведущих.

 

Общие концепции шины I2C: применяется в системе с восьмиразрядным микропроцессором.

Для связи кроме самих линий нужен протокол обмена, чтобы не было потери данных.

Две группы устройств:

1) Типа Master (хозяин, ведущий).

2) Типа Slave (раб, ведомый).

 

В качестве ведущего используется микроконтроллер.

Возможно несколько ведущих на шине.

Ведущий генерирует импульсы синхронизации.

Устройства:

1) Передатчик.

2) Приемник.

 

Каждое устройство имеет свой уникальный адрес. Ведущий перед началом работы выдает на шину адрес ведомого. Ведущий задает направление передачи. Ведомое устройство, обнаружив свой адрес, посылает сигнал подтверждения и выполняет указанную функцию.

Все устройства присоединяются к шине, присоединяются по методу «монтажного ИЛИ»: выходы устройств должны иметь выходы с открытым стоком (коллектором).

 

 
 

 


Все устройства подключаются параллельно к линии.

Rр – подтягивающие резисторы.

Uип = 3 …15 В. (чаще всего 5 В).

Пересылка каждого бита сопровождается синхроимпульсом по линии SCL.

Действительность данных:

 

 
 

 

 


Состояние (условие) START и STOP – это состояние шины, вырабатывает выдущий.

 
 

 


Формат передаваемого байта: число передаваемых байт не ограничено; данные передаются со старшего разряда.

 


Девятый импульс:ведомый должен выдать сигнал подтверждения. АСК: проверяется сохранность данных.

Для прекращения передачи ведомый выставляет на линию синхронизации низкий уровень и ведущий прекращает передачю данных.

Адресация устройств на шине, можно использовать два формата:

  1. семибитный (27=128)
  2. десытибитный.

 

Передача адреса всегда следует за условием START.

 

START A6 A5 A4 A3 A2 A1 A0 R/ : 7 - битный
  ë адрес û ¯ |  
  |           Бит направления |  
  ë               û  
    Байт (передает ведущий)    

 

R/ =1, чтение (ведомый – передатчик)

R/ =0, запись (ведомый – приемник).

 

Десятибитный:

 

START A9 A8 R/ A7 A6 A5 A4 A3 A2 A1 A0

 

Из 7 разрядов выделяется две части:

  1. фиксированное.
  2. программируемая.

 

Фиксированная часть устанавливается в комиссии по шине I2C (это 4 разряда). Программная часть может менять пользователь (обычно перемычками).

 



<== предыдущая лекция | следующая лекция ==>
Подключение устройств к порту принтера. | И электрооборудование автомобиля


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.246 сек.