Режимы BitBang для микросхем FT232R и FT245R |
![]() |
Добавил(а) microsin | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[1. Введение] Режим Bit Bang является специальным режимом для микросхем FT232R и FT245R, который превращает 8 линий ввода/вывода (IO lines) в 8-битную двунаправленную шину данных. Поэтому этой шиной данных можно произвольно управлять с компьютера и читать с этих выводов данные. Этот режим поддерживается драйвером D2XX [3] и библиотекой функций FTD2XX.DLL. Примеры программ [4] доступны для многих популярных языков программирования (C++ Builder, C#, Delphi, LabVIEW, Visual Basic, Visual C++ и других).
Имеется 3 типа режима Bit Bang для FT232R: - Режим асинхронного Bit Bang (Asynchronous Bit Bang Mode), который аналогичен режиму Bit Bang для микросхем FTDI серий BM и C (например FT232BM, FT245BM), с добавлением стробов чтения и записи (Read, Write strobes) в случае FT232R. Режимы Asynchronous и Synchronous Bit Bang разрешаются командами драйвера, в то время как режим CBUS Bit Bang должен быть предварительно настроен через EEPROM устройства, и затем разрешен командой драйвера. Для FT232R память EEPROM встроена в саму микросхему FT232R. Для FT245R память EEPROM отсутствует, поэтому некоторые возможности и режимы для FT245R недоступны. [2. Режим Asynchronous Bit Bang] Асинхронный режим Bang (Asynchronous Bit Bang mode) работает точно так же, как соответствующий режим Bit Bang микросхем FTDI серии BM. Любые данные, записываемые в устройство обычным образом, будут самостоятельно выводиться на ножки данных микросхемы, которые сконфигурированы как выходы. Каждая ножка может быть независимо от других настроена как вход или как выход. Скорость выдачи данных на выход определяется генератором скорости (Baud rate generator). Чтобы данные (на выходе) изменились, должны быть записаны новые данные и должен произойти тик генератора скорости. Если в устройство не записываются новые данные, то ножки микросхемы останутся в последнем записанном в них состоянии. Когда разрешен режим Asynchronous Bit Bang, ножки IO конфигурируются следующим образом:
Таблица 2.1. Конфигурации IO режима Asynchronous Bit Bang. Рис. 2.1. Ножки D7..D7 на плате FT232R-Breakout [1]. В случае микросхемы FT232R любая из ножек CBUS0, CBUS1, CBUS2 или CBUS3 может быть сконфигурирована для вывода внутренних стробов RD# или WR#, когда FT232R находится в режиме Asynchronous Bit Bang. Это работает так же, как и в расширенном режиме асинхронного Bit Bang (Enhanced Asynchronous Bit Bang) микросхем FT2232 [2]. Альтернативно выводы CBUS могут использоваться для предоставления тактовых сигналов путем соответствующей настройки значений в EEPROM. Ножки CBUS должны быть сконфигурированы в FT232R EEPROM. Эта возможность недоступна для FT245R.
Таблица 2.2. Настройки ножек CBUS. Рис. 2.2. Ножки CBUS (C0..C3) платы FT232R-Breakout [1]. Нужно выполнить несколько команд драйвера D2XX [3], чтобы можно было использовать режим Asynchronous Bit Bang. Эти команды перечислены в таблице:
Таблица 2.3. Команды D2XX Примечание к таблице 2.3: команда FT_SetBitMode может использоваться только один раз для установки какого-либо одного режима. Полное описание этих функций можно найти в руководстве программиста D2XX [3]. Примеры кода на многих языках программирования можно найти по ссылке [4]. [3. Режим Synchronous Bit Bang] Синхронный режим Bit Bang (Synchronous Bit Bang mode) аналогичен соответствующему режиму Synchronous Bit Bang микросхемы FT2232 [2]. В режиме синхронного Bit Bang данные выдаются наружу только если в устройстве есть место для данных, которые будут прочитаны из ножек. В этом синхронном режиме сначала будут прочитаны ножки шины данных, перед тем как будет отправлен наружу байт при передаче. Поэтому для вывода 1 байта на выход и чтения входов для байта, который был только что послан, нужно послать также другой байт. Пример: - Сначала выводы находятся в состоянии 0xFF. - Сначала выводы находятся в состоянии 0xFF. Интервалы времени для режима Synchronous Bit Bang показаны на рисунке и пояснены в таблице: Рис. 3.1. Временные диаграммы Synchronous Bit Bang
Таблица 3.1. Временные диаграммы Synchronous Bit Bang Для того, чтобы данные были изменены, нужно записать новые данные и должен произойти тик генератора скорости. Если в устройство не записываются новые данные, то ножки микросхемы останутся в последнем записанном в них состоянии. Когда разрешен режим Synchronous Bit Bang, ножки IO конфигурируются следующим образом:
Таблица 3.2. Конфигурации IO режима Synchronous Bit Bang Как Вы можете заметить, таблица 3.2 полностью совпадает с таблицей 2.1 (режима Asynchronous Bit Bang). Рис. 3.2. Ножки D7..D7 на плате FT232R-Breakout [1]. Точно так же, как и в асинхронном режиме, в случае микросхемы FT232R, работающей в синхронном режиме, любая из ножек CBUS0, CBUS1, CBUS2 или CBUS3 может быть сконфигурирована для вывода внутренних стробов RD# или WR#. Это работает так же, как и в расширенном режиме синхронного Bit Bang (Enhanced Synchronous Bit Bang) микросхем FT2232. Альтернативно выводы CBUS могут использоваться для предоставления тактовых сигналов путем соответствующей настройки значений в EEPROM. Ножки CBUS должны быть сконфигурированы в FT232R EEPROM. Эта возможность недоступна для FT245R.
Таблица 3.3. Настройки ножек CBUS. Как Вы можете заметить, таблица 3.3 полностью совпадает с таблицей 2.2 (режима Asynchronous Bit Bang). [Настройки ножек CBUS платы FT232R-Breakout [1]] Нужно выполнить несколько команд драйвера D2XX [3], чтобы можно было использовать режим Asynchronous Bit Bang. Эти команды перечислены в таблице:
Таблица 3.4. Команды D2XX Можно заметить, что команды синхронного режима почти полностью повторяют команды асинхронного режима (таблица 2.3). Отличие только в значении, передаваемой командой установки режима FT_SetBitMode. Полное описание этих функций можно найти в руководстве программиста D2XX [3]. Примеры кода на многих языках программирования можно найти по ссылке [4]. [4. Режим CBUS Bit Bang] Микросхема FT232R поддерживает новый тип режима Bit Bang для ножек CBUS. Чтобы режим CBUS Bit Bang мог начать работу, он должен быть предварительно сконфигурирован в FT232R EEPROM, и затем разрешен командой FT_SetBitMode. Режим CBUS Bit Bang недоступен для FT245R. Когда разрешен режим CBUS Bit Bang, ножки CBUS микросхемы FT232R конфигурируются следующим образом:
Таблица 4.1. Настройки выводов режима CBUS Bit Bang. Рис. 4.1. Ножки CBUS (C0..C3) платы FT232R-Breakout [1]. Для обмена данными в режиме CBUS Bit Bang требуются D2XX-команды FT_SetBitMode и FT_GetBitMode. Поскольку эти функции позволяют передать или принять только 1 байт, то эта версия Bit Bang намного медленнее, чем асинхронные и синхронные типы Bit Bang, когда используется для передачи больших буферов данных командами FT_Write и FT_Read. Однако режим CBUS Bit Bang предоставляет 4 дополнительные линии IO для FT232R. Скорость обмена данными ограничена скоростью выдачи фреймов USB (обычно 1000 раз в секунду). Команды D2XX, которые нужны для использования режима CBUS Bit Bang, перечислены в таблице:
Таблица 4.2. Команды D2XX Примеры использования: - Настройка всех ножек как выходов с битом 0 в состоянии лог. 1: FT_SetBitMode(Handle, 0xF1, 0x20). Полное описание этих функций можно найти в руководстве программиста D2XX [3]. Примеры кода на многих языках программирования можно найти по ссылке [4]. [Ссылки] 1. Плата FT232R-Breakout. |