Введение во встроенные системы и Windows Embedded CE

Стандарты интерфейса ввода/вывода для внешних устройств

Разбить на страницы
Показывать лекцию целиком

Сборочная линия промышленных роботов Kuka, собирающих автомобили Мерседес. Роботы Kuka поставляются с контроллерами на основе Windows Embedded CE. Фотография с разрешения Kuka Roboter GmbH.

Стандарты интерфейсов В/В для внешних устройств

За прошедшие годы были разработаны несколько широко используемых стандартов цифровых интерфейсов для соединения компьютеров с периферийными устройствами. Данный раздел описывает несколько самых распространенных стандартов и кратко обсуждает, как они работают. Каждый стандарт имеет свой собственный набор оборудования, программного обеспечения, и компромиссов производительности. Обычно во встроенном устройстве можно найти несколько таких интерфейсов. Большое число периферийных устройств и интегральных схем используют эти стандарты.

Параллельный интерфейс принтера

Стандарт параллельного интерфейса принтера был разработан в 1970-х гг. и является широко используемым стандартом для передачи 8-битных параллельных данных. Большинство ПК и многие встроенные компьютеры имеют параллельный порт принтера. Данные пересылаются параллельным образом, используя восемь битов данных и стандартные уровни напряжения цифровой логики. Требуются линии квитирования для синхронизации каждой передачи данных. Линии квитирования соединяются с портами управления и статуса В/В. В ПК параллельный порт принтера соединяется с тремя 8-битными портами В/В на процессоре. Один порт В/В используется для 8-битной передачи данных, следующий адрес В/В содержит порт В/В для статуса, и третий адрес содержит порт В/В для битов управления, которые используются для сигналов квитирования.

Передача значения одного байта данных показана на рисунке 3.1. На шаге 1 компьютер ожидает пока сигнал busy (занят) принтера не станет низким (Low). На шаге 2 компьютер выводит восемь битов данных, и затем компьютер задает стробирующий сигнал низким (Low) как минимум на 500 ns на шаге 3. Затем компьютер ожидает от принтера сигнал Ack Low. Компьютер должен получить сигнал Ack Low, прежде чем изменить данные или стробировать линии. Компьютер может перейти в состояние Busy после задания сигнала Ack.

(рис 3.1) Передача параллельным портом 8-битного значения данных на принтер

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

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

Первоначально параллельный порт принтера был однонаправленным. Более новые стандарты параллельного порта поддерживают двунаправленную и более быстрые передачи данных между внешним устройством и компьютером (например, стандарты IEEE 1284 ECP и EPP). Был добавлен новый управляющий бит, который определяет направление передачи данных. Выходы вентиля с тремя состояниями используются на компьютере и принтере для двунаправленного управления линиями данных на основе задания управляющего бита.

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

Программная поддержка параллельного порта принтера

Большинство операционных систем предоставляют драйверы устройств для параллельного порта принтера. В системах X86 параллельные порты принтера имеют обычно имя LPTx:, где x является номером порта принтера. Протоколы двунаправленности подробно описаны в Стандарте параллельного порта IEEE 1284. Методы, используемые для печати графики и различных шрифтов, широко варьируются (например, PS и PCL), и требуют обычно драйвера принтера для конкретной модели принтера.

Если драйвер принтера реализован на платформе Windows Embedded CE, то для отправки данных на принтер можно использовать вызовы функций PrinterOpen, PrinterSend, и PrinterClose, или можно использовать вызовы В/В API файловой системы с именем устройства LPT. Используемый по умолчанию драйвер принтера PCL включен в Windows Embedded CE. Если порт принтера используется для других специальных устройств, их драйверы могут посылать данные прямо в порты В/В, используя функцию WRITE_PORT_UCHAR, и считывая биты статуса с помощью функции READ_PORT_UCHAR, имеющиеся в CEDDK.

Последовательный интерфейс В/В RS-232C

Большинство последовательных интерфейсов поддерживают стандарт EIA RS-232C. V.24 является стандартом, используемым в Европе. 8-битное значение данных передается последовательно по одному биту. Большинство ПК и встроенных компьютеров имеют как минимум один последовательный COM порт RS-232C. В простейшей реализации стандарта RS-232 в кабеле используется только три провода. Один провод используется для передачи данных (TD), один для получения данных (RD) и один для соединения сигнала "земля" (GND). Генератор фиксированной частоты используется для смещения последовательных данных. Частота этого битового генератора называется скоростью в бодах последовательного интерфейса. Скорость в бодах названа так в честь французского инженера Бодо (Baudot), который изобрел последовательный интерфейс для телеграфа. Последовательные устройства могут передавать данные в обоих направлениях одновременно (полнодуплексный режим), так как используются два различных провода сигналов для получения и передачи. Кабели последовательного интерфейса могут быть длинными, и они требуют только несколько проводов. На большинстве последовательных устройств обычно используют кодировку символов ASCII, но они могут также использоваться для передачи любых 8-битных двоичных значений.

Генератор скорости передачи не синхронизируется с сигналом генератора провода, соединяющего посылающее и принимающее устройства, это скорее асинхронная передача, и происходит с помощью машины состояний, которая наблюдает за последовательными перемещениями битов данных, происходящими у получателя.

В последовательном интерфейсе RS-232 не существует синхронизирующего соединения генераторов между отправителем и получателем. Передатчик и получатель должны первоначально быть настроены для работы с одной тактовой частотой. Машина состояний используется для настройки фазы синхронизации. Даже хотя они имеют одну частоту синхронизации, фаза генератора должна, тем не менее, синхронизироваться для последовательного передатчика и приемника, анализируя входящие последовательные данные. Для реализации последовательного интерфейса требуется оборудование, которое называется универсальный асинхронный приемопередатчик (UART). Средства на основе исходной микросхемы 16550 UART используются в оборудовании большинства современных ПК, включая рассматриваемое устройство Ebox 2300, которое будет использоваться для лабораторных проектов.

Передача отдельного символа ASCII показана на рисунке 3.2. Последовательный бит имеет два состояния. Mark является состоянием высокого уровня сигнала (>3V), а Space является состоянием низкого уровня сигнала (<-3V). Последовательные устройства более старого поколения могут иметь для Mark и Space уровни около +12V и -12V. Отметим, что для правильных уровней напряжения RS-232 стандартный бит вывода цифровой логики должен будет иметь свои уровни напряжения преобразованными для использования в последовательном интерфейсе. Для преобразования к уровням напряжения RS-232 существуют специальные ИС. ИС преобразования уровня RS-232 может также генерировать напряжения питания постоянного тока из стандартных источников питания постоянного тока цифровой логики.

(рис 3.2) Передача последовательным интерфейсом RS-232C 8-битного значения данных. Уровни напряжения >3 для mark и <-3 для space. Это несовместимо с уровнями стандартной логики, и требуется преобразование

Нерабочим является состояние высокого уровня сигнала (Mark). Как только интерфейс начинает посылать новое 8-битное значение данных, линия переходит в низкое состояние сигнала (Space) на один тактовый цикл (генератора скорости передачи). Это называется стартовый бит. Восемь битов данных затем пересылаются в течение следующих восьми тактовых циклов в порядке от младшего к старшему биту. Самый старший бит данных иногда используется в качестве контрольного бита четности для обнаружения ошибок, когда вместо восьми используется только семь битов данных. После пересылки битов данных состояние бита становится высоким на один такт. Это называется стоп-битом (Stop). Иногда при очень низких частотах передачи используются два бита Stop. Отметим, что требуется как минимум 10 тактов генератора для передачи каждого 8-битного значения данных.

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

Процессор значительно быстрее, чем скорости последовательной передачи, поэтому биты статуса должны сравниваться в программном обеспечении или оборудовании с правильными значениями, прежде чем происходит передача каких-либо данных. Дополнительные биты статуса могут также фиксировать условия ошибки.

Внутри передатчика UART используется 8-битовый сдвиговый регистр, и он активируется тактовым генератором для смещения данных по одному биту за раз. Сдвиговый регистр используется для преобразования из параллельного в последовательное представление. Оборудование UART автоматически добавляет стартовый и стоповый биты.

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

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

Машина состояний внутри UART обычно использует более быстрый генератор, который в восемь, шестнадцать, или даже в шестьдесят четыре раза быстрее, чем скорость передачи данных. Она также использует эту быструю частоту и счетчик для сэмплирования данных в середине периода каждого бита. Возле границ в последовательных кабелях часто возникает шум и низкочастотные помехи, поэтому сэмплирование в середине каждого бита улучшает надежность. После сэмплирования данных с более медленной частотой синхронизации выполненного машиной состояния используется второй сдвиговый регистр в получателе для преобразования из последовательного в параллельное представление.

Можно использовать дополнительные линии квитирования в последовательных кабелях для запуска и останова потока данных. Они обычно включают RTS (запрос на передачу), CTS (готовность к приему), DCD (детектирование носителя данных), DSR (источник данных готов), и DTR (готовность терминала). Без квитирования или программного управления потоком на более высоких скоростях передачи многие последовательные устройства будут терять символы, так как буферы UART относительно небольшие, и микропроцессор может не прочитать передаваемые достаточно быстро данные.

Устройство RS-232 может быть одного из двух типов, оборудование терминала данных (DTE) и оборудование носителя данных (DCE). Нормальный последовательный кабель RS-232C настроен для соединения устройства DTE c устройством DCE. Если соединяются два устройства одного типа, требуется специальный null-модемный кабель или адаптер. null-модемный кабель меняет местами сигнальные линии Передача данных (Tx) и Получение данных (Rx) на одном конце кабеля вместе с несколькими соединениями на линиях квитирования.

Когда Ebox 2300 соединяется непосредственно с последовательным портом ПК, должен использоваться null-модемный кабель, так как оба последовательных коннектора устройства настроены как DCE. Существуют также дешевые устройства анализаторы RS-232, созданные для помощи в определении различных вариантов для null-модема и точной настройки квитирования. Они будут полезны, если существуют проблемы при соединении двух последовательных устройств. Также доступно специальное программное обеспечение ПК, которое выводит дополнительную информацию о последовательном порте, которая помогает осуществлять мониторинг и отладку последовательной передачи данных.

Программная поддержка последовательной коммуникации

Большинство операционных систем предоставляют драйверы устройств для последовательных портов. В системах X86 последовательные порты обычно имеют имя устройства COMx:, где x является номером последовательного порта. В Windows Embedded CE в C/C++ можно открыть порт COM с помощью функции CreateFile, прочитать данные с помощью ReadFile, и записать последовательные данные с помощью WriteFile. Чтобы закрыть последовательный порт, используйте CloseHandle. Скорость передачи, число битов данных, четность и другие параметры можно прочитать и задать с помощью функций GetCommStatus и SetCommStatus. COM1: часто используется для отладочной информации в Windows Embedded CE. Если обе операции последовательной передачи и получения нужны одновременно, обычно используются потоки. Один поток посылает последовательные данные, а другой поток получает последовательные данные. В этих потоках обычно используется специальная функция синхронизации WaitCommEvent.

Интерфейс PS/2 клавиатуры и мыши

Интерфейс Personal System 2 (PS/2) основывается на стандарте, который использовался для мыши и клавиатуры в первом ПК IBM в 1984 г. Многие встроенные компьютерные платы поддерживают использование мыши или клавиатуры с помощью коннектора PS/2 на плате. Сигнальный коннектор PS/2 имеет 6 контактов, включая заземление, питание (5V-VDD), данные PS/2, и линию синхронизации PS/2. Компьютер подает питание в микроконтроллеры мыши и клавиатуры.

Линия последовательных данных PS/2 несколько похожа на сигналы RS-232, но в этом случае тактовый сигнал пересылается между устройством и компьютером для синхронизации, и используются стандартные уровни напряжения логического вентиля. Это делает оборудование менее сложным, но требуется дополнительный сигнальный провод для синхронизации.

