Форма входа

Поиск



Счетчик посетителей

Рейтинг@Mail.ru

Разработано jtemplate модули Joomla

Адаптер USB – FIFO

С развитием компьютерной техники постоянно усложняется задача самодеятельных конструкторов, которые желают, что бы их устройства на микроконтроллерах могли связываться с компьютером, передавать туда информацию и получать команды управления. В настоящее время практически уже полностью вышли из употребления не только LPT порты, которые были удобнее всего для организации канала компьютер – микроконтроллер, но даже уже и COM порты. Мир переходит на всевластие USB. Однако, USB-канал, это очень сложное высокотехнологичное устройство, имеющее сложный многоуровневый алгоритм работы. Кроме того, использование USB протокола в своих разработках требует лицензирования, что для самодеятельных конструкторов и мелких конструкторских фирм очень накладно. Однако, спрос рождает предложение. Производители микросхем предлагают на сегодняшний момент множество вариантов решения этой проблемы. 

Так уже разработаны модели микроконтроллеров со встроенным каналом USB. Правда, в продаже их найти еще затруднительно, и стоят они дорого. Гораздо более распространен второй вариант: микросхема - адаптер USB-COM. Многие современные микроконтроллеры содержат в себе встроенный универсальный последовательный канал, который легко можно настроить в режим, аналогичный RS232. А, как известно, именно этот протокол использует для передачи информации COM порт. Причем не обязательно реализовывать полный COM интерфейс. Полный стандарт RS232 требует уровни сигналов на входе и выходе высокий: плюс 12В, низкий: минус 12В. В случае же, если вы используете микросхему адаптер USB-COM, то можете иметь дело с RS232, но сигналами TTL уровней (от 0 до +5В).

Существует еще программный метод эмуляции USB протокола. Однако в данной статье я хочу остановиться на другом, самом удобном на мой взгляд способе подключения вашего микроконтроллерного устройства через USB порт. Этот способ предлагает фирма FTDI Chip (Future Technology Devices International Ltd.). Это способ связи через так называемый адаптер USB-FIFO. Вообще то данная фирма выпускает целый спектр устройств, основанных на этом способе передачи информации. Однако мы рассмотрим в качестве примера самую простую и самую популярную микросхему этой фирмы: FT245R. Принцип работы остальных микросхем аналогичный.

И так, как же работает адаптер USB-FIFO. Основой адаптера является буфер FIFO. Акроним FIFO является сокращением от английского «First In, First Out» (Первым вошел, первым вышел). В вычислительной технике принцип FIFO соответствует структуре данных типа «очередь». Буфер – это несколько ячеек памяти, объединенных в единое устройство с определенной логикой работы. К нему можно применять операцию записи байта и операцию чтения байта. При записи байта он помещается в первую из ячеек памяти буфера. Если до следующего цикла записи байт не будет прочитан, то очередной байт запишется в следующую ячейку, итак далее. Когда все ячейки заполнятся, запись данных блокируется. Когда в буфер поступает запрос на чтение, логика FIFO помещает на выход тот, байт, который был записан первым. При следующем цикле чтения на выход выдается второй записанный байт. И так далее, пока очередь не исчерпается. Структура данных типа очередь позволяет оптимизировать обмен данными между двумя устройствами, у которых чтение и запись происходят в случайные моменты времени. Если некое устройство номер 1 в процессе своей работы изъявило желание передать байт данных в устройство номер 2, а устройство номер два в данный момент занято и не может принять байт, то устройство номер 1 просто записывает байт в очередь и продолжает свою работу. А устройство номер 2, когда освободится, считывает байт из очереди. Это позволяет обоим устройствам уменьшить периоды ожидания готовности друг друга.

В микросхеме FT245R в качестве устройства номер один используется USB интерфейс, подключенный к компьютеру, а в качестве устройства номер два микроконтроллер. Микроконтроллер подключается к микросхеме посредством простой шины данных, имеющей 8 линий (D0…D7) и 4 простые линии управления. USB интерфейс подключенный к компьютеру реализует виртуальный COM порт с которым ваша программа может работать как с обычным COM портом.

Рассмотрим структуру микросхемы FT245R подробнее.

Рис. 1. Блок-схема микросхемы FT245R.

