Программирование MSC51 TUSB3410 - краткая справка Wed, December 13 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


TUSB3410 - краткая справка Печать
Добавил(а) microsin   

Здесь приведены основные сведения, полезные для работы с микросхемой TUSB3410.

1. Микросхема предназначена для построения полноскоростного (full speed) периферийного USB-устройства (USB 2.0). В основу положен MSC51-совместимый (точнее ядро 8052) микроконтроллер. От традиционной периферии MCS51 остались 4 ножки порта P3 (P3.0, P3.1, P3.3 и P3.4), C/T0 и C/T1, 256 ячеек ОЗУ IDATA. Добавились USB-контроллер, 10K CODE ROM (в ней записано заводское ПО, позволяющее загрузить программу для микроконтроллера как через аппаратный I2C, так и - с помощью специального драйвера - от USB-хоста), 16K CODE RAM (куда грузится управляющая программа для микроконтроллера), аппаратный порт I2C(предназначенный для загрузки управляющей программы микроконтроллера). Кварцевый резонатор обязательно должен быть 12 МГц (тактовая частота микроконтроллера при этом получается 24 МГц). TUSB3410 разработана для питания от шины USB, причем питается от напряжение питания 3.3 в - нужно применить в качестве стабилизатора питания микросхему, например, LP2980IM5-3.3 или TPS76933. Подробную справочную информацию по TUSB3410 можно найти на сайте Texas Instruments - ti.com, а также в [3].

2. TUSB3410 не имеет отладочных кристаллов, поддерживающих полноценную пошаговую отладку с применением точек останова. Отлаживают программу с помощью вывода через RS232 значений переменных и регистров, что конечно требует модификации программы (пример можно найти на сайте ti.com - TUSB2136, TUSB3210, TUSB3410, TUSB5052 Firmware Debugging Guide). Второй способ отладки, с применением IDE Keil (Keil’s 8051/8052 development tools), позволяет применить пошаговую отладку, однако и здесь значительные ограничения - в случае установки breakpoint происходит замедление выполнения примерно в 100 раз, и тоже задействован стандартный для MCS51-архитектуры RS232.

3. Для отладки программ удобен USB-драйвер - TI AppLoader Driver, который можно свободно скачать с сайта ti.com. После его установки можно загружать программу в кристалл TUSB3410 через шину USB, для чего достаточно положить исполняемый код (в бинарном формате) в файл %windir%\system32\drivers\umpf3410.i51 (раньше файл назывался TUSB3410.BIN) и затем переподключить устройство с TUSB3410 к шине компьютера. При этом микросхема EEPROM должна быть отключена от I2C, иначе загрузка микроконтроллера произойдет по I2C, а не через USB (для этого можно просто разорвать провод SCL, или заземлить ножку SCL или SDA). Имя загружаемого файла прописано в реестре в разделе HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ USB \ Vid_0451&Pid_3410 \ TUSB3410________ \Device Parameters, параметр FWFileName (тип REG_SZ, значение по умолчанию \SystemRoot\System32\drivers\umpf3410.i51, раньше файл назывался TUSB3410.BIN).

Таким образом, отладка по методике "заработало/не заработало" состоит из шагов (на платформе Windows):

  • Сначала установите драйвер TI WDF USBUART Single Driver. Это драйвер для TUSB3410 Boot Device, который позволяет загружать firmware через USB.
  • Скомпилируйте бинарный файл (firmware для микроконтроллера).
  • Переименуйте (или скопируйте) бинарный файл в %windir%\system32\drivers\umpf3410.i51. После установки драйвера там уже находится файл umpf3410.i51, в котором записано firmware конвертера виртуальный COM порт USB - TTL RS232.
  • Переподключите устройство TUSB3410 к порту USB компьютера. Если микросхема памяти EEPROM не подключена к I2C, либо в ней нет допустимого для загрузки кода, то программа firmware из файла umpf3410.i51 будет записана в RAM микроконтроллера, и запущена на выполнение. После этого устройство USB может заново пройти энумерацию на хосте и работать как новое устройство USB (это зависит от кода загруженного firmware).

После первого подключения чистого USB-устройства к порту USB Windows система обнаружит новое устройство TUSB3410 Boot Device, и предложит установить драйвер.

TUSB3410-Boot-Device-first-conn01 TUSB3410-Boot-Device-first-conn02

Драйвер можете скачать с сайта Texas Instruments, или взять из архива по ссылке [1], см. TI-software\sllc428a.zip. Отключите пока устройство TUSB3410 от порта USB. Распакуйте файл TI_WDF_USBUART_SINGLE_DRIVER_V6.7.2.0_WHQL.exe и запустите. Примите, как обычно, соглашение об использовании, выберите папку установки c:\Program Files\Texas Instruments Inc\TI_WDF_USBUART_SINGLE_DRIVER_V6.7.2.0_WHQL, после установки перейдите в эту папку и запустите файл Setup.exe. Перед запуском убедитесь на всякий случай, что устройство TUSB3410 у Вас отключено от компьютера. Папку установки по умолчанию предложат C:\Windows\tiinst, оставьте как есть (если у Вас Windows установлен не на диске C:, то поменяйте букву диска в пути на букву системного диска). После завершения установки снова подключите устройство USB TUSB3410 к компьютеру, теперь драйвер будет найден автоматически, устройство установится в системе и будет готово к загрузке кода - на скриншоте ниже это устройство TUSB3410 Device (COM113).

TUSB3410-Boot-Device-driver-finded TUSB3410-Boot-Device-installed