Линии синхронизации и данных PS/2 являются открытыми коллекторами выхода и двунаправленными. В системах с мышью и клавиатурой имеется набор линий синхронизации и данных PS/2 для каждого устройства. Линия синхронизации обычно управляется клавиатурой (или мышью), но также может управляться компьютерной системой, когда она захочет остановить передачу данных с клавиатуры. Клавиатура (или мышь) и компьютер могут управлять линией данных. Единственная линия данных передает все данные между двумя устройствами. Клавиатура (или мышь) и компьютер могут обмениваться несколькими командами и сообщениями.

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

Скан-коды клавиатуры PS/2 состоят из последовательностей кодов "Make" и "Break". Каждый раз при нажатии клавиши посылается код make. Код break посылается, когда клавиша освобождается. Для многих клавиш код break является потоком байтов 0xF0, за которым следует код make для клавиши. При печати распространено удерживание нажатыми нескольких клавиш одновременно, прежде чем освобождается первая клавиша. С помощью кодов make и break, компьютер может решить, была ли нажата клавиша, и что нажато более одной клавиши. Он может также различить, какая клавиша была освобождена. Это также происходит, когда используются клавиши shift или control. Когда нажимается клавиша shift, клавиша '1' должна вернуть значение для символа '!' вместо значения для символа '1'. 8-битные скан-коды передаются последовательно по линиям данных PS/2 с помощью 11-битного формата. Когда оба устройство PS/2 и компьютер не посылают никакие данные, линия данных PS/2 и линия синхронизации PS/2 будут в состоянии High (неактивными).

