Объявление

Свернуть
Пока нет объявлений.

Использование микросхемы FT245 для шины USB

Свернуть
X
Свернуть

  • Использование микросхемы FT245 для шины USB

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

    Во времена, когда я собирал свою первую приставку к РС, в любительских конструкциях царствовал последовательный порт RS232 и с помощью вставок из ассемблерного кода в программах легко реализовывался примитивный драйвер. Ситуация изменилась – на ноутбуках только USB, а „глумиться“ над регистрами операционная система не позволит (имеется в виду Windows2000 и выше).

    Для отработки технологии я составил простую схему (нажмите на картинку для ее увеличения) которая выполняет две функции: после нажатия кнопки отправляет в компьютер однобайтное число (которое компьютер отображает на экране); в свою очередь присланное число из компьютера выводит в двоичной форме на встроенный дискретный индикатор.
    Нажмите на изображение для увеличения. 

Название:	1341557812_02000000.jpg 
Просмотров:	1 
Размер:	675.5 Кб 
ID:	1432 />

    Не надо обращать внимание на ромбики в схеме (один нарисован у резонатора, другой – у выводов питания микроконтроллера) – это особенность программы KiCAD, которая имеет чисто условное значение. Чтобы не дергать микросхему из макетной платы, предусмотрено внутрисхемное программирование. В таком случае между выводами микроконтроллера (RB6 и RB7, к которым подключается программатор) и остальной схемой необходим разместить разделяющие резисторы (на схеме R1 и R2). Все устройство удобно размещается на макетной плате.
    Нажмите на изображение для увеличения. 

Название:	1341557812_04000000.jpg 
Просмотров:	1 
Размер:	90.7 Кб 
ID:	1433 />
    Для решения проблемы связи с РС я когда-то выбрал продукцию фирмы FTDI [1]. Не буду утверждать, что и сейчас это лучший вариант, но просто необходимости нового поиска у меня пока не возникало. Для экспериментов взял модуль DLP USB245M [2]. Это старый модуль, но перед более новым у него есть одно преимущество – выводы шины данных расположены рядом, один за другим. Сильно упрощенная структура модуля выглядит следующим образом.

    Нажмите на изображение для увеличения. 

Название:	1341557812_05000000.jpg 
Просмотров:	1 
Размер:	85.2 Кб 
ID:	1434 />
    Все данные проходят по общей шине. Используются также два управляющих (WR и RD) и два сигнализирующих сигнала (TXE и RXF).

    Если TXE=1, то буфер передачи заполнен полностью, т.е. перед тем как передать компьютеру очередной байт необходимо подождать когда освободиться место в очереди. Если RXF=0, то в буфере приема есть хотя бы один байт, т.е. компьютер уже что-то передал.

    Если в буфере приема есть хотя бы один байт, то для его считывания необходимо переключить сигнал RD с лог.1 в лог.0. Тогда один байт выведется на выводы шины данных. Для отправки данных в компьютер необходимо выставить байт на выводах шины и переключить сигнал WR с лог.1 в лог.0. В алгоритме работы программы, которая сначала принимает байт из компьютера (если есть), а затем передает туда сама, SB1 – кнопка (если кнопка нажата, то SB1=1 ).

    Нажмите на изображение для увеличения. 

Название:	1341557812_06000000.gif 
Просмотров:	1 
Размер:	44.1 Кб 
ID:	1435 />
    Текст программы приведен в приложении. Надо отметить, что для уменьшения объема текста проигнорированы некоторые особенности конструкции. Во-первых, при нажатии кнопки клавиатурного типа происходит дребезг контактов [3], в результате чего микроконтроллер получает не один импульс, а несколько десятков. Во-вторых, пока кнопка нажата программа успеет пройти весь цикл тысячи раз. В результате всего этого при однократном нажатии кнопки компьютер получит не один байт, а несколько тысяч. Это довольно просто устраняется программным путем, но так как сейчас это не принципиально, я не стал усложнять программу.

    На первых порах даже нет необходимости писать собственную программу для компьютера – можно использовать стандартные для работы с последовательным портом. Могу порекомендовать две: „DLP Test“ от фирмы FTDI и программу стороннего автора „RH_com“.
    Нажмите на изображение для увеличения. 