Чтобы код загружался в память TUSB3410 при каждом подключении, замените файл %windir%\system32\drivers\umpf3410.i51 на тот двоичный файл firmware, который хотели бы загрузить. В системе программирования IAR я обычно это делаю с помощью простого командного файла, который добавил Build Actions -> Post-Build Command Line (строка $PROJ_DIR$\bat\postbuild.bat $PROJ_DIR$ reflex.a51 code.bin). Вот пример такого командного файла:

rem usage example: postbuild.bat $PROJ_DIR$ myfirmware.a51 code.bin
%1batfcomp.exe %1DebugExe%2 %1DebugExe%3 /S
copy /Y %1DebugExe%2 %windir%system32\driver\sumpf3410.i51

4. Код firmware, записываемый в I2C EEPROM, имеет специальный формат (подробно описанный в доке по TUSB3410). Этот формат придуман для того, чтобы можно было в EEPROM разместить USB-дескрипторы вместе с программой микроконтроллера. Поскольку формат хоть и довольно прост [3], но требует для создания прошивки подсчета контрольных сумм для блоков дескрипторов и программного кода, Texas Instruments решила облегчить жизнь разработчикам и выпустила для компоновки кода EEPROM специальную утилиту (можно свободно скачать с ti.com, или см. [1]) - Header.exe. Утилита представляет из себя консольную программу, генерирующую файл прошивки для I2C EEPROM. На входе у программы файл конфигурации и исполняемый бинарный код микроконтроллера, а на выходе - бинарный файл прошивки. Пример командной строки (берется конфигурационный файл text.cfg и генерируется прошивка EEPROM test.bin):

header.exe test.cfg test.bin -v

Содержание test.cfg (руководство по составлению конфигурационного файла вместе с примерами скачиваются вместе с утилитой header.exe):

[НАЧАЛО test.cfg]
;------------------------------------------------------------------------------
;
; Шаг 1 - Создаем device signature
;
DEVICE_NAME = TUSB3410                 ; USB to Single UART device
;------------------------------------------------------------------------------
;
; Шаг 2 - Создаем descriptor blocks
;
DESCRIPTOR_BLOCK USB_DEVICE_DESCRIPTOR
0x12,              ; размер этого дескриптора в байтах
0x01,              ; тип device descriptor
0x10, 0x01         ; USB 1.10
0xff,              ; device class is vendor-specific
0x00               ; нет подклассов
0x00               ; протоколы не используются
0x08               ; максимальный размер пакета для конечной точки 0
0x9B, 0x0B         ; vendor ID: 0x0B9B (сюда поместите свой код производителя)
0x12, 0x40         ; product ID: 0x4012 (сюда поместите свой код продукта)
0x01, 0x01         ; номер релиза устройства (device release number) = 1.01
                   ; (поменяйте по вкусу)
0x01,              ; индекс строкового дескриптора, описывающего производителя
0x02,              ; индекс строкового дескриптора, описывающего продукт
0x00,              ; индекс строкового дескриптора, описывающего серийный номер
                   ; устройства
0x01,              ; количество возможных конфигураций
;
;
DESCRIPTOR_BLOCK USB_STRING_DESCRIPTOR
;
; string descriptors
;
;
; string index 0, language ID
;
0x04,                              ; 4 bytes
0x03,                              ; DESC_TYPE_STRING
0x09,0x04,                         ; english 0x0409
;
;------------------------------------------------------
; string index 1, производитель
; Пробелы вставляются с помощью символа '@'
;------------------------------------------------------
;
0x30,                              ; 48 bytes
0x03,                              ; DESC_TYPE_STRING
'I',0x00,'@',0x00,'a',0x00,'m',0x00,
'@',0x00,'b',0x00,'e',0x00,'s',0x00,
't',0x00,'@',0x00,'p',0x00,'r',0x00,
'o',0x00,'g',0x00,'r',0x00,'a',0x00,
'm',0x00,'m',0x00,'e',0x00,'r',0x00,
'!',0x00,'!',0x00,'!',0x00,
;
; = "I am best programmer!!!"
;
;------------------------------------------------------
; string index 2, продукт
;------------------------------------------------------
;
0x2A,                              ; 42 bytes
0x03,                              ; DESC_TYPE_STRING
'M',0x00,'y',0x00,'@',0x00,'f',0x00,
'i',0x00,'r',0x00,'s',0x00,'t',0x00,
'@',0x00,'U',0x00,'S',0x00,'B',0x00,
'@',0x00,'D',0x00,'e',0x00,'v',0x00,
'i',0x00,'c',0x00,'e',0x00,'!',0x00,
;
; = "My first USB Device!"
;
;------------------------------------------------------
; string index 3, серийный номер. Нули вроде как означают, что серийный номер пустой
;------------------------------------------------------
;
0x00,
0x00,
;------------------------------------------------------------------------------
;
;
DESCRIPTOR_BLOCK AUTOEXEC_BINARY_FIRMWARE
;
LOAD_BINARY_FILE = code.bin
;LOAD_HEX_FILE = ??????; Используйте эту строку, если firmware в hex формате
;
;------------------------------------------------------------------------------
; Шаг 3 - Завершаем заголовок
;
DESCRIPTOR_BLOCK END
[КОНЕЦ test.cfg]

В этом примере исполняемый код для микроконтроллера утилита header.exe берет из файла code.bin.

[Ссылки]

1. Примеры использования чипа TUSB3410, апноуты, драйверы, примеры кода - ti.com-examples-appnotes.zip.
2. Переходник USB-RS232 на чипе TUSB3410.
3. TUSB3410: контроллер преобразователя USB - Serial.

 

Добавить комментарий


Защитный код
Обновить

Top of Page