Рисунок 3.3 показывает передачу одного байта скан-кода клавиатуры, и он состоит из следующих битов:

  • Старт-бит ('0')
  • 8-битные данные, содержащие скан-код клавиши в порядке от младших к старшим битам.
  • Бит контроля нечетности.
  • Стоп-бит ('1')
  • Во время передачи данных из устройства PS/2 происходит следующее:

  • Устройство PS/2 проверяет, что линии синхронизации и клавиатуры являются неактивными. Неактивность указывается состоянием сигнала High. Если обе линии неактивны, клавиатура готовит 'стартовый бит', делая состояние линии данных Low.
  • Устройство PS/2 затем переводит линию синхронизации в состояние Low примерно на 35 мкс.
  • Устройство PS/2 затем пересылает остальные 10 битов на скорости около 70 мкс за такт. Устройство PS/2 управляет данными и линией синхронизации.
  • Компьютер распознает ‘старт’ бит и такты в последовательных данных. За 8-битами последовательных данных следует бит контроля нечетности, и наконец High стоп-бит. Если устройство PS/2 хочет послать еще данные, то сразу за 11-тым битом следует следующий ‘старт’ бит. Эта схема повторяется пока клавиатура не закончит посылать данные, и тогда линии синхронизации и данных вернуться в свое неактивное состояние High.
  • (рис 3.3) Передача PS/2 скан-кода клавиатуры

    На рисунке 3.3 клавиатура посылает скан-код 16 для клавиши "1", и он имеет нулевой бит четности.

    Клавиатура PS/2 и мышь PS/2 используют один и тот же протокол синхронной последовательной коммуникации. Внутренне первоначальная мышь содержала шарик, который вращал два колесика с прорезями. Колесики были соединены с двумя оптическими датчиками положения. Два оптических датчика сообщали о движении по осям x и y, подсчитывая импульсы при движении колесиков. Она содержала также две или три кнопки для нажатия, которые могут считываться системой и однокристальным микроконтроллером. После включения питания посылается команда PS/2, приказывающая мыши начать посылать специальные пакеты данных. Встроенная в микроконтроллер программа в мыши затем начинает периодически посылать в компьютер 3-байтные пакеты данных по сигнальным линиям PS/2. Трехбайтные пакеты данных мыши сообщают относительные движения XY и статус кнопок.

    Программное обеспечение интерфейса PS/2 клавиатуры и мыши

    Операционные системы обычно включают стандартные драйверы устройств клавиатуры и мыши PS/2. Драйвер клавиатуры преобразует последовательности скан-кодов клавиш в символы, а драйвер мыши использует информацию об относительном перемещении, содержащуюся в пакетах данных мыши, для вычисления положения выводимого указателя мыши и для мониторинга статуса кнопок мыши.

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

    Интерфейс шины SPI

    Шина последовательного периферийного интерфейса (SPI) была создана в 1980-е годы. SPI использовалась для последовательной коммуникации между микропроцессором и его периферийными ИС. SPI имеет следующие четыре сигнальные линии: Serial Clock (SCLK), Chip Enable or Select (CS), Serial Data Input (SDI), Serial Data Output (SDO). Микропроцессор управляет сигнальными линиями CS и SCLK. Подчиненные устройства SPI получают сигналы синхронизации и выбора элемента памяти из микропроцессора. Когда устройство SPI не является выбранным (элементом памяти), его линия выхода SDO будет иметь три состояния (состояние высокого импеданса). Число битов последовательных данных может варьироваться в зависимости от устройства. Оборудование интерфейса SPI содержит сдвиговые регистры. Один сдвиговый регистр используется для отправки данных, а другой сдвиговый регистр используется для получения данных. Все генераторы являются синхронными и используют SCLK.

    Несколько устройств SPI могут соединяться в одно двумя способами. При каскадном соединении используется только один сигнал выбора элемента памяти. Микропроцессор выводит SDO. SDO соединяется со входом SDI одного подчиненного устройства. Линия SDO каждого устройства соединяется с линий SDI другого устройства. Последнее устройство снова соединяется с микропроцессором, так что последовательные данные смещаются через один большой сдвиговый регистр. Это упрощает оборудование и хорошо работает в системах, где все устройства всегда сэмплируются или обновляются одновременно. Но если требуются данные только одного устройства, то потребуется смещаться через другие устройства SPI в цепочке, чтобы добраться до его данных.

    (рис 3.4) Варианты конфигурации двух подчиненных устройств SPI

    Во второй конфигурации SPI каждое устройство имеет свой собственный сигнал выбора элемента памяти, и все они функционируют как независимые сдвиговые регистры. Вспомните, что если устройство не выбрано, оно определяет для своего выхода третье состояние. Выходы можно соединить вместе, но только одно устройство в данный момент может быть активировано. Это обеспечивает независимое чтение и запись устройств SPI. Недостатком является то, что требуется больше линий выхода для сигналов выбора элементов памяти. SPI поддерживает также несколько ведущих устройств шины. Скорости генераторов устройств SPI могут изменяться от 30 kHz до 3 MHz. Обычно устройства SPI будут помещать новые данные на своих выходах во время падающего фронта такта, и данные будут поступать внутрь на растущем фронте такта. Внимательно проверяйте техническое описание устройства SPI, так как эта схема иногда различается.

    SPI называют также Microwire в ИС компании National Semiconductor. Технические описания устройств SPI компании Motorola часто используют другие названия для сигналов SPI. CS может появиться как SS, SDI как MOSI, и SDO как MISO. Устройства SPI доступны также с несколькими другими уровнями напряжения питания в диапазоне от 2.3 до 5 вольт. SPI использует обычный генератор и стандартные уровни напряжения логики. Это делает аппаратный интерфейс проще, чем последовательное устройство RS-232C, но он также спроектирован для более коротких расстояний, таких как одна монтажная печатная плата (PCB).

    Интерфейс шины I2C

    Чтобы соединять интегральные схемы на одной монтажной печатной плате также в 1980-е годы появилась шина Inter IC (I2C). Доступен широкий ассортимент ИС и микропроцессоров с интерфейсом I2C, используемым для последовательной передачи данных на другие ИС. Подобно SPI последовательный интерфейс имеет аппаратное преимущество в том, что требует меньше контактов и проводников на монтажной печатной плате, при условии достаточности полосы пропускания.

    Шина I2C имеет только два сигнальных провода, SCL и SDA. SCL действует как линия синхронизации, а SDA может действовать как 1-битная последовательная линия данных или как 1-битная последовательная адресная линия. Также требуется, конечно, общая линия заземления. Линии сигналов I2C являются открытыми стоками. В данном случае это означает также, что они управляются только низким сигналом и единственный внешний нагрузочный резистор делает сигнал линии высоким (когда ни одно устройство не делает его низким).

    С помощью дополнительных логических вентилей выход с тремя состояниями может моделировать выход со свободным стоком, делая его выходом с тремя состояниями, когда сигнал бита должен становиться высоким.

    Устройства I2C являются либо ведущими, либо подчиненными. Подчиненные отвечают на запросы ведущего. Подчиненному устройству I2C присваивается уникальный 7-битный адрес шины I2C. Так как I2C имеет адресную информацию, то протокол этой шины более сложный, чем шины SPI. Вспомните, что SPI использует линии выбора элемента памяти и не имеет адресов.

    Когда микропроцессору (контроллеру) необходимо соединиться с устройством I2C (подчиненным), он посылает стартовую последовательность. Чтобы остановить последовательность I2C, микропроцессор посылает стоп-последовательность.

    На рисунке 3.5 отметим, что только во время старт-последовательности SDA изменятся из высокого низким при высоком SCL. Отметим также, что только во время стоп-последовательности SDA изменяется из низкого в высокий при высоком SCL. Это позволяет специальной логической схеме обнаружить старт и стоп.

    Микропроцессор управляет линиями синхронизации SCL для передачи каждого последовательного бита SDA. Устройства I2C могут управлять низким сигналом SCL для создания ожидания состояния. Типичные скорости передачи лежат в интервале от 100 kHz до 400 kHz.

    Проверяйте детали в техническом описании каждого устройства.

    Каждая передача адреса и данных содержит всего девять битов. Восемь битов данных с битом подтверждения (ACK), который используется для квитирования. Биты посылаются в порядке от старших к младшим битам, по одному за такт. Используются семь битов адреса, и последний восьмой бит является битом чтения/записи (R/W).

    Некоторые технические описания описывают это как восемь адресных битов, где четные адреса используются для чтения, а нечетные адреса для записи, исключая бит R/W.

    Подчиненный посылает последний бит подтверждения (ACK) в каждый адрес, и данные пересылаются. Низкое состояние ACK указывает, что подчиненный готов. Когда состояние ACK не будет низким, микропроцессор может послать стоп-последовательность.

    Когда микропроцессор хочет послать данные на устройство I2C, он должен выполнить следующие операции I2C, как показано на рисунке 3.5:

  • Микропроцессор посылает старт-последовательность I2C.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как Low (т.е., операция записи)
  • Микропроцессор последовательно пересылает 8-битный внутренний номер регистра для записи. Большинство устройств I2C имеют адрес устройства, за которым следует адрес регистра (адрес регистра в этом случае будет в поле данных, показанном на рисунке 3.5).
  • Микропроцессор последовательно пересылает 8-битные значения данных.
  • Микропроцессор посылает стоп-последовательность.
  • (рис 3.5) Последовательная передача интерфейса I2C 8-битного значения данных

    Как показано на рисунке 3.5, когда микропроцессор хочет прочитать данные из устройства I2C, он должен выполнить следующие операции шины I2C:

  • Микропроцессор посылает старт-последовательность.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как Low.
  • Микропроцессор последовательно пересылает 8-битный внутренний номер регистра для чтения.
  • Микропроцессор последовательно пересылает повторяющуюся стартовую последовательность I2C.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как High (т.е., операция чтения).
  • Микропроцессор последовательно пересылает 8-битные значения данных.
  • Микропроцессор посылает стоп-последовательность.
  • В одном из стандартов I2C можно иметь несколько контроллеров шины с обнаружением коллизий. Требуется арбитраж шины. Коллизия происходит, когда два контроллера управляют шиной одновременно. Схема арбитража шины определяет, какое устройство может управлять шиной.

    Некоторые устройства I2C поддерживают более высокую частоту передачи 3.4 MHz, расширенные 10-битные адреса, программируемые адреса, и более низкие напряжения питания. Многие материнские платы ПК используют System Management Bus (SMB) для измерения температуры, скорости вентилятора, и напряжения. Стандарт SMB был разработан компанией Intel в 1995 г. и основывается на I2C. Устройства I2C можно также найти в новых телевизорах, автомобилях и многих других изделиях потребительской электроники.

    Оба стандарта SPI и I2C предоставляют прекрасную поддержку для коммуникации с низкоскоростными устройствами на одной PCB. SPI является, возможно, лучшим выбором для приложений, которым требуется передача потоков данных с большей полосой пропускания, которым не требуется адресная информация. Аналого-цифровые (A/D) и цифро-аналоговые (D/A) преобразователи, используемые для непрерывного сэмплирования или вывода аналоговых сигналов, являются, возможно, самыми широко используемыми устройствами SPI. I2C требует адресации, поэтому оборудование является более сложным, но для текущих технологий микросхем VLSI эти дополнительные аппаратные расходы минимальны.

    Программная поддержка устройств SPI и I2C

    Некоторые микроконтроллеры общего назначения и многие микроконтроллеры USB включают интерфейсы I2C и SPI. Два или три бита на порте GPIO можно также использовать с соответствующим программным драйвером для реализации интерфейса SPI или I2C. Используя биты GPIO процессору необходимо сгенерировать все сигналы, включая синхроимпульсы, переключая биты GPIO на порте В/В, поэтому подход с программной реализацией требует дополнительных усилий процессора.

    Аналоговые входы и выходы

    Системы, которым требуется аналоговый вход используют аналогово-цифровые (A/D) преобразователи, а системы с аналоговым выходом используют цифро-аналоговые (D/A) преобразователи. Все эти устройства требуют временной задержки во время выполнения операции преобразования и обладают точностью определенного числа битов. Обычно время преобразования находится в диапазоне микросекунд, а точность в диапазоне от 8 до 20 битов. Обычно более быстрые устройства являются более дорогими, а устройства с большим количеством битов точности стоят дороже. Помните, что многие датчики и сигналы в действительности имеют высокие уровни шума и/или ограниченный набор частот, поэтому не каждый сигнал нуждается в большом числе битов точности и самом быстром возможном времени преобразования. Разумный выбор точности и частота дискретизации является важным вопросом проектирования. Частоты сэмплирования также ограничены реакцией системы в реальном времени. Нет ничего необычного в том, чтобы встроенное устройство имело аналоговые сигналы с различными частотами сэмплирования. Кроме микросхем A/D и D/A обычно требуются некоторые схемы согласования аналогового сигнала для буферизации аналоговых сигналов и настройки их уровней напряжения.

    Многие микросхемы A/D и D/A для требуемых цифровых линий В/В устройства имеют интерфейсы типа SPI, а некоторые имеют интерфейсы параллельного типа.

    Кроме линий данных устройства A/D и D/A имеют обычно сигнал входа для запуска преобразования и сигнал выхода, который указывает, когда преобразование завершается. Эти сигналы обычно используются для битов готовности В/В устройства.

    Доступны готовые коммерческие системы сбора данных (COTS) с аналоговыми средствами В/В на подключаемых платах, использующие USB или сетевые интерфейсы. Эти устройства содержат встроенные микросхемы A/D и D/A, соответствующие схемы согласования аналоговых сигналов, и часто доступны с драйверами устройств для основных операционных систем. Устройства Phidget являются одним из таких примеров, для них свободно доступен драйвер CE, и они будут использоваться в лабораторном проекте с eBox 2300.

    LCD и 8/8/8 цифро-аналоговый USB модуль В/В, которые будут использоваться в последующих примерах с eBox содержат микросхему A/D MCP3008. Устройство MCP3008, показанное на рисунке 3.6, содержит последовательную аппроксимацию 10-битного A/D конвертора со схемами сэмплирования и удержания, и восьми-канальный мультиплексор входа, который активирует его для чтения восьми внешних аналоговых входов.

    (рис 3.6) 10-битная 200Ks/sec A/D микросхема MCP3008, используемая в модулях Phidget, имеет интерфейс SPI

    Точность MCP3008 определяется на уровне ±1 LSB (0.1%). Коммуникация с устройством осуществляется с помощью простого последовательного интерфейса, который использует протокол SPI. Устройство имеет скорости преобразования до 200К сэмплов в секунду. Оно будет сэмплировать значительно медленнее, когда используется с микроконтроллером USB 1.0 и стандартным драйвером USB в модуле Phidgets (50-125 сэмплов в секунду). Этот модуль содержит также микросхему 16-битного расширителя GPIO MCP23S17 с портом SPI, который в свою очередь соединен с микроконтроллером USB CY7C63823. Отметим, что преобразователь A/D создан в действительности с помощью специального быстрого цифрового счетчика, называемого последовательным регистром аппроксимации, и преобразователя D/A. Значение аналогового выхода конвертора D/A сравнивается с аналоговым входом. Когда два аналоговых значения будут такие же как измерено аналоговым компаратором, десятичное значение в счетчике будет новым значением конвертора A/D.

    Универсальная последовательная шина (USB)

    Спецификация 1.0 универсальной последовательной шины (USB) 1.0 была выпущена в 1996 г. USB 2.0 является более новым стандартом с более высокой скоростью, которая поддерживает также устройства USB 1.0. Как предполагает название, USB является последовательной шиной, которая была создана для поддержки широкого спектра периферийных устройств. Она передает данные пакетами, аналогично сети, но так как максимальная длина ограничена несколькими футами, то технически она считается внешней шиной, а не сетью.

    Кабели USB содержат питание +5V и соединение заземления и два сигнальных провода витой пары (D+,D-). Два сигнальных провода действуют в несимметричном и в дифференциальном режиме (один сигнал вычитается из другого). При этом используется схема кодирования NRZI (без возврата к нулю с инверсией), которая предоставляет данные вместе с полем синхронизации импульсов. Сток источника питания на шину ограничен 500mA.

    USB поддерживает три скорости передачи, высокую скорость (только USB 2.0) равную 480Mb/s, полную скорость равную 12Mb/s, и низкую скорость равную 1.5Mb/s. USB управляется хостом и на шине обычно допускается только один хост. Хост отвечает за инициирование всех транзакций и распределение полосы пропускания. С одной шиной USB можно соединить до 127 различных устройств.

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

    (рис 3.7) В устройствах USB обычно используется недорогой микроконтроллер USB

    Устройства USB реализуются обычно с помощью недорогих микроконтроллеров USB, как показано на рисунке 3.7 выше. Кроме микропроцессора общего назначения с памятью ROM и RAM, они содержат дополнительный интерфейс USB, необходимый оборудованию. Специальная встроенная программа в ROM микроконтроллера используется для управления каждым устройством USB. Эти микроконтроллеры стоят только несколько долларов и могут даже быть дешевле, чем кабель и коннекторы, необходимые для некоторых более старых стандартов, таких как кабель параллельного порта принтера.

    USB пересылает информацию в пакетах. Существует четыре типа пакетов, пакеты маркеры, пакеты данных, пакеты квитирования, и периодические пакеты начала кадра. Типичная транзакция USB, показанная на рисунке 3.8, состоит из пакета маркера (заголовка, определяющего, что должно последовать), необязательного пакета данных (содержащего полезную нагрузку данных), и пакет квитирования (подтверждение транзакции для обнаружения ошибок и исправления). Используется циклический избыточный код (CRC) для проверки каких-либо ошибок передачи.

    (рис 3.8) Процессор последовательного интерфейса USB (SIE) выполняет высокоскоростные преобразования из последовательного в параллельное представление на пакетах USB, так как скорости последовательных данных слишком высокие для большинства микроконтроллеров

    Скорости последовательных данных, необходимые для USB, слишком высокие, чтобы дешевый микропроцессор обрабатывал их программным образом. Специальное оборудование для преобразования из последовательного в параллельное представление, называемое процессором последовательного интерфейса (SIE), включается в большинство схем микроконтроллеров USB. SIE содержит логику для управления протоколом на уровне битов и кодирование шины. Микропроцессор затем пересылает байты (а не биты) в SIE с более медленной скоростью данных.

    Пакет маркера содержит идентификатор пакета, адрес, и конечную точку. Идентификатор пакета в примере ниже является маркером OUT. Адрес каждого устройства (ADDR) может иметь несколько конечных точек (ENDP). Конечная точка является буфером (обычно 8 байтным), который соединяет оборудование SIE устройства и встроенную программу, выполняющуюся на микропроцессоре в устройстве USB.

    Программная поддержка устройств USB

    Когда подключается новое устройство USB, используя специальный процесс, называемый перечислением, хост обнаруживает добавление нового устройства и опрашивает подключенное устройство, чтобы определить его ID продукта USB и ID поставщика (PID/VID). Информация PID/VID позволяет хосту найти и загрузить соответствующий драйвер для нового устройства. Хост затем посылает команду задания адреса, чтобы присвоить новому устройству адрес.

    Операционные системы обычно включают драйвер для инициализации устройства USB, а затем ищут нужный драйвер специфического устройства USB. Стандартные драйверы обычно поставляются с ОС для устройств памяти, устройств интерфейса с человеком (UID), таких как клавиатура и мышь, и иногда базового последовательного устройства USB. Другие устройства обычно требуют специфического драйвера устройства от производителя. В CE идентификаторы PID/VID устройства USB и информация соответствующего драйвера хранятся в регистре. Доступны программные и аппаратные анализаторы протокола USB, как показано на рисунке 3.9, которые отслеживают и выводят пакеты USB, и будут полезны при разработке новых драйверов USB.

    (рис 3.9) Анализатор протокола USB захватывает и выводит пакеты USB, обмен которыми происходит с флеш-устройством USB (www.usbdeveloper.com)

    Устройства В/В для аудио сигналов

    Многие встроенные устройства имеют теперь средства для аудио. Audio Codec 97 (AC97) является стандартом ПК для кодирования/декодирования аудио, разработанным компанией Intel в 1997 г. Кодек относится к сигналам, которые кодируются/декодируются в аналоговое аудио из цифрового аудио и наоборот. Кодек является на самом деле объединенным конвертором A/D и D/A с микшерами.

    AC97 поддерживает скорости данных до 96 kHz в стерео разрешении от 16 до 20 битов. ПК имеют также более новый стандарт HD Audio, но встроенные устройства, такие как eBox 2300 скорее всего будут использовать для аудио более старые и дешевые устройства AC97. Как видно на рисунке 3.10, Ebox 2300 использует для аудио кодек Realtek ALC202 18-bit AC97.

    (рис 3.10) Блочная диаграмма аудио устройства Realtek ALC202 AC97

    В устройствах Windows Embedded CE с поддержкой аудио доступно большое число функций API для программистов приложений. PlaySound (для файлов *.wav по одному за раз), WaveIn, и WaveOut являются некоторыми из наиболее широко используемых функций API. Вместе с Windows Embedded CE поставляется некоторая версия Windows Media Player и несколько примеров прикладных программ аудио включено вместе с Windows Embedded CE в подкаталоге \SDK\SAMPLES\AUDIO. Для этой ОС определен стандарт API речи, но дополнительное программное обеспечение сторонних поставщиков процессоров речи по прежнему требуется для синтеза речи и распознавания голоса.

    Интерфейс с моторами и реле

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

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

    Для моторов и реле доступны специальные управляющие схемы, которые имеют более мощные транзисторы, которые предоставляют больший управляющий ток. Управляющая схема размещается между контактом обычного вывода цифровой логики и сильноточным устройством для обеспечения требуемых более высоких уровней тока. H-мост является полезным устройством, созданным для управления и реверсирования моторов постоянного тока (DC). Схемы H-моста доступны в ИС или небольших предварительно собранных модулях. H-мост содержит четыре больших мощных транзистора. Для одиночного контакта вывода можно добавить небольшую схему, используя отдельный мощный транзистор для управления устройством. Диоды иногда соединяются через нагрузку на индуктивных устройствах, таких как моторы, реле и соленоиды. Когда ток в индуктивной нагрузке отключается, то генерируется пик обратного напряжения (обратный EMF). Диод помогает рассеивать энергию и защищает управляющий транзистор.

    Управление скоростью моторов DC с помощью управляющей схемы можно реализовать, изменяя время включения/выключения (рабочий цикл) его цифрового управляющего сигнала. Чтобы избежать прерывистых движений и излишнего шума, управляющий сигнал должен пульсировать с частотой несколько килогерц (значительно выше естественной частоты ответа мотора и редукторов). Многие роботы используют два управляющих мотора по одному для каждого колеса. Скорость мотора даже той же модели существенно варьируется, и синхронизация двух моторов для движения с одинаковой скоростью является трудной задачей без некоторой обратной реакции, такой как кодировщик межосевого угла.

    При мгновенном реверсировании моторов DC, генерируются большие обратные напряжения EMF, которые могут создавать избыточный шум в линиях питания. Моторы также потребляют больший ток при первом запуске. В некоторых случаях генерируемый в линиях питания шум может быть достаточно сильным чтобы повредить процессор. Развязывающий конденсатор емкостью 10 -1000 микрофарад между линиями питания рядом с управляющей схемой может помочь отфильтровать шум источника питания, генерируемый при включении и выключении моторов. Обычно параллельно соединяется конденсатор емкостью 0.1 мф, чтобы фильтровать высокочастотный шум, так как диэлектрические материалы в электролитических конденсаторах не работает на высоких частотах (т.е., значение С не будет постоянным для частоты в реальных устройствах). Некоторые системы, чтобы уменьшить шум, добавляют также небольшую программную задержку по времени, когда реверсируют мотор. Мотор сначала выключается на небольшое время (100-500 мсек), прежде чем посылается команда реверсирования.

    При управлении механическими системами с вентилями, соленоидами, и реле, может понадобиться добавление гестерезиса, чтобы сократить число циклов включения/выключения. В качестве примера, термостат с гистерезисом, используемый для управления температурой нагревателя, будет отключаться при температуре на пару градусов выше температуры, при которой он включается. Если бы одна и та же температура использовалась для включения/выключения, то он бы постоянно циклически включался и выключался. Время жизни многих механических приводных механизмов оценивается числом циклов, поэтому меньшее количество циклов удлиняет их жизнь. Постоянное циклическое переключение может также в некоторых системах увеличивать шум и уменьшать производительность.

    Сетевые интерфейсы CAN и LIN

    Controller Area Network (CAN) является последовательной сетью, которая была разработана компаниями Bosch и Mercedes в середине 1980-х гг. для взаимодействия с несколькими контроллерами в автомобиле (www.can.bosch.com). Она может поддерживать скорости данных до 1Мбод и до 110 устройств. Существует два стандарта CAN, ISO 11519 имеет предел в 125 Kбод, а ISO 11898 имеет предел в 1Мбод. CAN широко используется в автомобильной промышленности, и с учетом широкой доступности микросхем поддержки CAN, ее можно также найти сегодня во многих встроенных устройствах.

    Это тип шины с несколькими контроллерами с обнаружением конфликтов и арбитражем шины, похожая несколько на Ethernet. Вместо хранения адресной информации сообщения CAN содержат уникальный номер сообщения, и меньшие номера сообщений имеют более высокий приоритет, когда двум контроллерам шина требуется одновременно. Контроллеры Part-A CAN поддерживают 11-битные сообщения, а Part-B поддерживает 11 или 29-битные идентификаторы сообщений. Каждое устройство на шине проверяет номер сообщения и определяет, нужно ли ему читать сообщение с шины.

    (рис 3.11) Кадр сообщения CAN 2.0A

    Кадр сообщения CAN версии 2.0A, показанный на рисунке 3.11, состоит из семи различных битовых полей:

  • Поле Start of Frame (SOF). Значение бита "0" указывает начало кадра сообщения.
  • Поле сообщения и арбитража, содержащее 11-битный идентификатор сообщения и бит Remote Transmission Request (RTR). Бит RTR равный "0" указывает, что это сообщение является Data Frame. Значение "1" указывает, что сообщение является Remote Transmission Request. Remote Frame является запросом (чтения) одним узлом данных из некоторого другого узла на шине. Remote Frames не содержит Data Field, другое посланное в ответ сообщение будет содержать данные.
  • Управляющее поле (Control Field), содержащее шесть битов. Два самых старших бита (r0 и r1) в настоящее время не используются. Четырех-битный код длины данных (Data Length Code, DLC) указывает число байтов данных в сообщении.
  • Поле данных (Data Field) содержит от нуля до восьми байтов данных.
  • Поле циклического избыточного кода (CRC) содержит 15-битный код ошибки CRC и бит ограничитель "1".
  • Поле подтверждения (ACK), состоящее из двух битов. Бит Slot, который передается как бит "1", но в последующем перезаписывается доминантными битами, переданными из всех других узлов, которые успешно получили сообщение. Второй бит является битом ограничителем "1".
  • Поле конца кадра (EOF) состоит из семи битов "1".
  • После конца кадра следует поле приостановки (INT), состоящее из трех битов "1". После 3-битного периода INT, шина будет свободна. Новый цикл шины может начаться в любое время после периода INT.
  • CAN идеально подходит для приложений, которым требуется высокоскоростные передачи с короткой длиной сообщений . Она имеет более высокие скорости данных, лучше защищена от шума, и имеет дополнительное обнаружение ошибок, чем более старые последовательные стандарты, такие как RS-232. Поврежденный узел пытается также изолировать себя от шины. Используется две сигнальные линии, CAN-high и CAN-low. Они действуют в дифференциальном режиме. Провода могут иметь в длину десятки метров при самым высоких скоростях передачи, а концы шины завершаются резистором (обычно 120 ом), чтобы уменьшить отражения.

    Интерфейс сети LIN

    Существует также более новый более дешевый, использующий меньшее напряжение, и меньшие скорости передачи данных (20Кбод) стандарт последовательной шины, предназначенной для использования в автомобилях на уровнях ниже CAN. Она называется Локальной сетью коммутации (LIN). LIN предназначена для взаимодействия процессора подсистемы с его интеллектуальными датчиками, в то время как CAN используется для соединения подсистем вместе на более высоком уровне. LIN может поддерживаться с помощью стандартного последовательного UART и встроенного программного обеспечения микроконтроллера, или с помощью специальных ИС. LIN (ISO-9141) имеет только 1 контроллер шины, имеющий максимум до 15 подчиненных, использует только 1 сигнальный провод, и не требует кварцевых генераторов в каждом устройстве (www.lin-subbus.org).

    (рис 3.12) Типичный кадр LIN, состоящий из Synch Break, Synch Field, Identifier, Data Field и Checksum

    Каждый байт данных в кадре, как видно на рисунке 3.12 следует стандартному 10-битному последовательному формату (т. е., старт-бит, восемь битов данных, стоп-бит). Кадр состоит из следующих полей:

  • Разрыв синхронизации - Sync Break (посылается контроллером LIN)
  • Как минимум 13 битов - Начало кадра
  • Поле синхронизации - Sync Field (управляющая задача LIN)
  • 1 бит - Ограничитель синхронизации
  • 0x55 (8-битные данные, старт стоп биты) – Используется для синхронизации
  • Поле идентификатора - Identifier Field (посылается контроллером LIN)
  • 8 бит данных, старт стоп биты
  • Биты с 0 по 3 - LIN ID
  • Биты с 4 до 5 - Управление длиной
  • Биты с 6 по 7 – Четность
  • Поле данных - Data Field (посылается подчиненным LIN) 2, 4 или 8 байтов (каждый из 8-битных данных, старт стоп битов)
  • 8-битная контрольная сумма (посылается подчиненным LIN)
  • Дополнительная информация

  • Приложение E содержит информацию о назначении контактов нескольких наиболее широко используемых коннекторов В/В.
  • Книги Parallel Port Complete и Serial Port Complete, написанные Jan Axelson и опубликованные издательством Lakeview Research (www.lvr.com) содержат исчерпывающее описание использования параллельного и последовательного портов.
  • При отладке последовательного устройства, соединенного с настольным ПК, эмулятор терминала RealTerm выводит больше информации и поддерживает больше форматов данных, чем программа HyperTerminal, имеющаяся в Windows. Она доступна для свободной загрузки по адресу: http://realterm.sourceforge.net/
  • Для тестирования и отладки устройств I2C или SPI доступен дешевый адаптер USB/последовательный с I2C/SPI, который работает с RealTerm (http://i2cchip.com). Многие новые осциллографы также декодируют I2C и SPI (см. упражнение 1).
  • Технический справочник по интерфейсу оборудования IBM PS/2 корпорации IBM 1988 г. содержит исходную информацию по PS/2 для клавиатуры и мыши в главе "Клавиатура и контроллер вспомогательных устройств".
  • Книга Rapid Prototyping of Digital Systems, автора James Hamblen также содержит информацию о параллельном, последовательном и дополнительном PS/2 интерфейсах, включая скан-коды, команды, и форматы пакетов данных. Скан коды, обычно используемые в ПК, можно найти также в Web и во многих справочниках по ПК.
  • Книга Indispensable PC Hardware Book 4th Edition, автора Hans-Peter Messmer, содержит много дополнительных подробностей об унаследованном оборудовании ПК.
  • Полная спецификация I2C доступна на сайте Philips Semiconductors (www.phillipssemiconductor.com), а SMB на сайте (www.smbus.org). Руководство по Motorola MC68HC11 (www.freescale.com) и различные руководства National Semiconductor (www.national.com) содержат дополнительную информацию о SPI. Аналоговые устройства (http://www.analog.com) составляют большое разнообразие дешевых конверторов A/D и D/A с интерфейсами SPI и параллельным портом.
  • Форум USB Implementers был основан компаниями, которые разработали спецификацию USB www.usb.org.
  • Свободно доступное руководство по основам USB можно найти по адресу http://www.beyondlogic.org/usbnutshell/usb1.htm.
  • Книги USB Complete, автора Jan Axelson, и USB Design by Example, автора John Hyde, содержат дополнительную информацию по созданию устройств USB.
  • Проекты общедоступного исходного кода для CE, включающие драйверы USB Web Cam и Phidgets доступны по адресу http://msdn.microsoft.com/embedded/community/ community/CommunityProjects/.
  • Лабораторные упражнения

  • Многие более новые логические анализаторы и многоканальные осциллографы являются встроенными устройствами, которые имеют встроенное или дополнительное программное обеспечение для декодирования и вывода сигналов шины RS232, SPI, I2C, USB, CAN, или LIN, как показано на рис 3.13(рис 3.13) Tektronix DPO7000 1-4 Channel Oscilloscope является встроенным устройством, которое использует Windows XP. Показанный выше вывод создается дополнительным программным пакетом для осциллографа, который декодирует и выводит сигналы шины SPI. Изображения с разрешения Prodigy Test Solutions (рис 3.14) Tektronix DPO7000 1-4 Channel Oscilloscope является встроенным устройством, которое использует Windows XP. Показанный выше вывод создается дополнительным программным пакетом для осциллографа, который декодирует и выводит сигналы шины I2С. Изображения с разрешения Prodigy Test Solutions
  • Если у вас есть один из дешевых доступных адаптеров USB/последовательный в I2C/SPI (http://i2cchip.com) или другое устройство с аналогичными возможностями, соедините его с рассматриваемым датчиком I2C. Запустите приложение RealTerm на настольном ПК, пошлите команды датчику, и скопируйте некоторые показатели данных с датчика.
  • Используя один из программных или аппаратных анализаторов протокола USB, скопируйте некоторые пакеты USB из устройства USB, присоединенного к настольному ПК. Попробуйте объяснить значение пакетов.
  • Страницы:

    Сборочная линия промышленных роботов Kuka, собирающих автомобили Мерседес. Роботы Kuka поставляются с контроллерами на основе Windows Embedded CE. Фотография с разрешения Kuka Roboter GmbH.

    Стандарты интерфейсов В/В для внешних устройств

    За прошедшие годы были разработаны несколько широко используемых стандартов цифровых интерфейсов для соединения компьютеров с периферийными устройствами. Данный раздел описывает несколько самых распространенных стандартов и кратко обсуждает, как они работают. Каждый стандарт имеет свой собственный набор оборудования, программного обеспечения, и компромиссов производительности. Обычно во встроенном устройстве можно найти несколько таких интерфейсов. Большое число периферийных устройств и интегральных схем используют эти стандарты.

    Параллельный интерфейс принтера

    Стандарт параллельного интерфейса принтера был разработан в 1970-х гг. и является широко используемым стандартом для передачи 8-битных параллельных данных. Большинство ПК и многие встроенные компьютеры имеют параллельный порт принтера. Данные пересылаются параллельным образом, используя восемь битов данных и стандартные уровни напряжения цифровой логики. Требуются линии квитирования для синхронизации каждой передачи данных. Линии квитирования соединяются с портами управления и статуса В/В. В ПК параллельный порт принтера соединяется с тремя 8-битными портами В/В на процессоре. Один порт В/В используется для 8-битной передачи данных, следующий адрес В/В содержит порт В/В для статуса, и третий адрес содержит порт В/В для битов управления, которые используются для сигналов квитирования.

    Передача значения одного байта данных показана на рисунке 3.1. На шаге 1 компьютер ожидает пока сигнал busy (занят) принтера не станет низким (Low). На шаге 2 компьютер выводит восемь битов данных, и затем компьютер задает стробирующий сигнал низким (Low) как минимум на 500 ns на шаге 3. Затем компьютер ожидает от принтера сигнал Ack Low. Компьютер должен получить сигнал Ack Low, прежде чем изменить данные или стробировать линии. Компьютер может перейти в состояние Busy после задания сигнала Ack.

    (рис 3.1) Передача параллельным портом 8-битного значения данных на принтер

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

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

    Первоначально параллельный порт принтера был однонаправленным. Более новые стандарты параллельного порта поддерживают двунаправленную и более быстрые передачи данных между внешним устройством и компьютером (например, стандарты IEEE 1284 ECP и EPP). Был добавлен новый управляющий бит, который определяет направление передачи данных. Выходы вентиля с тремя состояниями используются на компьютере и принтере для двунаправленного управления линиями данных на основе задания управляющего бита.

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

    Программная поддержка параллельного порта принтера

    Большинство операционных систем предоставляют драйверы устройств для параллельного порта принтера. В системах X86 параллельные порты принтера имеют обычно имя LPTx:, где x является номером порта принтера. Протоколы двунаправленности подробно описаны в Стандарте параллельного порта IEEE 1284. Методы, используемые для печати графики и различных шрифтов, широко варьируются (например, PS и PCL), и требуют обычно драйвера принтера для конкретной модели принтера.

    Если драйвер принтера реализован на платформе Windows Embedded CE, то для отправки данных на принтер можно использовать вызовы функций PrinterOpen, PrinterSend, и PrinterClose, или можно использовать вызовы В/В API файловой системы с именем устройства LPT. Используемый по умолчанию драйвер принтера PCL включен в Windows Embedded CE. Если порт принтера используется для других специальных устройств, их драйверы могут посылать данные прямо в порты В/В, используя функцию WRITE_PORT_UCHAR, и считывая биты статуса с помощью функции READ_PORT_UCHAR, имеющиеся в CEDDK.

    Последовательный интерфейс В/В RS-232C

    Большинство последовательных интерфейсов поддерживают стандарт EIA RS-232C. V.24 является стандартом, используемым в Европе. 8-битное значение данных передается последовательно по одному биту. Большинство ПК и встроенных компьютеров имеют как минимум один последовательный COM порт RS-232C. В простейшей реализации стандарта RS-232 в кабеле используется только три провода. Один провод используется для передачи данных (TD), один для получения данных (RD) и один для соединения сигнала "земля" (GND). Генератор фиксированной частоты используется для смещения последовательных данных. Частота этого битового генератора называется скоростью в бодах последовательного интерфейса. Скорость в бодах названа так в честь французского инженера Бодо (Baudot), который изобрел последовательный интерфейс для телеграфа. Последовательные устройства могут передавать данные в обоих направлениях одновременно (полнодуплексный режим), так как используются два различных провода сигналов для получения и передачи. Кабели последовательного интерфейса могут быть длинными, и они требуют только несколько проводов. На большинстве последовательных устройств обычно используют кодировку символов ASCII, но они могут также использоваться для передачи любых 8-битных двоичных значений.

    Генератор скорости передачи не синхронизируется с сигналом генератора провода, соединяющего посылающее и принимающее устройства, это скорее асинхронная передача, и происходит с помощью машины состояний, которая наблюдает за последовательными перемещениями битов данных, происходящими у получателя.

    В последовательном интерфейсе RS-232 не существует синхронизирующего соединения генераторов между отправителем и получателем. Передатчик и получатель должны первоначально быть настроены для работы с одной тактовой частотой. Машина состояний используется для настройки фазы синхронизации. Даже хотя они имеют одну частоту синхронизации, фаза генератора должна, тем не менее, синхронизироваться для последовательного передатчика и приемника, анализируя входящие последовательные данные. Для реализации последовательного интерфейса требуется оборудование, которое называется универсальный асинхронный приемопередатчик (UART). Средства на основе исходной микросхемы 16550 UART используются в оборудовании большинства современных ПК, включая рассматриваемое устройство Ebox 2300, которое будет использоваться для лабораторных проектов.

    Передача отдельного символа ASCII показана на рисунке 3.2. Последовательный бит имеет два состояния. Mark является состоянием высокого уровня сигнала (>3V), а Space является состоянием низкого уровня сигнала (<-3V). Последовательные устройства более старого поколения могут иметь для Mark и Space уровни около +12V и -12V. Отметим, что для правильных уровней напряжения RS-232 стандартный бит вывода цифровой логики должен будет иметь свои уровни напряжения преобразованными для использования в последовательном интерфейсе. Для преобразования к уровням напряжения RS-232 существуют специальные ИС. ИС преобразования уровня RS-232 может также генерировать напряжения питания постоянного тока из стандартных источников питания постоянного тока цифровой логики.

    (рис 3.2) Передача последовательным интерфейсом RS-232C 8-битного значения данных. Уровни напряжения >3 для mark и <-3 для space. Это несовместимо с уровнями стандартной логики, и требуется преобразование

    Нерабочим является состояние высокого уровня сигнала (Mark). Как только интерфейс начинает посылать новое 8-битное значение данных, линия переходит в низкое состояние сигнала (Space) на один тактовый цикл (генератора скорости передачи). Это называется стартовый бит. Восемь битов данных затем пересылаются в течение следующих восьми тактовых циклов в порядке от младшего к старшему биту. Самый старший бит данных иногда используется в качестве контрольного бита четности для обнаружения ошибок, когда вместо восьми используется только семь битов данных. После пересылки битов данных состояние бита становится высоким на один такт. Это называется стоп-битом (Stop). Иногда при очень низких частотах передачи используются два бита Stop. Отметим, что требуется как минимум 10 тактов генератора для передачи каждого 8-битного значения данных.

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

    Процессор значительно быстрее, чем скорости последовательной передачи, поэтому биты статуса должны сравниваться в программном обеспечении или оборудовании с правильными значениями, прежде чем происходит передача каких-либо данных. Дополнительные биты статуса могут также фиксировать условия ошибки.

    Внутри передатчика UART используется 8-битовый сдвиговый регистр, и он активируется тактовым генератором для смещения данных по одному биту за раз. Сдвиговый регистр используется для преобразования из параллельного в последовательное представление. Оборудование UART автоматически добавляет стартовый и стоповый биты.

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

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

    Машина состояний внутри UART обычно использует более быстрый генератор, который в восемь, шестнадцать, или даже в шестьдесят четыре раза быстрее, чем скорость передачи данных. Она также использует эту быструю частоту и счетчик для сэмплирования данных в середине периода каждого бита. Возле границ в последовательных кабелях часто возникает шум и низкочастотные помехи, поэтому сэмплирование в середине каждого бита улучшает надежность. После сэмплирования данных с более медленной частотой синхронизации выполненного машиной состояния используется второй сдвиговый регистр в получателе для преобразования из последовательного в параллельное представление.

    Можно использовать дополнительные линии квитирования в последовательных кабелях для запуска и останова потока данных. Они обычно включают RTS (запрос на передачу), CTS (готовность к приему), DCD (детектирование носителя данных), DSR (источник данных готов), и DTR (готовность терминала). Без квитирования или программного управления потоком на более высоких скоростях передачи многие последовательные устройства будут терять символы, так как буферы UART относительно небольшие, и микропроцессор может не прочитать передаваемые достаточно быстро данные.

    Устройство RS-232 может быть одного из двух типов, оборудование терминала данных (DTE) и оборудование носителя данных (DCE). Нормальный последовательный кабель RS-232C настроен для соединения устройства DTE c устройством DCE. Если соединяются два устройства одного типа, требуется специальный null-модемный кабель или адаптер. null-модемный кабель меняет местами сигнальные линии Передача данных (Tx) и Получение данных (Rx) на одном конце кабеля вместе с несколькими соединениями на линиях квитирования.

    Когда Ebox 2300 соединяется непосредственно с последовательным портом ПК, должен использоваться null-модемный кабель, так как оба последовательных коннектора устройства настроены как DCE. Существуют также дешевые устройства анализаторы RS-232, созданные для помощи в определении различных вариантов для null-модема и точной настройки квитирования. Они будут полезны, если существуют проблемы при соединении двух последовательных устройств. Также доступно специальное программное обеспечение ПК, которое выводит дополнительную информацию о последовательном порте, которая помогает осуществлять мониторинг и отладку последовательной передачи данных.

    Программная поддержка последовательной коммуникации

    Большинство операционных систем предоставляют драйверы устройств для последовательных портов. В системах X86 последовательные порты обычно имеют имя устройства COMx:, где x является номером последовательного порта. В Windows Embedded CE в C/C++ можно открыть порт COM с помощью функции CreateFile, прочитать данные с помощью ReadFile, и записать последовательные данные с помощью WriteFile. Чтобы закрыть последовательный порт, используйте CloseHandle. Скорость передачи, число битов данных, четность и другие параметры можно прочитать и задать с помощью функций GetCommStatus и SetCommStatus. COM1: часто используется для отладочной информации в Windows Embedded CE. Если обе операции последовательной передачи и получения нужны одновременно, обычно используются потоки. Один поток посылает последовательные данные, а другой поток получает последовательные данные. В этих потоках обычно используется специальная функция синхронизации WaitCommEvent.

    Интерфейс PS/2 клавиатуры и мыши

    Интерфейс Personal System 2 (PS/2) основывается на стандарте, который использовался для мыши и клавиатуры в первом ПК IBM в 1984 г. Многие встроенные компьютерные платы поддерживают использование мыши или клавиатуры с помощью коннектора PS/2 на плате. Сигнальный коннектор PS/2 имеет 6 контактов, включая заземление, питание (5V-VDD), данные PS/2, и линию синхронизации PS/2. Компьютер подает питание в микроконтроллеры мыши и клавиатуры.

    Линия последовательных данных PS/2 несколько похожа на сигналы RS-232, но в этом случае тактовый сигнал пересылается между устройством и компьютером для синхронизации, и используются стандартные уровни напряжения логического вентиля. Это делает оборудование менее сложным, но требуется дополнительный сигнальный провод для синхронизации.

    Линии синхронизации и данных PS/2 являются открытыми коллекторами выхода и двунаправленными. В системах с мышью и клавиатурой имеется набор линий синхронизации и данных PS/2 для каждого устройства. Линия синхронизации обычно управляется клавиатурой (или мышью), но также может управляться компьютерной системой, когда она захочет остановить передачу данных с клавиатуры. Клавиатура (или мышь) и компьютер могут управлять линией данных. Единственная линия данных передает все данные между двумя устройствами. Клавиатура (или мышь) и компьютер могут обмениваться несколькими командами и сообщениями.

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

    Скан-коды клавиатуры PS/2 состоят из последовательностей кодов "Make" и "Break". Каждый раз при нажатии клавиши посылается код make. Код break посылается, когда клавиша освобождается. Для многих клавиш код break является потоком байтов 0xF0, за которым следует код make для клавиши. При печати распространено удерживание нажатыми нескольких клавиш одновременно, прежде чем освобождается первая клавиша. С помощью кодов make и break, компьютер может решить, была ли нажата клавиша, и что нажато более одной клавиши. Он может также различить, какая клавиша была освобождена. Это также происходит, когда используются клавиши shift или control. Когда нажимается клавиша shift, клавиша '1' должна вернуть значение для символа '!' вместо значения для символа '1'. 8-битные скан-коды передаются последовательно по линиям данных PS/2 с помощью 11-битного формата. Когда оба устройство PS/2 и компьютер не посылают никакие данные, линия данных PS/2 и линия синхронизации PS/2 будут в состоянии High (неактивными).

    Рисунок 3.3 показывает передачу одного байта скан-кода клавиатуры, и он состоит из следующих битов:

  • Старт-бит ('0')
  • 8-битные данные, содержащие скан-код клавиши в порядке от младших к старшим битам.
  • Бит контроля нечетности.
  • Стоп-бит ('1')
  • Во время передачи данных из устройства PS/2 происходит следующее:

  • Устройство PS/2 проверяет, что линии синхронизации и клавиатуры являются неактивными. Неактивность указывается состоянием сигнала High. Если обе линии неактивны, клавиатура готовит 'стартовый бит', делая состояние линии данных Low.
  • Устройство PS/2 затем переводит линию синхронизации в состояние Low примерно на 35 мкс.
  • Устройство PS/2 затем пересылает остальные 10 битов на скорости около 70 мкс за такт. Устройство PS/2 управляет данными и линией синхронизации.
  • Компьютер распознает ‘старт’ бит и такты в последовательных данных. За 8-битами последовательных данных следует бит контроля нечетности, и наконец High стоп-бит. Если устройство PS/2 хочет послать еще данные, то сразу за 11-тым битом следует следующий ‘старт’ бит. Эта схема повторяется пока клавиатура не закончит посылать данные, и тогда линии синхронизации и данных вернуться в свое неактивное состояние High.
  • (рис 3.3) Передача PS/2 скан-кода клавиатуры

    На рисунке 3.3 клавиатура посылает скан-код 16 для клавиши "1", и он имеет нулевой бит четности.

    Клавиатура PS/2 и мышь PS/2 используют один и тот же протокол синхронной последовательной коммуникации. Внутренне первоначальная мышь содержала шарик, который вращал два колесика с прорезями. Колесики были соединены с двумя оптическими датчиками положения. Два оптических датчика сообщали о движении по осям x и y, подсчитывая импульсы при движении колесиков. Она содержала также две или три кнопки для нажатия, которые могут считываться системой и однокристальным микроконтроллером. После включения питания посылается команда PS/2, приказывающая мыши начать посылать специальные пакеты данных. Встроенная в микроконтроллер программа в мыши затем начинает периодически посылать в компьютер 3-байтные пакеты данных по сигнальным линиям PS/2. Трехбайтные пакеты данных мыши сообщают относительные движения XY и статус кнопок.

    Программное обеспечение интерфейса PS/2 клавиатуры и мыши

    Операционные системы обычно включают стандартные драйверы устройств клавиатуры и мыши PS/2. Драйвер клавиатуры преобразует последовательности скан-кодов клавиш в символы, а драйвер мыши использует информацию об относительном перемещении, содержащуюся в пакетах данных мыши, для вычисления положения выводимого указателя мыши и для мониторинга статуса кнопок мыши.

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

    Интерфейс шины SPI

    Шина последовательного периферийного интерфейса (SPI) была создана в 1980-е годы. SPI использовалась для последовательной коммуникации между микропроцессором и его периферийными ИС. SPI имеет следующие четыре сигнальные линии: Serial Clock (SCLK), Chip Enable or Select (CS), Serial Data Input (SDI), Serial Data Output (SDO). Микропроцессор управляет сигнальными линиями CS и SCLK. Подчиненные устройства SPI получают сигналы синхронизации и выбора элемента памяти из микропроцессора. Когда устройство SPI не является выбранным (элементом памяти), его линия выхода SDO будет иметь три состояния (состояние высокого импеданса). Число битов последовательных данных может варьироваться в зависимости от устройства. Оборудование интерфейса SPI содержит сдвиговые регистры. Один сдвиговый регистр используется для отправки данных, а другой сдвиговый регистр используется для получения данных. Все генераторы являются синхронными и используют SCLK.

    Несколько устройств SPI могут соединяться в одно двумя способами. При каскадном соединении используется только один сигнал выбора элемента памяти. Микропроцессор выводит SDO. SDO соединяется со входом SDI одного подчиненного устройства. Линия SDO каждого устройства соединяется с линий SDI другого устройства. Последнее устройство снова соединяется с микропроцессором, так что последовательные данные смещаются через один большой сдвиговый регистр. Это упрощает оборудование и хорошо работает в системах, где все устройства всегда сэмплируются или обновляются одновременно. Но если требуются данные только одного устройства, то потребуется смещаться через другие устройства SPI в цепочке, чтобы добраться до его данных.

    (рис 3.4) Варианты конфигурации двух подчиненных устройств SPI

    Во второй конфигурации SPI каждое устройство имеет свой собственный сигнал выбора элемента памяти, и все они функционируют как независимые сдвиговые регистры. Вспомните, что если устройство не выбрано, оно определяет для своего выхода третье состояние. Выходы можно соединить вместе, но только одно устройство в данный момент может быть активировано. Это обеспечивает независимое чтение и запись устройств SPI. Недостатком является то, что требуется больше линий выхода для сигналов выбора элементов памяти. SPI поддерживает также несколько ведущих устройств шины. Скорости генераторов устройств SPI могут изменяться от 30 kHz до 3 MHz. Обычно устройства SPI будут помещать новые данные на своих выходах во время падающего фронта такта, и данные будут поступать внутрь на растущем фронте такта. Внимательно проверяйте техническое описание устройства SPI, так как эта схема иногда различается.

    SPI называют также Microwire в ИС компании National Semiconductor. Технические описания устройств SPI компании Motorola часто используют другие названия для сигналов SPI. CS может появиться как SS, SDI как MOSI, и SDO как MISO. Устройства SPI доступны также с несколькими другими уровнями напряжения питания в диапазоне от 2.3 до 5 вольт. SPI использует обычный генератор и стандартные уровни напряжения логики. Это делает аппаратный интерфейс проще, чем последовательное устройство RS-232C, но он также спроектирован для более коротких расстояний, таких как одна монтажная печатная плата (PCB).

    Интерфейс шины I2C

    Чтобы соединять интегральные схемы на одной монтажной печатной плате также в 1980-е годы появилась шина Inter IC (I2C). Доступен широкий ассортимент ИС и микропроцессоров с интерфейсом I2C, используемым для последовательной передачи данных на другие ИС. Подобно SPI последовательный интерфейс имеет аппаратное преимущество в том, что требует меньше контактов и проводников на монтажной печатной плате, при условии достаточности полосы пропускания.

    Шина I2C имеет только два сигнальных провода, SCL и SDA. SCL действует как линия синхронизации, а SDA может действовать как 1-битная последовательная линия данных или как 1-битная последовательная адресная линия. Также требуется, конечно, общая линия заземления. Линии сигналов I2C являются открытыми стоками. В данном случае это означает также, что они управляются только низким сигналом и единственный внешний нагрузочный резистор делает сигнал линии высоким (когда ни одно устройство не делает его низким).

    С помощью дополнительных логических вентилей выход с тремя состояниями может моделировать выход со свободным стоком, делая его выходом с тремя состояниями, когда сигнал бита должен становиться высоким.

    Устройства I2C являются либо ведущими, либо подчиненными. Подчиненные отвечают на запросы ведущего. Подчиненному устройству I2C присваивается уникальный 7-битный адрес шины I2C. Так как I2C имеет адресную информацию, то протокол этой шины более сложный, чем шины SPI. Вспомните, что SPI использует линии выбора элемента памяти и не имеет адресов.

    Когда микропроцессору (контроллеру) необходимо соединиться с устройством I2C (подчиненным), он посылает стартовую последовательность. Чтобы остановить последовательность I2C, микропроцессор посылает стоп-последовательность.

    На рисунке 3.5 отметим, что только во время старт-последовательности SDA изменятся из высокого низким при высоком SCL. Отметим также, что только во время стоп-последовательности SDA изменяется из низкого в высокий при высоком SCL. Это позволяет специальной логической схеме обнаружить старт и стоп.

    Микропроцессор управляет линиями синхронизации SCL для передачи каждого последовательного бита SDA. Устройства I2C могут управлять низким сигналом SCL для создания ожидания состояния. Типичные скорости передачи лежат в интервале от 100 kHz до 400 kHz.

    Проверяйте детали в техническом описании каждого устройства.

    Каждая передача адреса и данных содержит всего девять битов. Восемь битов данных с битом подтверждения (ACK), который используется для квитирования. Биты посылаются в порядке от старших к младшим битам, по одному за такт. Используются семь битов адреса, и последний восьмой бит является битом чтения/записи (R/W).

    Некоторые технические описания описывают это как восемь адресных битов, где четные адреса используются для чтения, а нечетные адреса для записи, исключая бит R/W.

    Подчиненный посылает последний бит подтверждения (ACK) в каждый адрес, и данные пересылаются. Низкое состояние ACK указывает, что подчиненный готов. Когда состояние ACK не будет низким, микропроцессор может послать стоп-последовательность.

    Когда микропроцессор хочет послать данные на устройство I2C, он должен выполнить следующие операции I2C, как показано на рисунке 3.5:

  • Микропроцессор посылает старт-последовательность I2C.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как Low (т.е., операция записи)
  • Микропроцессор последовательно пересылает 8-битный внутренний номер регистра для записи. Большинство устройств I2C имеют адрес устройства, за которым следует адрес регистра (адрес регистра в этом случае будет в поле данных, показанном на рисунке 3.5).
  • Микропроцессор последовательно пересылает 8-битные значения данных.
  • Микропроцессор посылает стоп-последовательность.
  • (рис 3.5) Последовательная передача интерфейса I2C 8-битного значения данных

    Как показано на рисунке 3.5, когда микропроцессор хочет прочитать данные из устройства I2C, он должен выполнить следующие операции шины I2C:

  • Микропроцессор посылает старт-последовательность.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как Low.
  • Микропроцессор последовательно пересылает 8-битный внутренний номер регистра для чтения.
  • Микропроцессор последовательно пересылает повторяющуюся стартовую последовательность I2C.
  • Микропроцессор последовательно пересылает 7-битный адрес I2C подчиненного с битом R/W заданным как High (т.е., операция чтения).
  • Микропроцессор последовательно пересылает 8-битные значения данных.
  • Микропроцессор посылает стоп-последовательность.
  • В одном из стандартов I2C можно иметь несколько контроллеров шины с обнаружением коллизий. Требуется арбитраж шины. Коллизия происходит, когда два контроллера управляют шиной одновременно. Схема арбитража шины определяет, какое устройство может управлять шиной.

    Некоторые устройства I2C поддерживают более высокую частоту передачи 3.4 MHz, расширенные 10-битные адреса, программируемые адреса, и более низкие напряжения питания. Многие материнские платы ПК используют System Management Bus (SMB) для измерения температуры, скорости вентилятора, и напряжения. Стандарт SMB был разработан компанией Intel в 1995 г. и основывается на I2C. Устройства I2C можно также найти в новых телевизорах, автомобилях и многих других изделиях потребительской электроники.

    Оба стандарта SPI и I2C предоставляют прекрасную поддержку для коммуникации с низкоскоростными устройствами на одной PCB. SPI является, возможно, лучшим выбором для приложений, которым требуется передача потоков данных с большей полосой пропускания, которым не требуется адресная информация. Аналого-цифровые (A/D) и цифро-аналоговые (D/A) преобразователи, используемые для непрерывного сэмплирования или вывода аналоговых сигналов, являются, возможно, самыми широко используемыми устройствами SPI. I2C требует адресации, поэтому оборудование является более сложным, но для текущих технологий микросхем VLSI эти дополнительные аппаратные расходы минимальны.

    Программная поддержка устройств SPI и I2C

    Некоторые микроконтроллеры общего назначения и многие микроконтроллеры USB включают интерфейсы I2C и SPI. Два или три бита на порте GPIO можно также использовать с соответствующим программным драйвером для реализации интерфейса SPI или I2C. Используя биты GPIO процессору необходимо сгенерировать все сигналы, включая синхроимпульсы, переключая биты GPIO на порте В/В, поэтому подход с программной реализацией требует дополнительных усилий процессора.

    Аналоговые входы и выходы

    Системы, которым требуется аналоговый вход используют аналогово-цифровые (A/D) преобразователи, а системы с аналоговым выходом используют цифро-аналоговые (D/A) преобразователи. Все эти устройства требуют временной задержки во время выполнения операции преобразования и обладают точностью определенного числа битов. Обычно время преобразования находится в диапазоне микросекунд, а точность в диапазоне от 8 до 20 битов. Обычно более быстрые устройства являются более дорогими, а устройства с большим количеством битов точности стоят дороже. Помните, что многие датчики и сигналы в действительности имеют высокие уровни шума и/или ограниченный набор частот, поэтому не каждый сигнал нуждается в большом числе битов точности и самом быстром возможном времени преобразования. Разумный выбор точности и частота дискретизации является важным вопросом проектирования. Частоты сэмплирования также ограничены реакцией системы в реальном времени. Нет ничего необычного в том, чтобы встроенное устройство имело аналоговые сигналы с различными частотами сэмплирования. Кроме микросхем A/D и D/A обычно требуются некоторые схемы согласования аналогового сигнала для буферизации аналоговых сигналов и настройки их уровней напряжения.

    Многие микросхемы A/D и D/A для требуемых цифровых линий В/В устройства имеют интерфейсы типа SPI, а некоторые имеют интерфейсы параллельного типа.

    Кроме линий данных устройства A/D и D/A имеют обычно сигнал входа для запуска преобразования и сигнал выхода, который указывает, когда преобразование завершается. Эти сигналы обычно используются для битов готовности В/В устройства.

    Доступны готовые коммерческие системы сбора данных (COTS) с аналоговыми средствами В/В на подключаемых платах, использующие USB или сетевые интерфейсы. Эти устройства содержат встроенные микросхемы A/D и D/A, соответствующие схемы согласования аналоговых сигналов, и часто доступны с драйверами устройств для основных операционных систем. Устройства Phidget являются одним из таких примеров, для них свободно доступен драйвер CE, и они будут использоваться в лабораторном проекте с eBox 2300.

    LCD и 8/8/8 цифро-аналоговый USB модуль В/В, которые будут использоваться в последующих примерах с eBox содержат микросхему A/D MCP3008. Устройство MCP3008, показанное на рисунке 3.6, содержит последовательную аппроксимацию 10-битного A/D конвертора со схемами сэмплирования и удержания, и восьми-канальный мультиплексор входа, который активирует его для чтения восьми внешних аналоговых входов.

    (рис 3.6) 10-битная 200Ks/sec A/D микросхема MCP3008, используемая в модулях Phidget, имеет интерфейс SPI

    Точность MCP3008 определяется на уровне ±1 LSB (0.1%). Коммуникация с устройством осуществляется с помощью простого последовательного интерфейса, который использует протокол SPI. Устройство имеет скорости преобразования до 200К сэмплов в секунду. Оно будет сэмплировать значительно медленнее, когда используется с микроконтроллером USB 1.0 и стандартным драйвером USB в модуле Phidgets (50-125 сэмплов в секунду). Этот модуль содержит также микросхему 16-битного расширителя GPIO MCP23S17 с портом SPI, который в свою очередь соединен с микроконтроллером USB CY7C63823. Отметим, что преобразователь A/D создан в действительности с помощью специального быстрого цифрового счетчика, называемого последовательным регистром аппроксимации, и преобразователя D/A. Значение аналогового выхода конвертора D/A сравнивается с аналоговым входом. Когда два аналоговых значения будут такие же как измерено аналоговым компаратором, десятичное значение в счетчике будет новым значением конвертора A/D.

    Универсальная последовательная шина (USB)

    Спецификация 1.0 универсальной последовательной шины (USB) 1.0 была выпущена в 1996 г. USB 2.0 является более новым стандартом с более высокой скоростью, которая поддерживает также устройства USB 1.0. Как предполагает название, USB является последовательной шиной, которая была создана для поддержки широкого спектра периферийных устройств. Она передает данные пакетами, аналогично сети, но так как максимальная длина ограничена несколькими футами, то технически она считается внешней шиной, а не сетью.

    Кабели USB содержат питание +5V и соединение заземления и два сигнальных провода витой пары (D+,D-). Два сигнальных провода действуют в несимметричном и в дифференциальном режиме (один сигнал вычитается из другого). При этом используется схема кодирования NRZI (без возврата к нулю с инверсией), которая предоставляет данные вместе с полем синхронизации импульсов. Сток источника питания на шину ограничен 500mA.

    USB поддерживает три скорости передачи, высокую скорость (только USB 2.0) равную 480Mb/s, полную скорость равную 12Mb/s, и низкую скорость равную 1.5Mb/s. USB управляется хостом и на шине обычно допускается только один хост. Хост отвечает за инициирование всех транзакций и распределение полосы пропускания. С одной шиной USB можно соединить до 127 различных устройств.

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

    (рис 3.7) В устройствах USB обычно используется недорогой микроконтроллер USB

    Устройства USB реализуются обычно с помощью недорогих микроконтроллеров USB, как показано на рисунке 3.7 выше. Кроме микропроцессора общего назначения с памятью ROM и RAM, они содержат дополнительный интерфейс USB, необходимый оборудованию. Специальная встроенная программа в ROM микроконтроллера используется для управления каждым устройством USB. Эти микроконтроллеры стоят только несколько долларов и могут даже быть дешевле, чем кабель и коннекторы, необходимые для некоторых более старых стандартов, таких как кабель параллельного порта принтера.

    USB пересылает информацию в пакетах. Существует четыре типа пакетов, пакеты маркеры, пакеты данных, пакеты квитирования, и периодические пакеты начала кадра. Типичная транзакция USB, показанная на рисунке 3.8, состоит из пакета маркера (заголовка, определяющего, что должно последовать), необязательного пакета данных (содержащего полезную нагрузку данных), и пакет квитирования (подтверждение транзакции для обнаружения ошибок и исправления). Используется циклический избыточный код (CRC) для проверки каких-либо ошибок передачи.

    (рис 3.8) Процессор последовательного интерфейса USB (SIE) выполняет высокоскоростные преобразования из последовательного в параллельное представление на пакетах USB, так как скорости последовательных данных слишком высокие для большинства микроконтроллеров

    Скорости последовательных данных, необходимые для USB, слишком высокие, чтобы дешевый микропроцессор обрабатывал их программным образом. Специальное оборудование для преобразования из последовательного в параллельное представление, называемое процессором последовательного интерфейса (SIE), включается в большинство схем микроконтроллеров USB. SIE содержит логику для управления протоколом на уровне битов и кодирование шины. Микропроцессор затем пересылает байты (а не биты) в SIE с более медленной скоростью данных.

    Пакет маркера содержит идентификатор пакета, адрес, и конечную точку. Идентификатор пакета в примере ниже является маркером OUT. Адрес каждого устройства (ADDR) может иметь несколько конечных точек (ENDP). Конечная точка является буфером (обычно 8 байтным), который соединяет оборудование SIE устройства и встроенную программу, выполняющуюся на микропроцессоре в устройстве USB.

    Программная поддержка устройств USB

    Когда подключается новое устройство USB, используя специальный процесс, называемый перечислением, хост обнаруживает добавление нового устройства и опрашивает подключенное устройство, чтобы определить его ID продукта USB и ID поставщика (PID/VID). Информация PID/VID позволяет хосту найти и загрузить соответствующий драйвер для нового устройства. Хост затем посылает команду задания адреса, чтобы присвоить новому устройству адрес.

    Операционные системы обычно включают драйвер для инициализации устройства USB, а затем ищут нужный драйвер специфического устройства USB. Стандартные драйверы обычно поставляются с ОС для устройств памяти, устройств интерфейса с человеком (UID), таких как клавиатура и мышь, и иногда базового последовательного устройства USB. Другие устройства обычно требуют специфического драйвера устройства от производителя. В CE идентификаторы PID/VID устройства USB и информация соответствующего драйвера хранятся в регистре. Доступны программные и аппаратные анализаторы протокола USB, как показано на рисунке 3.9, которые отслеживают и выводят пакеты USB, и будут полезны при разработке новых драйверов USB.

    (рис 3.9) Анализатор протокола USB захватывает и выводит пакеты USB, обмен которыми происходит с флеш-устройством USB (www.usbdeveloper.com)

    Устройства В/В для аудио сигналов

    Многие встроенные устройства имеют теперь средства для аудио. Audio Codec 97 (AC97) является стандартом ПК для кодирования/декодирования аудио, разработанным компанией Intel в 1997 г. Кодек относится к сигналам, которые кодируются/декодируются в аналоговое аудио из цифрового аудио и наоборот. Кодек является на самом деле объединенным конвертором A/D и D/A с микшерами.

    AC97 поддерживает скорости данных до 96 kHz в стерео разрешении от 16 до 20 битов. ПК имеют также более новый стандарт HD Audio, но встроенные устройства, такие как eBox 2300 скорее всего будут использовать для аудио более старые и дешевые устройства AC97. Как видно на рисунке 3.10, Ebox 2300 использует для аудио кодек Realtek ALC202 18-bit AC97.

    (рис 3.10) Блочная диаграмма аудио устройства Realtek ALC202 AC97

    В устройствах Windows Embedded CE с поддержкой аудио доступно большое число функций API для программистов приложений. PlaySound (для файлов *.wav по одному за раз), WaveIn, и WaveOut являются некоторыми из наиболее широко используемых функций API. Вместе с Windows Embedded CE поставляется некоторая версия Windows Media Player и несколько примеров прикладных программ аудио включено вместе с Windows Embedded CE в подкаталоге \SDK\SAMPLES\AUDIO. Для этой ОС определен стандарт API речи, но дополнительное программное обеспечение сторонних поставщиков процессоров речи по прежнему требуется для синтеза речи и распознавания голоса.

    Интерфейс с моторами и реле

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

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

    Для моторов и реле доступны специальные управляющие схемы, которые имеют более мощные транзисторы, которые предоставляют больший управляющий ток. Управляющая схема размещается между контактом обычного вывода цифровой логики и сильноточным устройством для обеспечения требуемых более высоких уровней тока. H-мост является полезным устройством, созданным для управления и реверсирования моторов постоянного тока (DC). Схемы H-моста доступны в ИС или небольших предварительно собранных модулях. H-мост содержит четыре больших мощных транзистора. Для одиночного контакта вывода можно добавить небольшую схему, используя отдельный мощный транзистор для управления устройством. Диоды иногда соединяются через нагрузку на индуктивных устройствах, таких как моторы, реле и соленоиды. Когда ток в индуктивной нагрузке отключается, то генерируется пик обратного напряжения (обратный EMF). Диод помогает рассеивать энергию и защищает управляющий транзистор.

    Управление скоростью моторов DC с помощью управляющей схемы можно реализовать, изменяя время включения/выключения (рабочий цикл) его цифрового управляющего сигнала. Чтобы избежать прерывистых движений и излишнего шума, управляющий сигнал должен пульсировать с частотой несколько килогерц (значительно выше естественной частоты ответа мотора и редукторов). Многие роботы используют два управляющих мотора по одному для каждого колеса. Скорость мотора даже той же модели существенно варьируется, и синхронизация двух моторов для движения с одинаковой скоростью является трудной задачей без некоторой обратной реакции, такой как кодировщик межосевого угла.

    При мгновенном реверсировании моторов DC, генерируются большие обратные напряжения EMF, которые могут создавать избыточный шум в линиях питания. Моторы также потребляют больший ток при первом запуске. В некоторых случаях генерируемый в линиях питания шум может быть достаточно сильным чтобы повредить процессор. Развязывающий конденсатор емкостью 10 -1000 микрофарад между линиями питания рядом с управляющей схемой может помочь отфильтровать шум источника питания, генерируемый при включении и выключении моторов. Обычно параллельно соединяется конденсатор емкостью 0.1 мф, чтобы фильтровать высокочастотный шум, так как диэлектрические материалы в электролитических конденсаторах не работает на высоких частотах (т.е., значение С не будет постоянным для частоты в реальных устройствах). Некоторые системы, чтобы уменьшить шум, добавляют также небольшую программную задержку по времени, когда реверсируют мотор. Мотор сначала выключается на небольшое время (100-500 мсек), прежде чем посылается команда реверсирования.

    При управлении механическими системами с вентилями, соленоидами, и реле, может понадобиться добавление гестерезиса, чтобы сократить число циклов включения/выключения. В качестве примера, термостат с гистерезисом, используемый для управления температурой нагревателя, будет отключаться при температуре на пару градусов выше температуры, при которой он включается. Если бы одна и та же температура использовалась для включения/выключения, то он бы постоянно циклически включался и выключался. Время жизни многих механических приводных механизмов оценивается числом циклов, поэтому меньшее количество циклов удлиняет их жизнь. Постоянное циклическое переключение может также в некоторых системах увеличивать шум и уменьшать производительность.

    Сетевые интерфейсы CAN и LIN

    Controller Area Network (CAN) является последовательной сетью, которая была разработана компаниями Bosch и Mercedes в середине 1980-х гг. для взаимодействия с несколькими контроллерами в автомобиле (www.can.bosch.com). Она может поддерживать скорости данных до 1Мбод и до 110 устройств. Существует два стандарта CAN, ISO 11519 имеет предел в 125 Kбод, а ISO 11898 имеет предел в 1Мбод. CAN широко используется в автомобильной промышленности, и с учетом широкой доступности микросхем поддержки CAN, ее можно также найти сегодня во многих встроенных устройствах.

    Это тип шины с несколькими контроллерами с обнаружением конфликтов и арбитражем шины, похожая несколько на Ethernet. Вместо хранения адресной информации сообщения CAN содержат уникальный номер сообщения, и меньшие номера сообщений имеют более высокий приоритет, когда двум контроллерам шина требуется одновременно. Контроллеры Part-A CAN поддерживают 11-битные сообщения, а Part-B поддерживает 11 или 29-битные идентификаторы сообщений. Каждое устройство на шине проверяет номер сообщения и определяет, нужно ли ему читать сообщение с шины.

    (рис 3.11) Кадр сообщения CAN 2.0A

    Кадр сообщения CAN версии 2.0A, показанный на рисунке 3.11, состоит из семи различных битовых полей:

  • Поле Start of Frame (SOF). Значение бита "0" указывает начало кадра сообщения.
  • Поле сообщения и арбитража, содержащее 11-битный идентификатор сообщения и бит Remote Transmission Request (RTR). Бит RTR равный "0" указывает, что это сообщение является Data Frame. Значение "1" указывает, что сообщение является Remote Transmission Request. Remote Frame является запросом (чтения) одним узлом данных из некоторого другого узла на шине. Remote Frames не содержит Data Field, другое посланное в ответ сообщение будет содержать данные.
  • Управляющее поле (Control Field), содержащее шесть битов. Два самых старших бита (r0 и r1) в настоящее время не используются. Четырех-битный код длины данных (Data Length Code, DLC) указывает число байтов данных в сообщении.
  • Поле данных (Data Field) содержит от нуля до восьми байтов данных.
  • Поле циклического избыточного кода (CRC) содержит 15-битный код ошибки CRC и бит ограничитель "1".
  • Поле подтверждения (ACK), состоящее из двух битов. Бит Slot, который передается как бит "1", но в последующем перезаписывается доминантными битами, переданными из всех других узлов, которые успешно получили сообщение. Второй бит является битом ограничителем "1".
  • Поле конца кадра (EOF) состоит из семи битов "1".
  • После конца кадра следует поле приостановки (INT), состоящее из трех битов "1". После 3-битного периода INT, шина будет свободна. Новый цикл шины может начаться в любое время после периода INT.
  • CAN идеально подходит для приложений, которым требуется высокоскоростные передачи с короткой длиной сообщений . Она имеет более высокие скорости данных, лучше защищена от шума, и имеет дополнительное обнаружение ошибок, чем более старые последовательные стандарты, такие как RS-232. Поврежденный узел пытается также изолировать себя от шины. Используется две сигнальные линии, CAN-high и CAN-low. Они действуют в дифференциальном режиме. Провода могут иметь в длину десятки метров при самым высоких скоростях передачи, а концы шины завершаются резистором (обычно 120 ом), чтобы уменьшить отражения.

    Интерфейс сети LIN

    Существует также более новый более дешевый, использующий меньшее напряжение, и меньшие скорости передачи данных (20Кбод) стандарт последовательной шины, предназначенной для использования в автомобилях на уровнях ниже CAN. Она называется Локальной сетью коммутации (LIN). LIN предназначена для взаимодействия процессора подсистемы с его интеллектуальными датчиками, в то время как CAN используется для соединения подсистем вместе на более высоком уровне. LIN может поддерживаться с помощью стандартного последовательного UART и встроенного программного обеспечения микроконтроллера, или с помощью специальных ИС. LIN (ISO-9141) имеет только 1 контроллер шины, имеющий максимум до 15 подчиненных, использует только 1 сигнальный провод, и не требует кварцевых генераторов в каждом устройстве (www.lin-subbus.org).

    (рис 3.12) Типичный кадр LIN, состоящий из Synch Break, Synch Field, Identifier, Data Field и Checksum

    Каждый байт данных в кадре, как видно на рисунке 3.12 следует стандартному 10-битному последовательному формату (т. е., старт-бит, восемь битов данных, стоп-бит). Кадр состоит из следующих полей:

  • Разрыв синхронизации - Sync Break (посылается контроллером LIN)
  • Как минимум 13 битов - Начало кадра
  • Поле синхронизации - Sync Field (управляющая задача LIN)
  • 1 бит - Ограничитель синхронизации
  • 0x55 (8-битные данные, старт стоп биты) – Используется для синхронизации
  • Поле идентификатора - Identifier Field (посылается контроллером LIN)
  • 8 бит данных, старт стоп биты
  • Биты с 0 по 3 - LIN ID
  • Биты с 4 до 5 - Управление длиной
  • Биты с 6 по 7 – Четность
  • Поле данных - Data Field (посылается подчиненным LIN) 2, 4 или 8 байтов (каждый из 8-битных данных, старт стоп битов)
  • 8-битная контрольная сумма (посылается подчиненным LIN)
  • Дополнительная информация

  • Приложение E содержит информацию о назначении контактов нескольких наиболее широко используемых коннекторов В/В.
  • Книги Parallel Port Complete и Serial Port Complete, написанные Jan Axelson и опубликованные издательством Lakeview Research (www.lvr.com) содержат исчерпывающее описание использования параллельного и последовательного портов.
  • При отладке последовательного устройства, соединенного с настольным ПК, эмулятор терминала RealTerm выводит больше информации и поддерживает больше форматов данных, чем программа HyperTerminal, имеющаяся в Windows. Она доступна для свободной загрузки по адресу: http://realterm.sourceforge.net/
  • Для тестирования и отладки устройств I2C или SPI доступен дешевый адаптер USB/последовательный с I2C/SPI, который работает с RealTerm (http://i2cchip.com). Многие новые осциллографы также декодируют I2C и SPI (см. упражнение 1).
  • Технический справочник по интерфейсу оборудования IBM PS/2 корпорации IBM 1988 г. содержит исходную информацию по PS/2 для клавиатуры и мыши в главе "Клавиатура и контроллер вспомогательных устройств".
  • Книга Rapid Prototyping of Digital Systems, автора James Hamblen также содержит информацию о параллельном, последовательном и дополнительном PS/2 интерфейсах, включая скан-коды, команды, и форматы пакетов данных. Скан коды, обычно используемые в ПК, можно найти также в Web и во многих справочниках по ПК.
  • Книга Indispensable PC Hardware Book 4th Edition, автора Hans-Peter Messmer, содержит много дополнительных подробностей об унаследованном оборудовании ПК.
  • Полная спецификация I2C доступна на сайте Philips Semiconductors (www.phillipssemiconductor.com), а SMB на сайте (www.smbus.org). Руководство по Motorola MC68HC11 (www.freescale.com) и различные руководства National Semiconductor (www.national.com) содержат дополнительную информацию о SPI. Аналоговые устройства (http://www.analog.com) составляют большое разнообразие дешевых конверторов A/D и D/A с интерфейсами SPI и параллельным портом.
  • Форум USB Implementers был основан компаниями, которые разработали спецификацию USB www.usb.org.
  • Свободно доступное руководство по основам USB можно найти по адресу http://www.beyondlogic.org/usbnutshell/usb1.htm.
  • Книги USB Complete, автора Jan Axelson, и USB Design by Example, автора John Hyde, содержат дополнительную информацию по созданию устройств USB.
  • Проекты общедоступного исходного кода для CE, включающие драйверы USB Web Cam и Phidgets доступны по адресу http://msdn.microsoft.com/embedded/community/ community/CommunityProjects/.
  • Лабораторные упражнения

  • Многие более новые логические анализаторы и многоканальные осциллографы являются встроенными устройствами, которые имеют встроенное или дополнительное программное обеспечение для декодирования и вывода сигналов шины RS232, SPI, I2C, USB, CAN, или LIN, как показано на рис 3.13(рис 3.13) Tektronix DPO7000 1-4 Channel Oscilloscope является встроенным устройством, которое использует Windows XP. Показанный выше вывод создается дополнительным программным пакетом для осциллографа, который декодирует и выводит сигналы шины SPI. Изображения с разрешения Prodigy Test Solutions (рис 3.14) Tektronix DPO7000 1-4 Channel Oscilloscope является встроенным устройством, которое использует Windows XP. Показанный выше вывод создается дополнительным программным пакетом для осциллографа, который декодирует и выводит сигналы шины I2С. Изображения с разрешения Prodigy Test Solutions
  • Если у вас есть один из дешевых доступных адаптеров USB/последовательный в I2C/SPI (http://i2cchip.com) или другое устройство с аналогичными возможностями, соедините его с рассматриваемым датчиком I2C. Запустите приложение RealTerm на настольном ПК, пошлите команды датчику, и скопируйте некоторые показатели данных с датчика.
  • Используя один из программных или аппаратных анализаторов протокола USB, скопируйте некоторые пакеты USB из устройства USB, присоединенного к настольному ПК. Попробуйте объяснить значение пакетов.
  • Вернуться к учебному плану