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).
В этом документе описывается VDIF-версия прошивки для Vinculum
VNC1L - микросхемы с интерфейсом USB flash-накопителя и диспетчером
команд. VDIF использует интерфейсы UART, SPI и параллельный
FIFO-интерфейс, либо порт хоста USB в качестве порта диспетчера команд.
Интерфейс ввода-вывода настраивается с помощью набора перемычек, которые
подтягивают к плюсу или к минусу два интерфейсных вывода VNC1L.
Технические характеристики интегральной схемы Vinculum VNC1L
описаны отдельно в техническом описании, которое доступно на веб-сайте
Vinculum: http://www.vinculum.com.
Прошивка VDIF (Vinculum Disk Interface - дисковый интерфейс Vinculum)
позволяет устройству Vinculum VNC1L работать в качестве интерфейса
между USB flash-накопителем (или другим устройством класса
USB-накопителей), подключенным к USB-порту 2, и интерфейсом ввода-вывода
VNC1L, либо подходящим периферийным USB-устройством, подключенным к
USB-порту 1. Эта прошивка позволяет извне настраивать интерфейс VNC1L на
работу в режиме UART, SPI или параллельного FIFO-интерфейса с помощью
внешних перемычек. Устройство, подключенное к интерфейсу ввода-вывода
(UART, FIFO, SPI), либо подходящее периферийное USB-устройство может
выдавать команды, позволяющие выполнять над USB flash-накопителем
различные операции с помощью набора команд, определённого в данном
документе. Порт VNC1L, настроенный на приём этих команд, называется "портом диспетчера команд".
В качестве подходящего периферийного устройства USB для
подключения к порту диспетчера команд на USB-порту 1 может
использоваться мобильный телефон с ведомым интерфейсом USB, КПК с
ведомым интерфейсом USB или любое ведомое периферийное USB-устройство,
способное выдавать микросхеме VNC1L команды.
Прошивка VDIF предполагает, что USB flash-накопитель (или другое устройство класса USB-накопителей) будет подключен ко второму порту
хоста USB. Первый порт хоста USB, либо порт интерфейса, настраиваемый
перемычками на UART, параллельный FIFO, или SPI, работает как порт
диспетчера команд.
По умолчанию прошивка настроена на использование в качестве
диспетчера команд режима интерфейса ввода-вывода, заданного перемычками
на ACBUS5 (вывод 46) и ACBUS6 (вывод 47), то есть интерфейса UART, параллельного FIFO или SPI. Настройка схемы перемычек показана ниже на Рис. 1.
По умолчанию, если не установлено ни одной перемычки, эта схема
настроена на интерфейс UART. Настройку выводов перемычек для выбора
порта см. в Таблице 1.
Рис. 1. Схема прошивки VDIF
Таблица 1. Выводы перемычек выбора порта
ACBUS6 (вывод 47) | ACBUS5 (вывод 46) | Режим |
Подтяжка к плюсу | Подтяжка к плюсу | Последовательный UART |
Подтяжка к плюсу | Подтяжка к минусу | SPI |
Подтяжка к минусу | Подтяжка к плюсу | Параллельный FIFO |
Подтяжка к минусу | Подтяжка к минусу | Последовательный UART |
Если к USB-порту 1 не подключено никаких устройств, то прошивка по
умолчанию настроена на использование интерфейса UART, параллельного FIFO
или SPI в качестве порта диспетчера команд. Однако как только
USB-устройство будет подключено к первому порту USB и будет обнаружено
VNC1L, этот порт автоматически станет портом диспетчера команд. Если
USB-устройство отключается от USB-порта 1, VNC1L попытается использовать
в качестве диспетчера команд порт интерфейса UART, параллельного FIFO
или SPI. Второй порт USB всегда предназначен для подключения только USB
flash-накопителей (класса USB-накопителей).
Существует три варианта интерфейса ввода-вывода, использующие
порты ADBUS и ACBUS, настраиваемые с помощью перемычек, -
последовательный UART, параллельный FIFO и SPI. Выводы устройства VNC1L
показаны в Таблице 2.
Таблица 2. Варианты интерфейса ввода/вывода
№ вывода | Название | Тип | Описание | Режим интерфейса |
Интерфейс UART | Параллельный интерфейс FIFO | Ведомый интерфейс SPI |
31 | ADBUS0 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 0 | TXD | D0 | SCLK |
32 | ADBUS1 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 1 | RXD | D1 | SDI |
33 | ADBUS2 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 2 | RTS# | D2 | SDO |
34 | ADBUS3 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 3 | CTS# | D3 | CS |
35 | ADBUS4 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 4 | DTR# | D4 | |
36 | ADBUS5 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 5 | DSR# | D5 | |
37 | ADBUS6 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 6 | DCD# | D6 | |
38 | ADBUS7 | I/O | 5В-совместимая двунаправленная шина данных/управления, AD бит 7 | RI# | D7 | |
41 | ACBUS0 | I/O | 5В-совместимая двунаправленная шина данных/управления, AC бит 0 | TXDEN# | RXF# | |
42 | ACBUS1 | I/O | 5В-совместимая двунаправленная шина данных/управления, AC бит 1 | | TXE# | |
43 | ACBUS2 | I/O | 5В-совместимая двунаправленная шина данных/управления, AC бит 2 | | RD# | |
44 | ACBUS3 | I/O | 5В-совместимая двунаправленная шина данных/управления, AC бит 3 | | WR | |
При использовании в качестве порта диспетчера команд интерфейса UART,
VNС1L ожидает, что на его вывод CTS# будет подан низкий уровень. По
умолчанию скорость передачи данных, используемая портом UART, составляет
9600 бод, хотя её можно изменить программно с помощью одной из
команд порта диспетчера. Стандартный формат данных - 8 битов данных, 1
стартовый бит, 1 стоп-бит, без проверки чётности, с включенным
аппаратным подтверждением связи (handshaking) RTS/CTS.
При запуске системы прошивка выдаст на порт диспетчера команд
сообщение с номером версии прошивки. Это сообщение имеет следующую
форму:
Ver x.xx On-Line:
Где x.xx - это номер версии (может быть длиннее четырёх символов).
Если к USB-порту 2 микросхемы VNC1L подключен USB
flash-накопитель, VNC1L просканирует его и выполнит подсчёт свободных
секторов. Это может занять некоторое количество секунд в зависимости от
точного размера диска. Во время этого процесса при нормальных
обстоятельствах светодиод на USB flash-накопителе будет показывать
активность. Также прошивка VNC1L выполняет сканирование корневого
каталога в поисках файла обновления прошивки. Если файл прошивки не
найден, она выведет:
Если же на USB flash-накопителе будет найден подходящий файл обновления прошивки, прошивка VNC1L автоматически обновится.
Система диспетчера команд прошивки VNC1L использует два набора команд: набор расширенных ASCII-команд (расширенный набор), предназначенный для использования с терминалом, и набор сокращённых шестнадцатеричных команд (сокращённый набор), предназначенный для использования микропроцессором.
Таблица 3. Команды порта диспетчера *
Расширенные ASCII-команды для работы с терминалом | Сокращённые шестнадцатеричные команды для микропроцессора | Функция, выполняемая командой | Ответ |
Переключение между сокращённым и расширенным наборами команд |
SCS<cr> | $10$0D | Переключение на сокращённый набор команд. | Вернёт подтверждение >$0D, показывая, что устройство перешло в режим сокращённого набора команд. |
ECS<cr> | $11$0D | Переключение на расширенный набор команд. | Вернёт подтверждений D:\>$0D**, показывая, что устройство перешло в режим расширенного набора команд. |
E<cr> | E$0D | Эхо. | Вернёт E$0D для целей синхронизации. |
e<cr> | e$0D | Эхо. | Вернёт e$0D для целей синхронизации. |
Ответы, показывающие, подключен ли диск |
<cr> | $0D | Проверка, подключен ли диск. | Вернёт соответствующее подтверждение или сообщение "No disk" для текущего набора команд. |
Ответ, показывающий, подключен ли диск, для расширенного режима команд | Диск не найден. | No Disk$0D |
Диск найден. | D:\>$0D |
Ответ, показывающий, подключен ли диск, для сокращённого режима команд | Диск не найден. | ND$0D |
Диск найден. | >$0D |
Работа с каталогами |
DIR<cr> | $01$0D | Вывод списка содержимого текущего каталога. | Возвращает
список имён файлов и каталогов. Каждый элемент завершается символом
$0D. У элемента-каталога после имени и перед $0D добавляется <sp>DIR. |
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> | $07$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)><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>. | Удаляет файл из текущего каталога и освобождает сектора FAT. <prompt>$0D |
WRF<sp><size in hex(4 bytes)><cr><data bytes of size><cr> | $08$20<size in hex(4 bytes)>$0D$data$0D | Запись данных размером <size in hex(4 bytes)> в конец текущего открытого файла. | <prompt>$0D |
OPW<sp><name><cr> | $09$20<name>$0D | Открытие файла для записи с помощью команды WRF. | <prompt>$0D |
OPR<sp><name><cr> | $0E$20<name>$0D | Открытие файла для чтения командой RDF. | <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 | Получение размера свободного места на диске в байтах. | <free space in hex(4 bytes) LSB first>$0D |
Команды, предназначенные для режима UART диспетчера |
SBD<sp><divisor (3 bytes) LSB first><cr> | $14$20<divisor (3 bytes) LSB first>$0D | Установка скорости передачи (см. Таблицу 6). | <prompt>$0D |
Команды управления питанием |
SUD<cr> | $15$0D | Перевод
накопителя в режим ожидания для сохранения энергии, если он не
используется. Накопитель будет активирован автоматически, как только ему
будет послана очередная дисковая команда. | <prompt>$0D |
WKD<cr> | $16$0D | Активация накопителя без помещения его в режим ожидания, когда он не используется. | <prompt>$0D |
SUM<cr> | $17$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 (0010h = 16 в десятичном формате). | Выдаёт в ответ 512 байтов, преобразованных в ASCII, из сектора с номером, указанным в шестнадцатеричном формате (HEX). После каждых 16 байтов следует $0D. <prompt>$0D |
IDD<cr> | $0F$0D | Идентификация накопителя. Эта команда отобразит информацию о подключенном накопителе. | Выдаёт блок данных IDD, а затем <prompt>$0D |
FWV<cr> | $13$0D | Получение версии прошивки. | Выдаёт номера версий основной и перепрограммируемой прошивок в VNC1L MAIN x.xx$0D RPRG x.xx$0D затем <prompt>$0D |
* Здесь <cr> обозначает символ возврата каретки ('\r'), его шестнадцатеричный эквивалент - $0D; <sp> обозначает символ пробела, его шестнадцатеричный эквивалент - $20.
** Далее подтверждение обозначается как <prompt>. В режиме сокращённого набора команд <prompt> имеет значение ">", в режиме расширенного набора команд - "D:\>".
Таблица 4. Сообщения об ошибках
Ошибка | Режим команд | Результат |
Команда не распознана | Расширенный набор команд | Bad Command$0D |
| Сокращённый набор команд | BC$0D |
Ошибка выполнения команды | Расширенный набор команд | Command Failed$0D |
| Сокращённый набор команд | CF$0D |
Таблица 5. Формат строк ответа на команду IDD
IDD - результаты идентификации дискового устройства |
'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 |
'Capacity = $', 4 байта в формате ASCII, $0D |
'Free Space = $', 4 байта в формате ASCII, $0D |
Таблица 6. Таблица скоростей передачи данных для интерфейса UART (нумерация байтов указана в порядке их передачи в теле команды SBD)
Скорость передачи | Первый байт | Второй байт | Третий байт
| 300 | $10 | $27 | $00 |
600 | $88 | $13 | $00 |
1200 | $C4 | $09 | $00 |
2400 | $E2 | $04 | $00 |
4800 | $71 | $02 | $00 |
9600* | $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 |
*9600 бод - значение скорости по умолчанию после сброса
© PIClist-RUS (piclist.ru), 2007 г.
|