Оригинал: "Vinculum VNC1L. Firmware - VDAP" (1.18 Мб)
Скачать "Vinculum VNC1L - описание прошивки VDAP 3.50" в формате PDF (411 Кб)
Перевод с английского © PIClist-RUS (piclist.ru)
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 г.