На рисунке 1 показана внутренняя структура микросхемы FT245R. Как видим, микросхема имеет не один, а два буфера FIFO. Один буфер имеет размер 128 байт и используется для передачи информации из USB к микроконтроллеру. Второй буфер имеет размер 256 ячеек и используется для передачи данных от микроконтроллера к USB интерфейсу. Для работы всех систем микросхема имеет встроенный тактовый генератор с умножителем частоты, который может работать даже без внешнего кварцевого резонатора. Внешний кварц приходится ставить лишь при низких напряжениях питания (1,8 … 3.3В). Микросхема реализует полноскорострной аппаратный USB канал. Для питания USB интерфейса микросхема имеет встроенный стабилизатор 3,3В. Напряжение с выхода стабилизатора так же подается на специальный внешний вывод микросхемы (3V3OUT) и может при необходимости быть использовано для питания маломощных устройств внешней периферии. Микросхема так же имеет встроенную энергонезависимую память EEPROM, которая используется для хранения настроек. При помощи этих настроек можно изменять некоторые режимы работы микросхемы. Чтение и изменение содержимого EEPROM производится при помощи специальной программы FT_Prog, которую можно скачать на сайте производителя по адресу: http://www.ftdichip.com/Support/Utilities.htm

 

Назначение выводов микросхемы FT245R

Группа выводов сигналов USB.
Контакт
SSOP
Контакт
QFN-32
НаименованиеТипОписание
15 14 USBDP I/O Линия данных USB Плюс. Содержит внутренний последовательный резистор 1.5кОм и подтягивающий резистор к линии 3.3В.
16 15 USBDM I/O Линия данных USB< Минус. Содержит встроенный последовательный резистор.
 
Группа выводов питания и заземления.
Контакт
SSOP
Контакт
QFN-32
НаименованиеТипОписание
4 1 VCCIO PWR +1.8В … +5.25В – питание для группы выводов FIFO Интерфейса (1-3, 5, 6, 9-14, 22, 23). В проектах использующих напряжение USB шины присоедините этот вывод к входу 3V3OUT, чтобы получить напряжение +3.3В. В проектах использующих CMOS уровни подключите вывод к линии VCC (напряжение 5В). На этот вывод так же можно подавать напряжение от внешнего источника +1.8В … +2.8В для работы на более низких уровнях. Причем это внешнее напряжение должно быть сформировано из того же самого источника, что и основное питание VCC. Для этого нужно применить стабилизатор напряжения, получающий питание от линии +5В шины USB.
7, 18, 21 4, 17, 20 GND PWR Общий вывод всех цепей питания микросхемы.
17 16 3V3OUT Output Выход +3.3В встроенного стабилизатора напряжения. Этот вывод должен быть соединен с общим проводом через конденсатор 100nF. Главное назначение этого стабилизатора – питание напряжением 3.3В цепей приемопередатчика USB интерфейса и питание подтягивающего резистора 1.5kОм для выхода USBDP. Кроме того стабилизатор может питать внешние схемы с током потребления до 50mA. Напряжение, снимаемое с этого вывода, может так же использоваться для подачи питающего напряжения на вывод VCCIO.
20 19 VCC PWR +3.3В … +5.25В – питание вычислительного ядра микросхемы. (см. Примечание 1)
25 24 AGND PWR Аналоговая земля – общий провод для напряжений питания умножителя тактовой частоты.
 
