Vinculum VNC1L-1A - первый из семейства Vinculum - устройств со встроенной интегральной схемой хост-контроллера*
USB от FTDI. Он не только способен обрабатывать интерфейс хоста USB и
функции передачи данных, но и благодаря встроенному MCU и
интегрированной Flash-памяти, Vinculum также может инкапсулировать
классы устройств USB. При подключении запоминающих устройств большой
ёмкости, таких как flash-накопители USB, Vinculum также прозрачно
работает и с файловой структурой FAT, взаимодействуя через UART,
параллельный FIFO или SPI интерфейс при помощи простого набора команд.
Vinculum представляет собой новое рентабельное решение для реализации
хоста USB в изделиях, у которых до этого не было необходимых аппаратных
ресурсов.
VNC1L-1A выпускается в компактном 48-выводном корпусе LQFP без содержания свинца (совместим с RoHS).
* host controller - ведущий контроллер.
Этот документ описывает версию 3.5 прошивки VDAP для Vinculum
VNC1L - интерфейса USB flash-накопителя или USB-устройства с диспетчером
команд. VDAP в качестве диспетчера команд использует только настраиваемый интерфейс ввода/ввода
VNC1L. Интерфейс ввода/вывода настраивается с помощью набора перемычек,
которые подтягивают к плюсу или к минусу два определенных вывода VNC1L.
Эти перемычки используются для выбора либо интерфейса UART, либо
параллельного FIFO, либо интерфейса SPI.
Основное назначение этой прошивки - позволить устройству,
основанному на VNC1L, взаимодействовать с периферийным ведомым
USB-устройством через порт интерфейса UART, параллельного FIFO или SPI
VNC1L-1A. В качестве периферийных USB-устройств могут использоваться USB
flash-накопитель, USB-ведомые интегральные схемы FT232, FT245 и FT2232
производства FTDI, а также принтер- или HID-совместимое*
устройство. Также могут поддерживаться и другие устройства, если у них
есть подходящий интерфейс, например, такие как мобильные телефоны.
*HID - Human Input Device - устройство ввода данных человеком.
Рис. 1. Vinculum VNC1L-1A от FTDI
Описание аппаратной части интегральной схемы Vinculum VNC1L
смотрите в отдельном техническом описании, которое доступно на сайте
Vinculum: http://www.vinculum.com.
Прошивка VDAP (Vinculum Disk And Peripheral interface) -
предназначена, чтобы позволить устройству Vinculum VNC1L работать в
качестве интерфейса между USB flash-накопителем (или другим устройством
класса USB-накопителей), подключенным к USB-порту 2, и интерфейсом
ввода/вывода VNC1L или подключенным к USB-порту 1 подходящим
периферийным USB-устройством от FTDI. Эта прошивка позволяет настраивать
интерфейс ввода-вывода VNC1L на UART, параллельный FIFO или SPI с
помощью внешних перемычек. Устройство, подключенное к последовательному
UART, параллельному FIFO или SPI-интерфейсу, может выдавать команды,
которые позволяют выполнять различные операции над USB flash-накопителем
и/или ведомым USB-устройством с помощью набора команд, описанного в
данном документе. Порт VNC1L, настроенный на приём этих команд,
называется портом диспетчера команд. Для прошивки VDAP в качестве порта диспетчера команд всегда используется только порт ввода-вывода VNC1L, то есть последовательный UART, параллельный FIFO или SPI-интерфейс.
Данная прошивка поддерживает все ведомые USB-устройства
производства FTDI (например, FT232R, FT245R, FT232B, FT245B и FT2232D), а
также допускается поддержка класса принтеров и класса HID-устройств.
USB flash-накопитель можно подключать только на USB-порт 2.
Прошивка VDAP всегда использует в качестве порта диспетчера команд
порт ввода-вывода VNC1L. С помощью перемычек выбирается режим UART,
параллельного FIFO или SPI.
USB-порт 1 - порт хоста USB для подключения периферийного
устройства, основанного на интегральной схеме ведомого USB производства
FTDI.
USB-порт 2 доступен только для подключения USB flash-накопителя (или другого устройства класса USB-накопителей).
Прошивка VDAP будет использовать в качестве порта диспетчера
команд режим интерфейса с устройством, выбранный перемычками на выводах ACBUS5 (вывод 46) и ACBUS6 (вывод 47). Выбор перемычек показан на Рис. 2.
По умолчанию, если перемычки отсутствуют, эта схема настроена на
интерфейс UART. Настройка выводов перемычек для выбора порта приведена в
Таблице 2.1.
Сопряжение порта UART / FIFO / SPI с FT232 / FT245 работает в
режиме команд или режиме данных подобно модему. Режим команд
используется для взаимодействия с VNC1L. Режим данных используется для
взаимодействия с ведомым устройством на USB-порту 1 или 2. Команды
предназначены и для настройки UART VNC1L, и для настройки ведомого
UART-устройства от FTDI, подключенного к USB-порту 1.
Рис. 2. Схема прошивки VDAP
Таблица 2.1. Настройка выводов перемычек для выбора порта
ACBUS6 (вывод 47) | ACBUS5 (вывод 46) | Режим |
Подтяжка к плюсу | Подтяжка к плюсу | Последовательный UART |
Подтяжка к плюсу | Подтяжка к минусу | SPI |
Подтяжка к минусу | Подтяжка к плюсу | Параллельный FIFO |
Подтяжка к минусу | Подтяжка к минусу | Последовательный UART |
Примечание: Выводы ACBUS5 и ACBUS6 после сброса используются
как входы. Они могут стать выходами после того, как выбран интерфейс
(например, ACBUS5 становится DATAACK#, если выбран режим интерфейса
FIFO). Поэтому эти выводы не должны подключаться к GND или VCC напрямую,
а должны подтягиваться через резистор номиналом около 47 КОм.
Существуют три варианта интерфейса ввода/вывода, использующие
настраиваемые с помощью перемычек ADBUS и ACBUS, - последовательный
UART, параллельный FIFO и SPI. Добавлены две дополнительные линии,
DATASCK# и DATAREQ#, позволяющие переключаться между режимом команд и
режимом данных. В режиме интерфейса UART они расположены на интерфейсных
выводах DTR# и DSR#. В режиме параллельного FIFO или SPI они
расположены на выводах 45 и 46. В Таблице 2.2 приведено описание выводов устройства VNC1L согласно выбранному режиму интерфейса ввода-вывода.
Таблица 2.2. Варианты интерфейса ввода-вывода
№ вывода | Название | Тип | Описание | Режим интерфейса |
UART | Параллельный FIFO | Ведомый SPI |
31 | ADBUS0 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 0 | TXD | D0 | SCLK |
32 | ADBUS1 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 1 | RXD | D1 | SDI |
33 | ADBUS2 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 2 | RTS# | D2 | SDO |
34 | ADBUS3 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 3 | CTS# | D3 | CS |
35 | ADBUS4 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 4 | DTR# / DATAACK# | D4 | |
36 | ADBUS5 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 5 | DSR# / DATAREQ# | D5 | |
37 | ADBUS6 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 6 | DCD# | D6 | |
38 | ADBUS7 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AD бит 7 | RI# | D7 | |
41 | ACBUS0 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 0 | TXDEN# | RXF# | |
42 | ACBUS1 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 1 | | TXE# | |
43 | ACBUS2 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 2 | | WR# | |
44 | ACBUS3 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 3 | | RD# | |
45 | ACBUS4 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 4 | | DATAREQ# | DATAREQ# |
46 | ACBUS5 | Вход/выход | 5 В-совместимая двунаправленная шина данных / управления, AC бит 5 | | DATAACK# | DATAACK# |
При использовании интерфейса UART в качестве порта диспетчера команд,
по умолчанию используется скорость передачи данных 9600 бод, но её
можно изменить в режиме команд. Стандартный формат данных - 8 битов
данных, 1 стартовый бит, 1 стоп-бит, без контроля чётности, с включенным
аппаратным управлением установлением связью (handshaking)
RTS/CTS. Когда прошивка используется с интерфейсом ввода-вывода VNC1L,
настроенным на режим UART, выводы DTR# и DSR# также принимают на себя
функции DATAACK# и DATAREQ# соответственно. Смотрите Таблицу 2.2.
Данная прошивка запускается в режиме команд. В этом режиме сигнал
DATAACK# имеет высокий уровень. Чтобы оставаться в режиме команд, линия
DATAREQ# должна удерживаться в состоянии высокого уровня. Во время
режима команд прошивка будет принимать команды на изменение интерфейса
UART VNC1L. Если на USB-порту 1 будет обнаружено подходящее ведомое
USB-устройство от FTDI, ему также можно будет передавать команды
настройки. В этом режиме также доступен и USB flash-накопитель на
USB-порту 2.
Чтобы переключиться в режим данных, на линию DATAREQ# необходимо
подать низкий уровень. Как только линия DATAACK# перейдёт в состояние
низкого уровня, любые данные, переданные в порт UART (либо параллельного
FIFO или SPI) на VNC1L, будут переданы в ведомое FTDI-устройство,
подключенное к USB-порту 1. Любые принимаемые данные будут исходить от
ведомого FTDI-устройства, подключенного к USB-порту 1. В этом режиме
сама VNC1L игнорирует эти данные, и просто передаёт их между
USB-устройством и интерфейсом UART (либо параллельным FIFO или SPI).
Когда устройство подключается к одному из USB-портов, в порт диспетчера команд будет послано следующее сообщение:
или
Если же устройство отключили от USB-порта, в порт диспетчера команд будет послано сообщение:
или
В этой прошивке доступны новые команды для опроса устройства: "QP1" и
"QP2". Они сообщат вам всё о типах интерфейсов, доступных на порту 1
или порту 2 соответственно.
Таблица 3.1. Команды опроса портов Query Port 1 и Query Port 2
Команды "QP1" и "QP2" |
№ бита | Значение |
Первый байт |
Бит 0 | Подключено устройство FTDI 232/245 |
Бит 1 | Зарезервирован |
Бит 2 | Подключено устройство класса принтеров |
Бит 3 | Подключено устройство класса HID |
Бит 4 | Подключено устройство класса CDC |
Бит 5 | Подключено устройство класса BOMS |
Бит 6 | Неизвестное устройство |
Бит 7 | Зарезервирован |
Второй байт |
Биты 0 - 7 | Зарезервированы |
Некоторые устройства имеют более одного интерфейса (например, такие
как микросхема FT2232D). Для выбора устройства, с которым вы хотите
взаимодействовать, вы можете запросить информацию об этих интерфейсах
(вплоть до 8) с помощью команды опроса устройства Query Device:
где n - номер интерфейса, от 0 до 8*.
Эта команда вернёт вам блок размером 32 байта, как показано в Таблице 3.2.
Эта информация даст вам тип устройства, а также коды USB-класса,
номера USB VID, PID и BCD. По ним вы сможете решить, хотите ли вы
взаимодействовать именно с этим устройством.
* Здесь и далее обозначения <cr> - символ "возврат каретки", <sp> - символ "пробел".
Таблица 3.2. Команда опроса устройства Query Device
Команда "QD n" |
№ байта | Значение |
1 | Адрес USB |
2 | Размер управляющей конечной точки EP 0 |
3 | Номер конечной точки входного канала IN |
4 | Размер входного канала IN |
5 | Номер конечной точки выходного канала OUT |
6 | Размер выходного канала OUT |
7 | Переключатели данных |
8 | Тип устройства - см. команду Query Port |
9 | Зарезервирован |
10 | Размещение |
11 | Индекс MI |
12 | Класс устройства |
13 | Подкласс устройства |
14 | Протокол устройства |
15 | Младший байт VID |
16 | Старший байт VID |
17 | Младший байт PID |
18 | Старший байт PID |
19 | Младший байт BCD |
20 | Старший байт BCD |
21 | Скорость устройства |
22 | Зарезервирован |
23 | Зарезервирован |
24 | Зарезервирован |
25 | Зарезервирован |
26 | Зарезервирован |
27 | Зарезервирован |
28 | Зарезервирован |
29 | Зарезервирован |
30 | Зарезервирован |
31 | Зарезервирован |
32 | Зарезервирован |
* В этом и следующих примерах байты (в
шестнадцатеричном формате) в последовательностях разделены пробелами
для большей наглядности. На самом деле этих пробелов быть не должно.
В качестве примера покажем, что вы получите при опросе устройства
с двойной микросхемой FT2232 на порту 1, если вы работаете в режиме
ASCII-ввода (см. ниже):
qd 0<cr>
$01 $08 $81 $40 $02 $40 $00 $01 $01 $01 $00 $FF $FF $FF $03 $04 $10 $60 $00 $05 $01 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 D:\>
qd 1<cr>
$01 $08 $83 $40 $04 $40 $00 $01 $01 $01 $01 $FF $FF $FF $03 $04 $10 $60 $00 $05 $01 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 D:\>
Здесь показано, что опрашиваемые устройства разделяют один и тот же
адрес, но имеют различные номера интерфейсов в байте 11 и различные
номера конечных точек. Первый - это порт A в микросхеме FT2232, а второй
- это порт B. Обратите внимание, что перед тем как вы предпримете
попытку диалога с устройством, вы должны сделать его текущим устройством
с помощью команды установки текущего устройства Set Current, "SC n".
Эта команда установит в качестве текущего устройство 0 (порт A микросхемы FT2232).
Эта команда установит в качестве текущего устройство 1 (порт B микросхемы FT2232).
Важное замечание: в этом примере устройства 0 и 1 будут
нацелены на два порта микросхемы FT2232. Если до подключения FT2232 на
порт 1 к хост-порту 2 VNC1L уже было подключено какое-нибудь устройство,
микросхема FT2232 будет переотображена на другие номера устройств.
Как только вы выбрали устройство, с которым вы хотите
взаимодействовать, вы можете выдавать ему команды, как если бы это было
единственное устройство, подключенное к микросхеме VNC1L. Команда "SC"
открывает каналы для использования адресов и номеров конечных точек этих
устройств для передачи данных.
Приведём пример:
sc 0<cr> (выбрать устройство 0)
D:\>
fbd $384100<cr> (установить скорость передачи в значение 9600)
D:\>
fmc $0303<cr> (установить RTS и DTR в активное состояние)
D:\> ffc $01<cr> (установить управление потоком RTS / CTS)
D:\>
Теперь вы можете войти в режим прямого подключения, установив
DATAREQ# в активное состояние (низкий уровень) и дождавшись, когда
DATAACK# тоже установиться в низкий уровень. Как только вы получили
подтверждение (сигнал DATAACK# установился в низкий уровень), всё, что
вы затем напечатаете, будете передаваться в порт A микросхемы FT2232, и
всё, что будет приходить из VNC1L, будет на самом деле приходить из
порта A микросхемы FT2232.
Это будет передано через UART на порт A микросхемы FT2232 со скоростью 9600 бод.
У вас может оказаться устройство, содержащее микросхему FTDI, в
которую запрограммированы другие VID и PID. В это случае вы также можете
использовать для взаимодействия с устройством приведённый выше метод,
но перед этим вам нужно будет применить ещё одну команду. Эта команда -
"SF n", где n - номер от 0 до 7. Команда означает "установить устройство
с номером n в качестве FTDI-устройства".
Ниже приведён пример микросхемы FT232BM с VID и PID, отличными от стандартных значений FTDI.
D:\>
qd 0
$01 $08 $81 $40 $02 $40 $00 $40 $01 $02 $00 $FF $FF $FF $34 $12 $78 $56 $00 $04 $01 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
D:\>
Здесь мы видим, что VID = $1234, а PID = $5678 (эти значения просто
придуманы для этого примера). Тип устройства в ячейке 8 равен $40, что
по Таблице 3.1 означает "Неизвестное устройство". Чтобы
использовать это устройство, вы должны сообщить VNC1L, что это
FTDI-устройство. Для этого напечатайте:
Если вы затем снова выдадите команду опроса устройства, то вы получите следующий результат:
qd 0
$01 $08 $81 $40 $02 $40 $00 $01 $01 $02 $00 $FF $FF $FF $34 $12 $78 $56 $00 $04 $01 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00 $00
D:\>
Теперь байт 8 имеет значение $01, которое означает FTDI-устройство.
После этого вы можете использовать команду настройки скорости и т.д. и
перейти в режим данных как если бы вы работали с обычным
FTDI-устройством. Имейте в виду, что выдавать команду установки текущего
устройства "Set Current" следует после смены типа устройства командой
"Set FTDI".
Также как и при использовании линии DATAREQ# для входа в режим
данных, можно передавать данные в / из USB-устройства и с помощью
команд, оставаясь в режиме команд. Первый шаг - установить номер
устройства с помощью команды SC, как приведено в Примере 1. Чтобы передать данные, используйте команду DSD как показано ниже (здесь предполагается, что устройство - это устройство 1):
D:\>
ipa<cr> (обеспечиваем режим ввода ASCII)
D:\>
sc 1<cr> (установить устройство 1 в качестве текущего устройства)
D:\>
dsd 12<cr> (передать в устройство 12 байтов с помощью команды "Device Send Data")
Hello World !
D:\>
Здесь строка "Hello World!" будет передана в выходную конечную точку OUT устройства 1.
Чтобы проверить, имеются ли доступные для считывания данные, используйте команду DRD как показано ниже:
D:\>
ipa<cr> (обеспечиваем режим ввода ASCII)
D:\>
sc 1<cr> (установить устройство 1 в качестве текущего устройства)
D:\>
drd<cr> (выполнить чтение данных из устройства 1)
$05
HelloD:\>
Устройство 1 передало строку "Hello" через его входную конечную точку IN.
Существует две команды для переключения способов представления чисел,
передаваемых или принимаемых микросхемой. Это команды IPA (InPut ASCII -
режим ASCII-ввода) и IPH (InPut Hex - режим HEX-ввода
(шестнадцатеричного ввода)). Начальное условие по умолчанию - HEX. Если
применена команда IPA, числа можно вводить через ASCII-терминал как
ASCII-символы.
Например, команда для чтения 12 байтов из открытого файла в режиме IPH (режиме HEX-ввода):
В байтах, на самом деле посланных микросхеме, это выглядело бы следующим образом:
$72 $64 $66 $20 $00 $00 $00 $0C $0D
Эта же команда в режиме IPA (режим ASCII):
1) В десятичном формате:
Фактически микросхеме будут переданы следующие байты:
$72 $64 $66 $20 $31 $32 $0D
2) В шестнадцатеричном формате с обозначением '$':
Байты, которые на самом деле будут переданы микросхеме:
$72 $64 $66 $20 $24 $43 $0D
3) В шестнадцатеричном формате с обозначением '0x0':
Байты, которые на самом деле будут переданы микросхеме:
$72 $64 $66 $20 $30 $78 $43 $0D
В шестнадцатеричном режиме (HEX) необходимо ввести точное число байтов, указанное для команды (то есть $00 $00 $00 $0C - четыре байта). В режиме же ASCII ведущие нули удаляются, и число завершается символом возврата каретки (<cr> = $0D ). То есть для режима ASCII все эти представления числа будут эквиваленты:
12 == $C == $000000C == 0xC == 0Xc == 0x000C
Значения по умолчанию после сброса для данной прошивки - режим шестнадцатеричного ввода (HEX) и расширенный набор команд.
Система диспетчера команд прошивки VNC1L использует два набора
команд: набор расширенных ASCII-команд (расширенный набор), который
предназначен для использования с терминалом, и набор сокращённых
шестнадцатеричных команд (сокращённый набор), предназначенный для
использования микропроцессором.
Таблица 4.1. Команды порта диспетчера
Набор расширенных ASCII-команд для работы с терминалом | Набор сокращённых шестнадцатеричных команд для микропроцессора | Функция, выполняемая командой | Ответ на команду |
Команды переключения между сокращённым и расширенным наборами команд |
SCS<cr> | $10$0D | Переключение в сокращённый набор команд | Вернёт подтверждение >$0D, указывающее, что устройство находится в режиме укороченного набора команд |
ECS<cr> | $11$0D | Переключение в расширенный набор команд | Вернёт подтверждение D:\>$0D*, указывающее, что устройство находится в режиме расширенного набора команд |
E<cr> | E$0D | Эхо | Вернёт E$0D для целей синхронизации |
e<cr> | e$0D | Эхо | Вернёт e$0D для целей синхронизации |
IPA<cr> | $90$0D | Переход в режим ввода чисел в формате ASCII | <prompt>$0D |
IPH<cr> | $91$0D | Переход в режим ввода чисел в формате HEX | <prompt>$0D |
Ответы, для индикации, что диск подключен |
<cr> | $0D | Проверка, подключен ли диск | Вернёт соответствующее подтверждение или сообщение "no disk"для текущего набора команд. |
Ответ на проверку, подключен ли диск, для режима расширенных команд | Диск не найден | No Disk$0D |
Диск найден | D:\>$0D |
Ответ на проверку, подключен ли диск, для режима сокращённых команд | Диск не найден | ND$0D |
Диск найден | >$0D |
Чтение серийного номера и метки тома накопителя |
DSN<cr> | $2D$0D | Чтение серийного номера накопителя. | <serial number, 4 bytes, LSB first>$0D |
DVL<cr> | $2E$0D | Чтение метки тома накопителя из главной загрузочной записи (MBR). | <11 bytes volume label text>$0D |
Работа с каталогами |
DIR<cr> | $01$0D | Вывод списка содержимого текущего каталога. | Возвращает
список имён файлов и подкаталогов. Каждая запись заканчивается символом
$0D. У записей каталогов после имени и перед символом $0D имеется
обозначение <sp>DIR. |
DIRT<cr> | $2F$0D | Вывод списка
содержимого текущего каталога с указанием даты и времени создания,
последнего обращения и изменения файлов. Формат даты и времени см. в Таблице 4.9. | $0D<name><sp><create
date and time(4 bytes) LSB first><access date(2 bytes) LSB
first><modified date and time(4 bytes) LSB first>$0D |
DIR<sp><name><cr> | $01$20<name>$0D | Вывод
имени файла с размером файла. Используйте эту команду, перед тем как
выполнить чтение файла, чтобы узнать ожидаемое количество байтов. | $0D<name><sp><size in hex(4 bytes) LSB first>$0D |
DLD<sp><name><cr> | $05$20<name>$0D | Удаление подкаталога. | Удаляет подкаталог <name> из текущего каталога. <prompt>$0D |
MKD<sp><name><cr> | $06$20<name>$0D | Создание подкаталога. | Создаёт новый подкаталог <name> в текущем каталоге. <prompt>$0D |
CD<sp><name><cr> | $02$20,<name>,$0D | Переход в каталог <name>. | <prompt>$0D |
CD<sp>..<cr> | $02$20,$2E,$2E,$0D | Переход вверх на один уровень каталогов. | <prompt>$0D |
Работа с файлами |
RD<sp><name><cr> | $04$20<name>$0D | Чтение файла <name>. | Выдаёт
диспетчеру файл целиком в двоичном формате. Перед использованием этой
команды необходимо сначала узнать размер файла с помощью команды
DIR<sp><name><cr>, чтобы ожидаемое число байтов было
известно. <prompt>$0D |
RDF<sp><size in hex(4 bytes MSB first)><cr> | $0B$20<size in hex(4 bytes)>$0D | Чтение данных размером <size in hex(4 bytes)> из текущего открытого файла. | Выдаёт диспетчеру запрошенное количество данных. <prompt>$0D |
DLF<sp><name><cr> | $07$20<name>$0D | Удаление файла <name>. | Удаляет файл <name> из текущего каталога и освобождает сектора FAT. <prompt>$0D |
WRF<sp><size in hex(4 bytes MSB first)><cr><data bytes of size> | $08$20<size in hex(4 bytes)>$0D$data | Запись данных размером <size in hex(4 bytes)> в конец текущего открытого файла | <prompt>$0D |
OPW<sp><name><sp><date and time><cr> | $09$20<name>$20<date and time>$0D | Открытие файл для записи командой WRF
с указанием значений даты и времени, используемых для установки в
качестве даты и времени изменения, последнего обращения и создания (если
файл создаётся). Дата и время являются дополнительными параметрами,
если они не указаны, то используются значения по умолчанию 04.12.2004
12:00:00. Формат даты и времени см. в Таблице 4.9. | <prompt>$0D |
OPR<sp> <name><sp><date><cr> | $0E$20<name>$20<date (2 bytes)>$0D | Открытие файла для чтения командой RDF
с указанием даты, используемой для установки в качестве даты последнего
обращения. Дата является необязательным параметром, по умолчанию она
равна 04.12.2004. Формат даты см. в Таблице 4.9. | <prompt>$0D |
CLF<sp><name><cr> | $0A$20<name>$0D | Закрытие файл для записи. | <prompt>$0D |
REN<sp><orig name><sp><new name><cr> | $0C$20<orig name>$20<new name>$0D | Переименование файла или каталога. | <prompt>$0D |
FS<cr> | $12$0D | Возврат
размера свободного места на диске в байтах. Для дисков объёмом более 4
Гб вернёт $FFFFFFFF, если доступно более 4 Гб свободного места. Поэтому
для дисков объёмом более 4 Гб используйте команду FSE. | <free space in hex(4 bytes) LSB first>$0D |
FSE<cr> | $93$0D | Возврат
размера свободного места на диске в байтах. Используется для дисков
объёмом более 4 Гб. (Возвращаемый размер свободного места представлен в
виде 6-байтного числа.) | <free space in hex(6 bytes) LSB first>$0D |
SEK<sp><offset in hex(4 bytes MSB first)><cr> | $28$20<offset in hex(4 bytes MSB first)>$0D | Переход на заданное смещение внутри файла. | <prompt>$0D |
Команды только для режима UART диспетчера |
SBD<sp><divisor (3 bytes) LSB first><cr> | $14$20<divisor (3 bytes) LSB first>$0D | Установка скорость передачи данных (см. Таблицу 4.4) | Сначала
будет выдано подтверждение <prompt>$0D на текущей скорости, а
затем <prompt>$0D на новой установленной скорости. |
Команды управления питанием |
SUD<cr> | $15$0D | Перевести
диск в режим ожидания, если он не используется, для сохранения энергии.
Диск будет активирован автоматически, как только ему будет передана
очередная дисковая команда, по завершении которой он снова будет
переведён в режим ожидания. | <prompt>$0D |
WKD<cr> | $16$0D | Активация диска без последующего перевода его в режим ожидания, если он не используется. | <prompt>$0D |
SUM<cr> | $17$0D | Перевод
диспетчера команд в режим ожидания и останов тактовых генераторов. Чтобы
активировать монитор, переключите вывод RI (индикатор звонка)
интерфейса UART VNC1L. | <prompt>$0D |
Команды для FT232 / FT245 / FT2232 на USB-порту 1 |
FBD<sp><divisor(3 bytes )LSB first><cr> | $18$20<divisor (3 bytes) LSBfirst>$0D | Установка скорости передачи (см. Таблицу 4.5) | <prompt>$0D |
FMC<sp><value (2 bytes)><cr> | $19$20<value (2 bytes)>$0D | Установка управления модемом для RTS/DTR (см. Таблицу 4.6) | <prompt>$0D |
FSD<sp><value (2 bytes) LSB first ><cr> | $1A$20<value (2 bytes) LSB first>$0D | Установка формата данных (см. Таблицу 4.7) | <prompt>$0D |
FFC<sp><value (1 byte)><cr> | $1B$20<value (1 byte)>$0D | Установка управления потоком (см. Таблицу 4.8) | <prompt>$0D |
FGM<cr> | $1C$0D | Получение состояния модема (см. Таблицу 4.6) | Возвращает состояние линии и модема (2 байта), $0D |
FSL<sp><value (1 bytes)><cr> | $22$20<value (1 bytes)>$0D | Установка таймера задержки | Устанавливает таймер задержки в миллисекундах. Значение по умолчанию 16 мс <prompt>$0D |
FSB<sp><BitMask 1 byte><Enable 1 byte><cr> | $23$20$BitMask$Enable$0D | Установка BitMode | Посылает команду SetBitMode <prompt>$0D |
FGB<cr> | $24$0D | Получение BitMode | Вернуть состояние выводов (1 байт),$0D |
Команды для неиспользуемых выводов ввода-вывода |
IOR<sp><port (1 byte)><cr> | $29$20<port number>$0D (номера портов: AD = $00 AC = $01 BD = $02 BC = $03 ) | Чтение порта ввода-вывода | Читает порт ввода-вывода и возвращает данные. |
IOW<sp><port, direction,value(3 bytes)><cr> | $2A$20<port number>$Direction(1=output)$value$0D (номера портов: AD = $00 AC = $01 BD = $02 BC = $03 ) | Запись в порт ввода-вывода | Записывает
в порт ввода-вывода, если он не занят. (То есть ADBUS 0-7 будет занят
полностью, если активен интерфейс UART или FIFO; ACBUS0 будет занят в
режиме UART, но ACBUS1-7 будут при этом доступны). |
Команды для устройств класса принтеров |
PGS<cr> | $81$0D | Получение состояния принтера | Возвращает байт состояния принтера (1 байт), $0D. ( Бит 5 - Нет бумаги Бит 4 - Выбран Бит 3 - Ошибок нет Остальные биты равны 0 ) <prompt>$0D |
PSR<cr> | $82$0D | Программный сброс принтера | <prompt>$0D |
Команды для USB-устройств |
DSD<sp><size in hex(1 bytes)><cr> <data bytes of size> | $83$20<size (1byte)>$0D<data of size> | Передача данных в USB-устройство | <prompt>$0D |
DRD<cr> | $84 | Чтение данных из USB-устройства | Возвращает байт с n - количеством доступных байтов, затем <cr>, а затем n байтов данных, затем <prompt>$0D |
QP1<cr> | $2B$0D | Запрос состояния порта 1 устройства | Возвращает два байта, показывающих типы устройства, подключенного к порту 1 (см. Таблицу 3.1) <prompt>$0D |
QP2<cr> | $2C$0D | Запрос состояния порта 2 устройства | Возвращает два байта, показывающих типы устройства, подключенного к порту 2 (см. Таблицу 3.1) <prompt>$0D |
QD<sp>n<cr>(where n is a number in hex of 0 to 7) | $85$20n$0D(where n is a number in hex of 0 to 7) | Опрос устройства n | Возвращает информацию об устройстве для устройства n, $0D<prompt>$0DСм. Таблицу 3.2. |
SC<sp>n<cr>(where n is a number in hex of 0 to 7) | $86$20n$0D(where n is a number in hex of 0 to 7) | Установка устройства с номером n
в качестве текущего, так, чтобы для выбранного линиями DATAREQ# и
DATAACK# режима данных использовался интерфейс этого устройства. Эта
команда полезна, если, например, подключена микросхема с двумя
интерфейсами FT2232. | <prompt>$0D |
SF<sp>n<cr>(where n is a number in hex of 0 to 7) | $87$20n$0D(where n is a number in hex of 0 to 7) | Установка
устройства в качестве FTDI-устройства. Эта команда полезна в том
случае, если VID FT232R / FT245R (или BM и т.д.) отличается от
стандартного значения для FTDI. В этом случае, чтобы подготовить
устройство к работе, сначала используйте команду 'QD n', чтобы найти устройство, затем 'SF n', чтобы установить устройство в качестве FTDI, а затем 'SC n', чтобы установить его в качестве текущего устройства. | <prompt>$0D |
Команды VMUSIC - только для прошивки VMSC, но не для стандартной VDAP |
VPF<sp><name><cr> | $1D$20<name>$0D | Воспроизведение MP3-файл <name> | Передаёт файл по интерфейсу SPI (интерфейс ввода-вывода между VNC1L и VS1003), затем возвращает <prompt>$0D |
VWR<sp><Address (1 byte)> <value (2 bytes) LSB first><cr> | $1E$20<Address (1 byte)><value (2 bytes) LSB first>$0D | Запись значения <value (2 bytes) LSB first> в регистр команд VS1003. | <prompt>$0D |
VRD<sp><Address (1 byte)><cr> | $1F$20<Address>(1 byte)$0D | Чтение значения из регистра команд VS1003. | Возвращает два байта содержимого регистра, затем <prompt>$0D |
VST<cr> | $20$0D | Останов воспроизведения текущего трека. | <prompt>$0D |
V3A<cr> | $21$0D | Воспроизведение всех треков с расширением MP3. | Передаёт все MP3-файлы во всех подкаталогах по интерфейсу SPI, затем возвращает <prompt>$0D |
VSF<cr> | $25$0D | Переход на следующий трек. | <prompt>$0D |
VSB<cr> | $26$0D | Переход на начало текущего трека. Если нажато дважды в течение одной секунды, выполнится переход на начало предыдущего трека. | <prompt>$0D |
Команды отладки |
SD<sp><sector number in ASCII hex><cr> | $03$20><sector number in hex>$0D | Дамп сектора. Используется для отладочных целей и может быть удалена.Например, SD 0000<cr> вернёт дамп сектора 0000, а SD 0010<cr> вернёт дамп сектора 16 (т.к. 0010 - это 16 в шестнадцатеричном формате). | Выдаёт
512 байтов из сектора, указанного в шестнадцатеричном формате HEX, в
режиме ASCII. После каждых 16 байтов следует $0D. <prompt>$0D |
SW<sp><sector number 4 bytes MSB first><cr><data bytes of size> | $92$20<sector number 4 bytes MSB first>$0D<512 bytes of data> | Запись
сектора. Запишет блок данных в указанный сектор. Неправильное
использование этой команды может разрушить содержимое накопителя. | <prompt>$0D |
IDD<cr> | $0F$0D | Идентификация дискового накопителя. Эта команда покажет информацию о подключенном накопителе. | Выдаёт блок данных IDD, а затем <prompt>$0D |
IDDE<cr> | $94$0D | Расширенная
идентификация дискового накопителя. Эта функция покажет информацию о
подключенном накопителе (ёмкость накопителя может быть до 2 Тб). | Выдаёт блок данных IDDE, а затем <prompt>$0D |
FWV<cr> | $13$0D | Получение версии прошивки. | Отображает номера версий основной и перепрограммируемой прошивок в VNC1l-1A в следующих форматах: MAIN x.xx$0D RPRG x.xx$0D а затем <prompt>$0D |
* Далее подтверждение обозначается как <prompt>. В режиме сокращённого набора команд <prompt> имеет значение ">", в режиме расширенного набора команд - "D:\>".
Таблица 4.2. Сообщения об ошибках
Ошибка | Режим набора команд | Результат |
Команда не распознана | Расширенный набор команд | Bad Command<cr> |
Сокращённый набор команд | BC$0D |
Ошибка выполнения команды | Расширенный набор команд | Command Failed<cr> |
Сокращённый набор команд | CF$0D |
Удаляемый подкаталог не пустой | Расширенный набор команд | Dir Not Empty<cr> |
Сокращённый набор команд | NE$0D |
Файл только для чтения | Расширенный набор команд | Read Only<cr> |
Сокращённый набор команд | RO$0D |
Невозможно открыть файл | Расширенный набор команд | Invalid<cr> |
Сокращённый набор команд | FI$0D |
Диск полон | Расширенный набор команд | Disk Full<cr> |
Сокращённый набор команд | DF$0D |
Таблица 4.3. Формат ответа для команд IDD и IDDE
Ответ на команду идентификации дискового накопителя IDD или IDDE |
'USB VID = $',2 байта в формате ASCII,$0D |
'USB PID = $',2 байта в формате ASCII,$0D |
'Vendor Id = ',8 байтов в формате ASCII,$0D |
'Product Id = ',16 байтов в формате ASCII,$0D |
'Revision Level = ',4 байта в формате ASCII,$0D |
'I/F = ','SCSI' или 'ATAPI' в формате ASCII,$0D |
'FAT12' или 'FAT16' или 'FAT32' в формате ASCII,$0D |
'Bytes/Sector = $',2 байта в формате ASCII,$0D |
'Bytes/Cluster = $',3 байта в формате ASCII,$0D |
IDD | 'Capacity = $',4 байта в формате ASCII,$0D |
'Free Space = $',4 байта в формате ASCII,$0D |
IDE | 'Capacity = $',6 байтов в формате ASCII,$0D |
'Free Space = $',6 байтов в формате ASCII,$0D |
Таблица 4.4. Скорости передачи данных для интерфейса UART VNC1L*
Скорость передачи данных | Первый байт | Второй байт | Третий байт |
300 | $10 | $27 | $00 |
600 | $88 | $13 | $00 |
1200 | $C4 | $09 | $00 |
2400 | $E2 | $04 | $00 |
4800 | $71 | $02 | $00 |
96001 | $38 | $41 | $00 |
19200 | $9C | $80 | $00 |
38400 | $4E | $C0 | $00 |
57600 | $34 | $C0 | $00 |
115200 | $1A | $00 | $00 |
230400 | $0D | $00 | $00 |
460800 | $06 | $40 | $00 |
921600 | $03 | $80 | $00 |
1000000 | $03 | $00 | $00 |
1500000 | $02 | $00 | $00 |
2000000 | $01 | $00 | $00 |
3000000 | $00 | $00 | $00 |
1 по умолчанию после сброса скорость передачи данных составляет 9600 бод.
* В Таблицах 4.4 и 4.5 байты со значением скорости расположены в порядке передачи их в VNC1L
Таблица 4.5. Скорости передачи данных для устройства FT232B, FT232R или FT2232, подключенного к USB-порту 1
Скорость передачи данных | Первый байт | Второй байт | Третий байт |
300 | $10 | $27 | $00 |
600 | $88 | $13 | $00 |
1200 | $C4 | $09 | $00 |
2400 | $E2 | $04 | $00 |
4800 | $71 | $02 | $00 |
96001 | $38 | $41 | $00 |
19200 | $9C | $80 | $00 |
38400 | $4E | $C0 | $00 |
57600 | $34 | $C0 | $00 |
115200 | $1A | $00 | $00 |
230400 | $0D | $00 | $00 |
460800 | $06 | $40 | $00 |
921600 | $03 | $80 | $00 |
1000000 | $03 | $00 | $00 |
1500000 | $02 | $00 | $00 |
2000000 | $01 | $00 | $00 |
3000000 | $00 | $00 | $00 |
1 по умолчанию после сброса скорость передачи данных составляет 9600 бод.
Таблица 4.6. Данные команды установки управления модемом FMC для устройства FT232B, FT232R или FT2232, подключенного к USB-порту 1
№ бита | Операция |
Первый байт |
Бит 0 | Состояние DTR#, 0 = выкл. 1 = вкл. |
Бит 1 | Состояние RTS#, 0 = выкл. 1 = вкл. |
Биты 7 - 2 | Зарезервированы, равны "0" |
Второй байт |
Бит 0 | 1 = изменить состояние DTR, 0 = не изменять состояния DTR |
Бит 1 | 1 = изменить состояние RTS, 0 = не изменять состояния RTS |
Биты 7 - 2 | Зарезервированы, равны "0" |
Таблица 4.7. Данные команды установки формата данных FSD для устройства FT232B, FT232R или FT2232, подключенного к USB-порту 1
№ бита | Операция |
Первый байт |
Биты 7 - 0 | Число битов данных - 7 или 8 |
Второй байт |
Биты 2 - 0 | Контроль чётности: 0 - без контроля чётности 1 - нечётные 2 - чётные 3 - всегда единица 4 - всегда ноль |
Биты 5 - 3 | Число стоп-битов: 0 - 1 стоп-бит 1 - 1 стоп-бит 2 - 2 стоп-бита |
Бит 6 | 1 = Send break,0 = Stop break |
Бит 7 | Зарезервирован, равен "0" |
Таблица 4.8. Данные команды установки управления потоком FFC для устройства FT232B, FT232R или FT2232, подключенного к USB-порту 1
№ бита | Операция |
Бит 0 | Аппаратное управление установлением связи (handshake) RTS/CTS |
Бит 1 | Аппаратное управление установлением связи DTR/DSR |
Бит 2 | Программное управление установлением связи XON/XOFF |
Биты 7 - 3 | Зарезервированы, равны "0" |
Таблица 4.9. Форматы даты и времени
Биты | Описание |
Дата и время |
31:25 | Год (0 = 1980) |
24:21 | Месяц (1 = Январь) |
20:16 | День месяца |
15:11 | Час (в 24-часовом представлении) |
10:5 | Минуты |
4:0 | Секунды / 2 |
Дата |
15:9 | Год (0 = 1980) |
8:5 | Месяц (1 = Январь) |
4:0 | День месяца |
© PIClist-RUS (piclist.ru), 2007 г.
|