Название:	1341557812_08000000.gif 
Просмотров:	1 
Размер:	68.0 Кб 
ID:	1436 />
    Для "DLP Test" следует использовать следующую последовательность работы: 1) в окне „Select Driver“ выбрать пункт „VCP“; 2) в окне „Port“ установить нужный номер (если все правильно, то рядом появится надпись „Port Ready“). Все, устройство подключено. Одно замечание – перед тем как отправить число в Ваше устройство, не забудьте установить номер конкретного байта в окне „Xmit“ (фактически, в окошках „Send To target“ записываются возможные варианты чисел и именно „Xmit“ указывает какой конкретно байт будет использован).
    Теперь вторая половина – компьютер. Для программирования использовалась среда Microsoft Visual Basic 2008 Express Edition. Если используется операционная система Windows7, то при первом подключении USB модуля компьютер сам поставит драйвер эмулирующий СОМ-порт. В противном случае необходимо скачать драйвер с сайта производителя или его представителей.

    Нажмите на изображение для увеличения. 

Название:	1341557812_10000000.jpeg 
Просмотров:	1 
Размер:	85.5 Кб 
ID:	1437 />
    Для использования последовательного порта его с начала необходимо открыть. Один из вариантов подробно описан в русскоязычной версии MSDN [4]. Ниже приведен текст, оформленный в виде самостоятельной подпрограммы, которая открывает порт, записывает байт в порт и закрывает его. Вызов подпрограммы осуществляется командой SendSerialData(32), где 32 – число, которое необходимо отправить в порт.

    "ПЕРВЫЙ ВАРИАНТ" инициализации последовательного порта
    Sub SendSerialData(ByVal cifra As Integer) " Отправляет в порт значение переменной "cifra" (при вызове подпрограммы указывается в скобках)
    Dim cifra2(1) As Byte " Описывается массив
    " Открывается порт и указываются параметры его работы
    Using SelectedPort As IO.Ports.SerialPort = My.Computer.Ports.OpenSerialPort("COM3", 9600, IO.Ports.Parity.None, 8, IO.Ports.StopBits.One)
    SelectedPort.WriteTimeout = 3000
    cifra2(0) = cifra
    SelectedPort.Write(cifra2, 0, 1) " В порт отправляется байт данных (из массива "cifra2" ; смещение 0 (от нулевого байта); один байт)
    SelectedPort.Close() " Порт закрывается
    End Using
    End Sub

    Необходимо немного подробнее рассмотреть команду “SelectedPort.Write “. Если написать просто SelectedPort.Write(cifra), то в порт уйдет номер символа из таблицы кодировки (например, вместо числа 32 программа отправит код символа «3»). Причем по-умолчанию используется 7-ми битная таблица ASCII – максимальный код 127 [5].
    В подпрограмме считывания данных из внешнего модуля я применил немного другой способ, который отлично описывается в [6] (хотя, в принципе, разница там микроскопическая). Надо принимать во внимание, что компьютер примет только те байты, которые были отправлены микроконтроллером в USB-модуль уже после открытия порта, все остальные он проигнорирует (для данной программы это означает, что сначала надо нажать виртуальную кнопку „Загрузка“, а потом кнопку микроконтроллера).

    Литература:
    1. Internet – FTDI. http://www.ftdichip.com
    2. Internet – FTDI. DLP Modules. http://www.ftdichip.com/Products/Modules/DLPModules.htm
    3. Internet - Подавления дребезга механических контактов. http://www.radioman.ru/teoria/1/mop_drebezg.php
    4. Internet – Библиотека MSDN (по-русски). http://msdn.microsoft.com/ru-ru/library/ms123401
    5. Internet – Таблица кодировки символов ASCII. http://arduino.ru/Reference/ASCIIchart
    6. Internet – Serial Port Using Visual Basic .NET and Windows. http://www.me.umn.edu/courses/me2011...al-port-vb.pdf

    Файлы в архиве:
    • Ассемблерная программа для МК
    • Весь проект в Visual Basic

      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • Стандартный параллельный интерфейс на PC
      admin
      Основным назначением интерфейса Centronics (аналог-ИРПР-М) является подключение к компьютеру принтеров различных типов. Поэтому распределение контактов разъема, назначение сигналов, программные средства управления интерфейсом ориентированы именно на это использование. Вто же время с помощью данного интерфейса можно подключать к компьютеру и другие внешние устройства, имеющие разъем Centronics, а также специально разработанные УС.

      Основным достоинством использования Centronics для подключения УС по сравнению с ISA является значительно меньший риск вывести компьютер из строя. Главный недостаток этого подхода - значительно меньшая скорость обмена. Назначение 36 контактов разъема Centronics приведено в таблице 1.

      Таблица 1. Назначение контактов разъемов Centronics

      1 /STROBE Out Strobe (Строб)
      2 D0 Out Data Bit 0
      3 D1 Out Data Bit 1
      4 D2 Out Data Bit 2
      5 D3 Out Data Bit 3
      6 D4 Out Data Bit 4
      7 D5 Out Data Bit 5
      8 D6 Out Data Bit 6
      9 D7 Out Data Bit 7
      10 /ACK In Acknowledge (Подтверждение)
      ...
      08.02.2017, 22:45
    • Современные микросхемы драйверов RS-485 фирмы MAXIM
      admin
      Журнал «Схемотехника» №10 2002 г.
      Олег Николайчук
      Целью настоящей статьи является ознакомление читателей с современными микросхемами драйверов сети RS485 фирмы MAXIM, их основными параметрами и особенностями.
      Интерфейс RS485 наиболее часто используется при создании современных локальных сетей различного назначения, как в промышленных изделиях, так и в любительской практике. Основными преимуществами интерфейса являются:
      • Относительно низкая себестоимость микросхем драйверов, что снижает стоимость аппаратной реализации сетевых диспетчеров, т.е. узлов связи между сетевой средой (линиями связи) и ядром станции (узла) сети, т.е. микроконтроллерной или микропроцессорной системой;
      • Использование в сетях на базе интерфейса RS485 всего трех проводов (третий, общий, не всегда является обязательным), что значительно снижает себестоимость всей системы, поскольку известно, что себестоимость сетевой среды современных локальных сетей практически всегда составляет более 60% от стоимости всей системы;
      • Микросхемы драйверов имеют малые габаритные размеры. Наиболее часто используются микросхемы, выполненные в корпусе DIP8 со стандартным расположением выводов, ставшим , промышленным стандартом. Микросхемы драйверов используют всего несколько дискретных элементов для цепей защиты, использование которых не является обязательным. Малые габаритные размеры микросхем драйверов и минимальное количество обвязки экономит площадь печатной платы, что также положительно сказывается на стоимости системы;
      • Современные микросхемы имеют достаточно низкое энергопотребление, многие из них при отсутствии активности в сети автоматически переходят в режим экономии, что снижает энергопотребление системы;
      • Современные микросхемы драйверов имеют повышенную нагрузочную способность. Если раннее большинство микросхем было насчитано на работу с 32 станциями, то современные модели обеспечивают нормальное функционирование до 256 станций;
      • В настоящее время выпускаются микросхемы в высокой предельной скоростью передачи. Это позволяет создавать высокоскоростные сети, и снижает количество ошибок в сети за счет улучшения формы передаваемого сигнала;
      • Драйверы интерфейса RS485 имеют достаточно простое управление. Особенности организации сетей, их схемотехника, способы управления доступом к каналу и примеры программирования достаточно описаны [1-11].
      • Микросхемы интерфейса RS485 выпускают многие фирмы мира [12]. Однако несомненным лидером в разработке и выпуске новых микросхем драйверов является известная фирма MAXIM [13]. В настоящее время фирма выпускает более 80 типов микросхем драйверов интерфейса RS485/422.
      Все микросхемы драйверов можно условно разделить на 4 группы: микросхемы с питанием +5 В, микросхемы с расширенным диапазоном питания от 3 до 5.5 В, низковольтные микросхемы с питанием 3.3 В и микросхемы со встроенной оптической изоляцией. Основные технические характеристики этих групп микросхем приведены в таблицах 1 — 4 соответственно.
      В приведенных таблицах приняты следующие обозначения:
      В колонке «Разрешение RxD»: P — обозначает, что управляющий вход приемника переключает его либо в открытое состояние, либо переводит его в режим энергосбережения, O — означает, что управляющий вход тоько включает/выключает приемник.
      В колонке «Режим»: H — означает полудуплексный режим, т.е. интерфейс RS485, F — обозначает полный дуплексный режим, т.е. интерфейс RS422.
      Прежде чем приступить к анализу таблиц, определим критерии отбора микросхем для последующего рассмотрения. Мы ставим своей целью ознакомление читателя с широко используемыми микросхемами интерфейса RS485 (но не RS422), т.е. с микросхемами, работающими в полудуплексном режиме, которые в колонке «Режим» имеют символ «H». У этих микросхем входы приемника объединены с выходами передатчика и образуют две линии приема/передачи, «A» и «B». Мы не будем рассматривать ряд микросхем, содержащих только приемники или только передатчики, поскольку их применение также весьма ограничено. И наконец, мы будем рассматривать только микросхемы, выпускаемые в корпусе с восемью выводами (кроме микросхем со встроенной оптической изоляцией и микросхем в корпусе 6/5/SO), как наиболее распространенные и используемые.
      Таблица 1. Микросхемы драйверов интерфейса RS485/422 с питанием +5 В
      ТИП Нали чие TxD Нали чие RxD Разре шение TxD Разре шение RxD Состо яние RxD Режим Быстро действие, Mbps Кол-во стан ций Защ ита ESD Пит ание, V Ток потре бления, mA Ток эко номии, чA Корпус
      MAX1481 1 1 NC F 0.25 256 - 5 0.3 0.1 10/µMAX
      MAX1482 1 1 O F 0.25 256 - 5 0.02 0.1 14/PDIP.300
      14/SO.150
      MAX1483 1 1 O H 0.25 256 - 5 0.02 0.1 8/µMAX
      8/PDIP.300
      8/SO.150
      MAX1484 1 1 NC F 12 256 - 5 0.3 - 10/µMAX
      MAX1485 1 1 - NC H- F 0.25 256 - 5 0.3 - 10/µMAX
      MAX1486 1 1 - NC H- F 12 256 - 5 0.3 - 10/µMAX
      MAX1487 MAX1487E 1 1 O H 2.5 128 -
      ±15kV
      5 0.23 - 8/µMAX
      8/PDIP.300
      8/SO.150
      MAX3040 4 0 - - - 0.25 - ±10kV 5 1 0.002 16/SO.150
      16/SO.300
      16/TSSOP
      MAX3041 4 0 - - - 2.5 - ±10 kV 5 1 0.002 16/SO.150
      16/SO.300
      16/TSSOP
      MAX3042B 4 0 - - - 20 - ±10 kV 5 1 0.002 16/SO.150
      16/SO.300
      16/TSSOP
      MAX3043 4 0 - - - 0.250 - ±10 kV 5 1 0.002 16/SO.150
      16/SO.300
      16/TSSOP
      ...
      08.02.2017, 22:45
    • Системный контроллер ввода-вывода для сопряжения шин PCI и ISA
      admin
      Журнал «Chip News» №6 2001 г.
      Ракович Н. Н.
      Мы уже беседовали на страницах журнала о продукции компании Winbond [Л.1], выпускающей широкую гамму разнообразных микросхем, начиная с памяти и микроконтроллеров и заканчивая приборами для мобильных средств связи и распознавания речи. Примерно в середине этого списка находятся ИС для компьютеров. В данной статье рассмотрим контроллеры ввода-вывода W83С553F и W83С554F, которые выполняет функции моста между шинами PCI и ISA. Тема эта должна быть интересна хотя бы уже потому, что смена поколений компьютеров требует от разработчиков встроенных плат с интерфейсом ISA стремительной модернизации оборудования, с тем, чтобы не потерять своих заказчиков.

      Терминология (более чем кратко)....
      08.02.2017, 22:45
    • Реализация последовательной асинхронной передачи данных в микроконтроллерах PIC
      admin
      Введение.
      Серия PIC16Cxx от Microchip Technology, Inc. - это второе поколение высокопроизводительных восьмиразрядных микроконтроллеров на базе EPROM. Некоторые микроконтроллеры из этой серии (например PIC16C71 и PIC16C84) не имеют встроенного последовательного асинхронного порта. Эта статья содержит описание последовательного асинхронного интерфейса ( полудуплексное RS-232 соединение ) с программной обработкой прерывания для микроконтроллеров PIC16Cxx. Эти микроконтроллеры могут работать на очень большой скорости, с минимальной длительностью такта 250нс ( при частоте 16МГц ). Для тестирования RS-232 режима предлагается использовать простой цифровой вольтметр / систему опроса данных ( Digital Volt Meter / Analog Data Acquisition Systems ) выполненный на PIC16C71, Этот прибор принимает команды от ПК и передает обратно восмибитные значения с выбранного АЦП канала.

      Реализация.
      Ниже приведено подробное описание реализации полудуплексного RS-232 интерфейса с программной обработкой прерывания для PIC16C71. В программе примера в качестве передающего выхода используется RB7, а для приема – RTCC/RA4. Конечно, и вход и выход соединяются через соответствующий преобразователь уровней сигнала RS-232 / ТТЛ. Описание преобразователя уровней напряжения дано в разделе Аппаратная часть.

      Режим передачи. Передающий режим в программе напрямую связан с и...
      08.02.2017, 22:45
    • Простой конвертер RS-232-TTL
      admin

      Журнал «Схемотехника» №1 2000 г.
      Александр Нечаев
      При разработке различного рода электронных устройств с использованием микроконтроллеров очень часто оказывается полезной возможность подключения их к персональному компьютеру через последовательный порт. Однако напрямую это сделать невозможно, поскольку по стандарту...
      08.02.2017, 22:45
    • Программирование портов ввода/вывода LPT и ISA
      admin
      Данный материал основан на моём (его) личном опыте работы с материнской платой неизвестного (нет, не солдата) производителя. Чипсет - SIS. Если вдруг в Вашем случае дело будет обстоять другим образом, напишите мне. Также хочу сразу предупредить - я не профессиональный программист!!! Поэтому не ругайте меня за отсутствие проф. терминов, может быть кривых объяснений или ещё каких недочётов,...
      08.02.2017, 22:45
    Обработка...
    X