Группа выводов управления буфером FIFO
Контакт
SSOP
Контакт
QFN-32
НаименованиеТипОписание
1 30 D0 I/O Шина данных FIFO Бит 0
2 31 D4 I/O Шина данных FIFO Бит 4
3 32 D2 I/O Шина данных FIFO Бит 2
5 2 D1 I/O Шина данных FIFO Бит 1
6 3 D7 I/O Шина данных FIFO Бит 7
9 6 D5 I/O Шина данных FIFO Бит 5
10 7 D6 I/O Шина данных FIFO Бит 6
11 8 D3 I/O Шина данных FIFO Бит 3
12 9 PWREN# Output Низкий уровень на этом выходе свидетельствует о включении в режим USB, а высокий о приостановке USB. Может использоваться для управления внешним ключом на основе полевого транзистора с изолированным затвором и P-каналом (MOSFET). Такой ключ позволяет управлять питанием внешних микросхем в зависимости от уровня на выходе PWREN< *. Должен быть соединен с выводом VCCIO< через резистор 10 КОм.
13 10 RD# Input Вход записи данных в буфер FIFO через входы D0...D7. Запись байта в буфер FIFO происходит в момент перехода с высокого уровня на низкий на этом входе. Временную диаграмму смотрите в разделе 3.5. 
14 11 WR Input Вход чтения байта из буфера FIFO. При переходе на этом входе с высокого уровня на низкий очередной байт данных извлекается из буфера FIFO и подается на выводы D0... D7. Временную диаграмму смотрите в разделе 3.6. 
22 21 TXE# Output Выход готовности буфера FIFO для записи. При высоком уровне на этом выходе запись в буфер не возможна, при низком запись разрешена. (Запись производится отрицательным перепадом на входе WR). Пока идет процесс начального сброса этот выход переходит в третье состояние. Временную диаграмму смотрите в разделе 3.6.
23 22 RXF Output Вход готовности данных в буфере FIFO для чтения. Высокий уровень на этом входе возникает, если чтение данных не возможно. При низком уровне чтение разрешено. (Чтение производится импульсом низкого уровня на входе RD#). Пока идет процесс начального сброса этот выход переходит в третье состояние. Временную диаграмму смотрите в разделе 3.5. Если микросхема переведена в режим разрешения автоматического пробуждения (путем записи соответствующего кода во внутренний EEPROM микросхемы), данный вывод становится входом и используется для пробуждения USB интерфейса. Если USB переходит в режим приостановки обмена (о чем сигнализирует высокий уровень на выходе PWREN#) подача импульса низкого уровня на вход RXF длительностью не менее 20ms выводит USB из спящего режима и заставляет его возобновить обмен по USB шине.
 
Группа выводов «разное»
Контакт
SSOP
Контакт
QFN-32
НаименованиеТипОписание
8, 24 5, 12, 13, 23, 25, 29 NC NC Нет внешних соединений
19 18 RESET# Input Вход начального сброса (низкий активный уровень). Может использоваться внешним устройством, для перезапуска микросхемы FT245R. Если внешний сброс не требуется, можно оставить этот вход свободным или соединить с линией VCC.
26 26 TEST Input Переводит микросхему в режим проверки. В режиме нормальной работы должен быть соединен с общим проводом GND, иначе микросхема будет вести себя как дефектная.
27 27 OSCI Input Вход модуля генератора 12MГц. Использование не обязательно. Для нормальной работы можно оставить вход не подключенным. (Смотри примечание 2)
28 28 OSCO Output Выход модуля генератора 12MГц. Использование не обязательно. Для нормальной работы можно оставить вход не подключенным. (Смотри примечание 2).

 

Типовая схема подключения микроконтроллера к компьютеру через USB интерфейс при помощи микросхемы FT245R приведена ниже:

Рис. 2. Подключение микроконтроллера.

После того, как вы соберете данную схему, и подключите ее к USB разъему компьютера, операционная система тут же обнаружит новое устройство и предложит установить драйвера. Драйвера для данного устройства легко скачать с сайта производителя, Там вы найдете два вида драйверов.
Первый тип драйвера называется VCP (Virtual COM port). Он реализует, как видно из названия, виртуальный COM порт в компьютере и прикладные программы могут использовать его как стандартное COM устройство. Этот драйвер вы можете скачать по адресу: http://www.ftdichip.com/Drivers/VCP.htm
Второй тип драйвера называется D2XX. Этот драйвер после установки добавляет в операционную систему специализированную библиотеку функций (специальный DLL файл), предоставляющую программисту прямой доступ к USB функциям. Подробное описание этих функций имеется в специальном руководстве, которое так же можно скачать (правда, на английском языке) на сайте производителя (файл под названием D2XX Programmer's Guide). Драйвер D2XX для этой микросхемы и файл с описанием функций можно скачать по адресу: http://www.ftdichip.com/Drivers/D2XX.htm

После установки драйверов вы можете писать свои программы, работающие с FIFO. Любой байт, переданный через виртуальный COM порт или напрямую при помощи функций D2XX будет записан в выходной буфер FIFO микросхемы FT245R, от куда он может быть считан микроконтроллером. Если же микроконтроллер запишет байт в микросхему FT245R, это вызовет прерывание по COM порту или просто установит флаг готовности данных (в зависимости от настройки порта). Ваша программа на компьютере может просто считать байт из COM порта или воспользоваться функцией чтения из библиотеки D2XX. При этом очередной байт будет извлечен из входного буфера FIFO микросхемы FT245R. Ну а то, как интерпретировать передаваемые байты вы должны придумать сами.

В настоящее время на радиорынках Росии и СНГ можно встретить в продаже не только микросхему FT245R, но так же уже готовую плату адаптера как с уже установленными деталями, так и без. Ниже приведены внешний вид готовой платы и прилагаемая к ней принципиальная схема модуля.

Рис.3. Внешний вид модуля

Рис.4. Схема модуля

Мой сайт по 1С