Налаштування портів на передачу та прийом
інформації через COM порт.
МЕТА РОБОТИ: ознайомитися з процесом налаштування основних параметрів прийому – передачі пакетних даних через послідовний асинхронний інтерфейс RS-232C (COM-порт).
Рис. 21 Вікно вибору типу з’єднання
Щоб з’єднати два віртуальні порти , вибираємо тип з’єднання типу «пара» (рис 21).
На рис. 22 продемонстровано вибір пору для програми приймача.
Рис. 22 Вікно вибору портів
Рис. 23 Вікно запуску емуляції
Також для коректного обміну даними встановлюємо номери портів та швидкості передачі даних для програми передавача та програми приймача (рис.24, рис.25).
![]() |
Рис. 24 Вікно програми передавача
Рис. 25 Вікно програми приймача
ПИТАННЯ ДЛЯ САМОПЕРЕВІРКИ
1. Привести схеми передачі даних через RS-232C .
2. Привести призначення контактів роз’ємів DB25P та DB9P.
3. Привести формат даних RS-232C.
4. Привести основні етапи відлагодження програми
5. Пояснити роботу написаної програми.
6. Пояснити роботу RS-232C .
ЗМІСТ ЗВІТУ
1. Мета роботи;
2. Короткі теоретичні відомості;
3. Хід роботи;
4. Висновки;
5. Текст програми (у додатку);
6. Демонстрація програми на комп’ютері.
ПРИКЛАД ВИКОНАННЯ ОСНОВНИХ ЕТАПІВ РОБІТ
Тут подана інформація, яка допомагає створити проект програми в середовищі Visual C++ 6.0.
Для того щоб створити новий проект необхідно запустити на виконання програму MS Visual C++ 6.0 (Рис.26).
Рисунок 26. Середовище програмування MS Visual C++ 6.0.
Далі в меню середовища MS Visual C++ 6.0 вибрати “File” –> “New” (Рис.27).
Необхідно обов’язково позначити тип нового проекту (MFC AppWizard (exe)), вказати його назву і натиснути “OK”.
Рисунок 27. Вікно створення нового MFC проекту.
Далі треба вибрати вигляд головного вікна нового MFC проекту (Рис.28) і натиснути “OK”.
Рисунок 28. Вікно вибору вигляду головного вікна нового MFC проекту.
На наступному вікні треба зняти всі прапорці і ввести заголовок вікна діалогу (Рис.29).
Рисунок 29. Вікно вигляду елементів діалогу.
Далі треба натиснути “Next” (Рис. 30)
Рисунок 30. Вікно вибору властивостей проекту.
Далі треба натиснути “Finish” (Рис. 31)
Рисунок 31. Вікно вибору властивостей проекту.
Далі прочитати сумарну інформацію про новий MFC проект (Рис.32) і, якщо немає помилок, натиснути “OK”. В іншому випадку натиснути “Cancel” і відмінити створення нового проекту.
Рисунок 32. Вікно сумарної інформації про новий MFC проект.
Для того щоб відкрити існуючий проект необхідно вибрати “Ореn Workspace…” або “Recent Workspaces” з “File” меню.
Новий MFC проект (Рис.33) містить класи, ресурси і файли програми (CTestApp) та вікна діалогу (CTestDlg).
Рисунок 33. Вікно середовища MS Visual C++ 6.0 з новим проектом.
Клас C Laba 1App містить функцію InitInstance(), з якої починається виконання програми і створення об’єкту програми theApp (Рис. 34). В функції InitInstance() створюється об’єкт діалогу, до нього приєднується вікно діалогу і діалог відображається на екрані. Крім того є обробники натискання клавіш “OK” і “Cancel”. Там можна додати свій зміст.
Рисунок 34. Клас CLaba1 App.
Клас CLaba1Dlg містить функції OnInitDialog() та OnPaint() (Рис.35). В функції OnInitDialog() налаштовується зовнішній вигляд вікна діалогу, а функція OnPaint() здійснює вивід вікна діалогу на екран.
Рисунок 35. Клас CLaba1Dlg.
Для додавання функціональності до діалогу спочатку треба нарисувати додаткові елементи керування в редакторі діалогів (Рис.36).
Рисунок 36. Редактор діалогу.
Для цього на панелі елементів керування вибирається один елемент. На вікні діалогу мишею натягується прямокутник. Після відпускання кнопки миші, на вікні діалогу з’являється зображення елемента керування. Для даної лабораторної роботи необхідно на вікні діалогу встановити об’єкти типу Edit (поле редагування) та Button (кнопка) (Рис.38).
Рисунок 37. Розміщення елементів керування.
Для зв’язування елемента керування з об’єктом елемента керування треба викликати для нього “майстер” класів (Рис.38). На першій закладці знаходяться елементи карти повідомлень. (Рис.39).
Рис 38. Виклик майстра класів через контекстне меню діалогу
Рисунок 39. Вікно “майстра” класів, закладка “Карта повідомлень”.
На другій закладці знаходяться змінні класу діалогу (Рис.40).
![]() |
Рисунок 40. Вікно “майстра” класів, закладка “Змінні класу”.
Для додавання нової змінної треба натиснути “Add Variable…”.З’явиться вікно створення нової змінної класу (Рис.41). В ньому обов’язково треба вказати назву змінної, яка починається на m_, категорію (по значенню або об’єктна) та тип змінної.
Рисунок 22. Вікно створення нової змінної класу.
Після створення нової змінної вона з’являється на закладці “Змінні класу” “майстра” класів (Рис.42). Після натиснення “OK” можна побачити, що нова змінна з’явилась в середовищі у вікні перегляду класів і в тексті програми (Рис.43).
Рисунок 42. Вікно “майстра” класів після створення змінної.
Рисунок 43. Вікно середовища з новою змінною.
У відповідь на дії користувача в віконній програмі виникають повідомлення . Для обробки повідомлень треба включити повідомлення в карту повідомлень і додати до класу спеціальну функцію – обробник повідомлення. Найбільш коректно ці дії виконує майстер повідомлень (Рис 44). Для додавання нового обробника повідомлень треба вибрати елемент керування, повідомлення якого будуть оброблятися, вибрати повідомлення, для якого потрібен обробник, і натиснути клавішу “Add Function…”.
Рисунок 44. Вікно “майстра” класів при створенні обробника повідомлення.
У вікні додавання нового обробника треба ввести назву функції-обробника (Рис.45), яка обов’язково повинна починатися з On, і натиснути “OK”.
Рисунок 45. Вікно додавання обробника повідомлення.
В нижній частині вікна “майстра” класів з’явиться нова функція – член класу і повідомлення, яке ця функція обробляє (Рис.46).
Рисунок 46. Вікно “майстра” класів після створення обробника повідомлення.
Після натиснення “OK” можна побачити, що нова функція з’явилась в середовищі у вікні перегляду класів і в тексті програми (Рис.47).
Рисунок 47. Вікно середовища з новим обробником повідомлення.
Якщо запустити програму на компіляцію і виконання, то вона створить вікно діалогу з елементами керування (Рис.48)
Рисунок 48. Вікно програми після виконання.
Елемент Edit можна використовувати для введення інформації на передавання в програмі-передавачі і для приймання інформації в програмі-приймачі. Для цього потрібно в обробнику повідомлення натиснення кнопки Button1 написати реалізацію програми передавання даних з рядка редагування Edit (використовуючи вже створену змінну m_Edit) в COM-порт в програмі-передавачі і так само в програмі-приймачі написати реалізацію програми відображення даних, прийнятих з COM-порта, в рядку редагування Edit.
Розглянемо приклад створення програми-передавача даних. У вікні діалогу потрібно змінити напис на кнопці Button1. Для цього у властивостях даного елементу керування змінюємо поле Caption з “Button1” на “Передача даних” (рис. 49 і рис. 50).
Рис 49. Контекстне меню елемента Button1
Рис 50. Закладка General властивостей елемента Button1
В результаті вікно діалогу має вигляд (рис. 51):
Рис 51. Вікно програми
Тепер залишається тільки в обробнику повідомлення натиснення кнопки “Передача даних” (Button1) написати функції, що будуть здійснювати передачу інформації з елемента Edit на COM-порт.
Нижче наводиться приклад програми передачі даних на COM-порт.
Дана програма містить нові функції (Open(),WriteString(string Str), Close()). Їх в проект можна додати наступним чином:
У вікні перегляду класів середовища правою кнопкою миші клікнути по назві класу і вибрати Add Member Function (Рис. 52)
Рис. 52 Створення нової функції
У вікні створення нової функції дати назву фукції та її тип (рис. 53)
Рис. 53 Вікно створення функції
В результаті отримуємо функцію int CLaba1Dlg ::Open(). Аналогічно створюються решта функцій.
Приклад програми
// laba1Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "laba1.h"
#include "laba1Dlg.h"
#include "ComPort.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLaba1Dlg dialog
CLaba1Dlg::CLaba1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CLaba1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLaba1Dlg)
m_Edit = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CLaba1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLaba1Dlg)
DDX_Text(pDX, IDC_EDIT1, m_Edit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLaba1Dlg, CDialog)
//{{AFX_MSG_MAP(CLaba1Dlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLaba1Dlg message handlers
BOOL CLaba1Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CLaba1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CLaba1Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
int CLaba1Dlg::WriteString(string Str)
{
PurgeComm(hPort,PURGE_TXCLEAR | PURGE_RXCLEAR);
Str = Str + "\r";
DWORD dwError , dwNumBytesWritten;
WriteFile(
hPort,
Str.c_str(),
Str.length(),
&dwNumBytesWritten,
NULL);
return (int)dwNumBytesWritten;
}
int CLaba1Dlg ::Open()
{
hPort = CreateFile(
ComPortName.c_str(),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if(hPort == INVALID_HANDLE_VALUE)
{
return 0;
}
DCB PortDCB;
PortDCB.DCBlength = sizeof(DCB);
GetCommState(hPort , &PortDCB);
PortDCB.BaudRate = 9600;
PortDCB.fBinary = true; //!
PortDCB.fParity = true;
PortDCB.fOutxCtsFlow = false;
PortDCB.fOutxDsrFlow = false;
PortDCB.fDtrControl = DTR_CONTROL_ENABLE;
PortDCB.fDsrSensitivity = false;
PortDCB.fTXContinueOnXoff = false;
PortDCB.fOutX = false;
PortDCB.fInX = false;
PortDCB.fErrorChar = true;
PortDCB.fNull = false;
PortDCB.fRtsControl = RTS_CONTROL_ENABLE;
PortDCB.fAbortOnError = false;
PortDCB.ByteSize = 8;
PortDCB.Parity = NOPARITY;
PortDCB.StopBits = ONESTOPBIT;
// PortDCB.EofChar = '!';
if(!SetCommState(hPort , &PortDCB))
{
return 0;
// ShowMessage("Unable to configure the serial port");
}
COMMTIMEOUTS CommTimeouts;
GetCommTimeouts(hPort,&CommTimeouts);
CommTimeouts.ReadIntervalTimeout = 50;
CommTimeouts.ReadTotalTimeoutMultiplier = 1;
CommTimeouts.ReadTotalTimeoutConstant = 50;
CommTimeouts.WriteTotalTimeoutMultiplier = 1;
CommTimeouts.WriteTotalTimeoutConstant = 50;
SetCommTimeouts(hPort,&CommTimeouts);
FlushFileBuffers(hPort);
Opened = true;
return 1;
}
int CLaba1Dlg ::Close()
{
if(Opened)
{
CloseHandle(hPort);
Opened = false;
return 1;
}
else
return 0;
}
void CLaba1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
Open();
WriteString(m_Edit.LoadString);
Close();
}
Лабораторні роботи № 5-8
Дослідження режимів функціонування інтефейсу USB
МЕТА РОБОТИ: ознайомитися з процесом передачі даних через послідовний інтерфейс USB.
ТЕОРЕТИЧНІ ВІДОМОСТІ
USB (англ. Universal Serial Bus, абревіатура читається ю-ес-бі) — укр. універсальна послідовна шина, призначена для з'єднання периферійних пристроїв. Шина USB представляє собою послідовний інтерфейс передачі даних для середньошвидкісних та низькошвидкісних периферійних пристроїв. Для високошвидкісних пристроїв на сьогодні кращим вважається FireWire. USB-кабель представляє собою дві виті пари: по одній парі відбувається передача даних в кожному напрямку (диференціальне включення), а інша пара використовується для живлення периферійного пристрою (+5 В). Завдяки вбудованим лініям живлення, що запезпечують струм до 500 мА, USB часто дозволяє використовувати пристрої без власного блоку живлення (якщо ці пристрої споживають струм потужністю не більше 500 мА). До одного контролера шини USB можно під'єднати до 127 пристроїв через ланцюжок концентраторів (вони використовують топологію «зірка»). На відміну від багатьох інших стандартних роз’ємів, для USB характерні довговічність та механічна міцність. Інтерфейс USB є послідовною, напівдуплексною, двонаправленою шиною.| Шина дозволяє підключити до ПК до 127 фізичних пристроїв. Кожен фізичний пристрій може, у свою чергу, складатися з декількох логічних (наприклад, клавіатура з вбудованим манипулятором-трекболом).|устроїв||устрій||своєю чергою||із|| Кабельна розводка USB починається з вузла (host). Хост володіє інтегрованим кореневим концентратором (root hub), який надає декілька роз'ємів USB для підключення зовнішніх пристроїв. Потім кабелі йдуть до інших пристроїв USB, які також можуть бути концентраторами, і функціональних компонентів (наприклад, модем або акустична система). Концентратори часто вбудовуються в монітори і клавіатури (які є типовими складеними пристроями). Концентратори можуть містити до семи "витікаючих" портів. Для передачі сигналів шина USB використовує чотирипровідною інтерфейс. Одна пара провідників ("+5В" і "загальний") призначена для живлення периферійних пристроїв з навантаженням до 500 мА. Дані передаються по іншій парі ("D+" "D-"). Для передачі даних використовується диференціальна напруга до 3 В (з метою зниження впливу шуму) і схема кодування NRZI (що позбавляє від необхідності виділяти додаткову пару провідників під тактовий сигнал). Всі концентратори повинні підтримувати на своїх витікаючих портах пристрої обох типів, не дозволяючи високошвидкісному трафіку досягати низькошвидкісних пристроїв. Високопродуктивні пристрої підключаються за допомогою екранованого кабелю, довжина якого не повинна перевищувати 3 м. Якщо ж пристрій не формулює особливих вимог до смуги пропускання, його можна підключити і неекранованим кабелем (який може бути тоншим і гнучкішим). Максимальна довжина кабелю для низькошвидкісних пристроїв - 5 м. Вимоги пристрою до живлення (діаметр провідників, споживана потужність) можуть зумовити необхідність використання кабелю меншої довжини. Із-за особливостей розповсюдження сигналу по кабелю число послідовно сполучених концентраторів обмежене шістьма (і сім'ю п'ятиметровими відрізками кабелю).|устрої||устроїв||устрої||устрій||устроїв||устрою||харчування||поширення||з'єднаних| Хост дізнається про підключення або відключення пристрою з повідомлення від концентратора (ця процедура називається опитом шини - bus enumeration). Потім хост привласнює пристрою унікальну адресу USB (1:127). Після відключення пристрою від шини USB його адреса стає доступною для інших пристроїв.|устрою||із||сполучення||опитуванням|||||устрою|||потім||устрою|||устроїв| Для індивідуального звернення до конкретних функціональних можливостей складеного пристрою застосовується 4-бітове поле кінцевої крапки. У низькошвидкісних пристроях за кожною функцією закріплюється не більше двох адрес кінцевих крапок: нульова кінцева крапка використовується для конфігурації і визначення стану USB, а також управління функціональним компонентом; а інша крапка - відповідно до функціональних можливостей компоненту. Пристрої з максимальною продуктивністю можуть підтримувати до 16 кінцевих крапок, резервуючи нульову крапку для завдань конфігурації і управління USB.|спроможностей||складового||устрою||скінченної||точки||устроях||скінченних||точок||скінченна||точка||достатку|||точка||спроможностей||устрої||із||скінченних||точок||точку||задач||Хост опитує всі пристрої і видає їм дозволу на передачу даних (розсилаючи для цього пакет-маркер - Token Packet). Таким чином, пристрої позбавлені можливості безпосереднього обміну даними - всі дані проходять через хост. Ця умова сильно заважала впровадженню інтерфейсу USB на ринок портативних пристроїв. В результаті в кінці 2001 року було прийнято доповнення до стандарту USB 2.0 - специфікація USB OTG (On-The-Go), призначена для з'єднання периферійних USB-устройств один з одним без необхідності підключення до хосту (наприклад, цифрова камера і фотопринтер). Пристрій, підтримуюче USB OTG, здатний частково виконувати функції хоста і розпізнавати, коли воно підключене до повноцінного хосту (на основі ПК), а коли - до іншого периферійного пристрою. Специфікація описує також протокол узгодження вибору ролі хоста при з'єднанні два USB.|устрої||||устрої||спроможності|||мішала|||устроїв||у кінці||||||сполучення|||із|||устрій||||здібний||||устрою|||сполученні|| OTG-пристроїв.| Дані на шині передаються транзакціями, інтервал між якими складає 1 мс. Передбачено чотири типи транзакцій.|типів| Передачі, що управляють, використовуються для конфігурації знов підключених пристроїв (наприклад, привласнення ним адреси USB) і їх компонентів. Пристрої з максимальною продуктивністю можуть бути налаштовані на роботу з конфігураційними повідомленнями завдовжки 8, 16, 32 або 64 байти (за умовчанням - 8 байт). Пристрої з низькою продуктивністю в змозі розпізнавати повідомлення, що управляють, завдовжки не більше 8 байт.|знову||устроїв||присвоєння|||устрої||із||із||сполученнями||устрої||із||спроможний||сполучення| Групова передача (bulk) використовується для адресної пересилки даних великого об'єму (до 1023 байт). Як приклад можна привести передачу даних на принтер або від сканера. Пристрої з низькою продуктивністю не підтримують цей режим.||обсягу||зразок||устрої||із| Передача даних переривання, наприклад, введених з клавіатури даних або відомостей про переміщення миші. Ці дані мають бути передані достатньо швидко для того, щоб користувач не відмітив ніякої затримки. Відповідно до специфікацій час затримки USB складає декілька мілісекунд.|запроваджувати||передавати||досить||помітив||жодної|| Ізохронні передачі (передачі в реальному масштабі часу). Пропускна спроможність і затримка доставки обмовляються до початку передачі даних. До ізохронних даних алгоритми корекції помилок непридатні (оскільки час на повторну їх ретрансляцію перевищує допустимий інтервал затримки). За один сеанс в такому режимі може бути передано до 1023 байт. Пристрої з низькою продуктивністю не підтримують цей режим.|передавати||устрої||із| Слід також відзначити, що різними виробниками пропонувалися специфікації, що описують інтерфейс різних апаратних реалізацій контроллера USB. Фірмою Intel була запропонована специфікація UHCI (Universal Host Controller Interface), яка передбачає надзвичайно просту апаратну реалізацію контроллера USB. В рамках даної специфікації основні функції контролю і арбітражу шини покладаються на програмний драйвер. Альтернативна специфікація була запропонована компаніями Compaq, Microsoft і National Semiconductor - OHCI (Open Host Interface). Контроллери по специфікації OHCI володіють уніфікованим абстрактним інтерфейсом, що передбачає апаратну реалізацію більшості функцій, що управляють, що полегшує їх програмування.
Схема USB:
USB 1.0
Версія представлена в січні 1995 року.
Технічні характеристики:
· високошвидкісне з'єднання — 12 Мбіт/с
· максимальна довжина кабеля для високошвидкісного з'єднання — 3 м
· низькошвидкісне з'єднання — 1,5 Мбіт/с
· максимальна довжина кабеля для низькошвидкісного з'єднання — 5 м
· максимальна кількість пристроїв підімкнення (враховуючи )концентратори — 127
· можливість підключення пристроїв з різними швидкостями обміну інформацією
· напруга живлення для переферійних пристроїв — 5 В
· максимальний струм споживання на один пристрій — 500 мA
USB 1.1
Випущено в вересні 1998. Виправлені проблеми виявлені у версії 1.0, в основному пов'язані з концентраторами. Інтерфейс USB 1.1 декларує два режими:|
1)низькошвидкісний підканал (пропускна спроможність - 1,5 Мбіт/с), призначений для таких пристроїв, як миші і клавіатури;|устроїв|
2)високопродуктивний канал, що забезпечує максимальну пропускну спроможність 12 Мбіт/с, що може використовуватися для підключення зовнішніх накопичувачів або пристроїв обробки і передачі аудио- і відеоінформації.|устроїв||
USB 2.0
Версія випущена в квітні 2000 року. USB 2.0 відрізняється від USB 1.1 лише швидкістю передачі, яка зросла та незначними змінами в протоколі передачі даних для режиму Hi-speed (480 Мбіт/сек). Існує три швидкості роботи пристроїв USB 2.0:
· Low-speed 10—1500 Кбіт/c (використовується для інтерактивних пристроїв: клавіатури, мишки, джойстики)
· Full-speed 0,5—12 Мбіт/с (аудіо/відео пристрої)
· Hi-speed 25—480 Мбіт/с (відео пристрої, пристрої зберігання інформації)
В дійсності ж хоча швидкість USB 2.0 і може досягати 480Мбит/с, пристрої типу жорстких дисків чи взагалі будь-які інші носії інформації ніколи не досягають її по шині USB, хоча і могли б. Це можна пояснити доволі просто, шина USB має доволі велику затримку між запитом на передачу інформацію і саме самою передачею даних («довгий ping»). Наприклад шина FireWire забезпечує максимальну швидкість у 400 Мбіт/с, тобто на 80Мбіт/с меньше чим у USB, дозволяє досягнути більшої швидкості обміну даними з носіями інформації.
USB OTG
Технологія USB On - The - Go розширює специфікації USB 2.0 для легкого з'єднання між собою переферійних USB-пристроїв безпосередньо між собою без задіяння комп'ютера. Прикладом застосування цієї технології є можливість підключення фотоапарату напряму до друкарки. Цей стандарт виник через об'єктивну потребу надійного з'єднання особливо поширених USB-пристроїв без застосування комп'ютера, який в потрібний момент може і не виявитися під руками.
Бездротовий USB
Офіційна специфікація протоколу була анонсована в травні 2005 року. Дозволяє організовувати бездротовий зв'язок з високою швидкістю передачі даних до 480 Мбіт/с на відстані 3 метрів та до 110 Мбіт/с на відстані 10 метрів. Для безпровідного USB часом використовують абревіатуру WUSB. Розробник протоколу USB-IF віддає перевагу практиці іменування протокол офіційно Certified Wireless USB.
USB 3.0
Протокол USB 3.0 знаходиться на стадії розробки і буде передавати сигнал за допомогою оптоволоконного кабелю USB 3.0 планується створити зворотно сумісним з USB 2.0 та USB 1.1
Створенням USB 3.0 займаються компанії: Intel, Microsoft, Hewlett-Packard, Texas Instruments, NEC и NXP Semiconductors.
Теоретична пікова пропускна здатність складає 4,8 Гбіт/с. Специфікація периферійної шини USB була розроблена лідерами комп'ютерної і телекомунікаційної промисловості (Compaq, DEC, IBM, Intel, Microsoft, NEC і Northern Telecom) для підключення комп'ютерної периферії поза корпусом ПК з автоматичною автоконфігурацією (Plug&Play). Перша версія стандарту з'явилася в 1996 р. Агресивна політика Intel по впровадженню цього інтерфейсу стимулює поступове зникнення таких низькошвидкісних інтерфейсів, як RS 232C, Access.bus і тому подібне Проте для високошвидкісних пристроїв строгішими вимогами до продуктивності (наприклад, доступ до видаленого накопичувача або передача оцифрованого відео) конкурентом USB є інтерфейс IEEE 1394.||||||||||зовні||із|||появлялася||||||однак||устроїв|
Види роз'ємів USB
Розміщення провідників в USB
Номер контакту | Позначення | Колір провідника |
1 | V BUS | червоний |
2 | D- | білий |
3 | D+ | зелений |
4 | GND | чорний |
GND — ланцюг «корпусу» для живлення периферійних пристроїв, VBus — +5 В, також для ланцюгів живлення. Дані передаються по провідникам D+ і D− диференційно (стан 0 и 1 (в термінології офіційної документації diff0 и diff1 відповідно) визначаються по різниці потенціалів між лініями більше 0,2 В і при умові, що на одній із ліній (D− у випадку diff0 и D+ при diff1) потенціал відносно GND вище 2,8 В. Диференційний спосіб передачі є основним, проте не єдиним (наприклад, при иніціалізації пристрій повідомляє хосту про режим, що підтримується пристроєм (Full-Speed або Low-Speed), підтягуванням однієї із ліній данних до V_BUS через резистор 1.5 кОм (D− для режима Low-Speed і D+ для режима Full-Speed, пристрої, що працюють в режимі Hi-Speed, ведуть себе на цій стадії як пристрої в режимі Full-Speed). Також інколи навколо проводу присутня волокниста обмотка для захисту від фізичних пошкоджень.
|із||суворими||віддаленого|||з'являється||
Флеш пам'ять
Флеш пам'ять — це тип пам'яті, яка може на довготривалий час зберігати певну інформацію на своїй платі, зовсім не використовуючи живлення. В додаток можна сказати, що флеш пам'ять пропонує високу швидкість доступу до інформації (хоча вона не настільки висока як у DRAM) і кращий опір до кінетичного шоку, ніж у вінчестерах. Ці характеристики пояснюють популярність флеш пам'яті для приладів, що залежать від батарейок. Іншою приманкою флеш пам'яті є те, що коли вона скомпресована в суцільну «карту пам'яті», стає майже неможливо зруйнувати її стандартними фізичними методами, що дає змогу витримувати високий тиск і кип'ячу воду.
Принцип дії Флеш пам'ять зберігає інформацію в масиві «комірок», кожна з яких традиційно зберігає по одному біту інформації. Кожна комірка - це транзистор із плаваючим затвором. Новіші пристрої (інколи їх ще називають багатозарядними пристроями) можуть містити більше, ніж 1 біт в комірці, використовуючи два чи більше рівні електричних зарядів, розташованих при плаваючому затворі комірки. У флеш пам'яті типу NOR кожна комірка схожа на стандартний MOSFET (оксидний напівпровідниковий польовий транзистор), але у ній є не один затвор, а два. Як і будь-який інший польовий транзистор, вони мають контрольний затвор (КЗ), а, окрім нього, ще й інший — плаваючий (ПЗ), замкнений всередині оксидного шару. ПЗ розташований між КЗ і підкладкою. Оскільки ПЗ відокремлений власним заізольованим шаром оксиду, будь-які електрони, що попадають на нього відразу потрапляють в пастку, що дозволяє зберігати інформацію. Захоплені плаваючим затвором електрони змінюють (практично компенсують) електричне поле контрольного затвору, що змінює порогову напругу (Vп) затвору. Коли з комірки «зчитують» інформацію, до КЗ прикладають певну напругу, в залежності від якої в каналі транзистора протікатиме або не протікатиме електричний струм. Ця напруга залежить від Vп комірки, яка в свою чергу контролюється числом захоплених плаваючим затвором електронів. Величина порогової напруги зчитується і передоковується в одиницю чи нуль. Якщо плаваючий затвор може мати кілька зарядових станів, то зчитування відбувається за допомогою вимірювання сили струму в каналі транзистора. Для запису інформації в комірку NOR необхідно зарядити плаваючий затвор. Цього досягають, пропускаючи через канал транзистора сильний струм, при якому виникають гарячі електрони, що мають достатню енергію для подолання оксидного шару. Для очищення плаваючого затвору від електронів (стирання інформації) до контрольного затвору прикладають значну напругу, яка створює сильне електричне поле. Захоплені плаваючим затвором електрони висмоктуються цим полем, тунелюючи через оксидний шар. У приладах з однотипною напругою (теоретично всі чіпи, які доступні нам на сьогоднішній день) ця висока напруга створюється генератором підкачки заряду. Більшість сучасних компонентів NOR пам'яті розділені на чисті сегменти, які часто називають блоками чи секторами. Всі комірки пам'яті в блоці повинні бути очищені одночасно. На жаль, метод NOR може в загальному випадку обробляти лише одну частину інформації типу byte чи word. NAND пам'ять використовує тунельну інжекцію для запису і тунельний випуск для вилучення. NAND'ова флеш пам'ять формує ядро легкого USB інтерфейсу запам'ятовуючих приладів, які також відомі як USB флешки. Тоді, коли розробники збільшують густину флеш приладів, індивідуальні комірки діляться і кількість електронів в будь-якій комірці стає дуже малою. Парування між суміжними плаваючими затворами може змінити характеристики запису комірки. Нові реалізації, такі як заряджені пастки флеш пам'яті, намагаються забезпечити кращу ізоляцію між суміжними комірками.
ЗАВДАННЯ НА ЛАБОРАТОРНІ РОБОТИ
Лабораторна робота № 5