Рядом с микроконтроллерами общего назначения существуют и узкоспециализированные — например периферийный контроллер EZ-USB, о котором и пройдет речь.
Он представляет собой микропроцессорную систему, подобную тем же AVR и PIC, но с своей уникальной архитектурой.
Взгляд изнутри
Обратите внимание на следующее изображение внутренней архитектуры контроллера.
Большим отличием является 8051 ядро системы, а также возможность передачи данных USB минуя центральный процессор через FS/HS Engine. То есть, сам процессор играет второстепенную, управляющую, но не обрабатывающую, роль.
- Ядро: модифицированное 8051.
- Рабочая частота: 12-48 MHz.
- Общая память: 16 Кб (для всего).
- Возможность загрузки программы через USB, EEPROM, внешнюю шину.
Это не так много, однако, не забывайте, что это узкоспециализированный контроллер. Далее, интерфейсы:
- Интерфейс USB 2.0 (480МБит/сек)
- Интерфейс I2C.
- Пользовательские I/O порты.
- Встроенное FIFO на 4Кб.
- Программируемый параллельный интерфейс — GPIF.
Как видите, никаких проблем в осуществлении передачи данных возникнуть не может.
Отладочная плата
Я предлагаю использовать плату разработчика с контроллером CY7C68013A-56.
По приемлемой цене, зачастую с программным обеспечением она именуется как «Logic analyzer module» . Имеется внешняя EEPROM объемом 16Кб, а также все необходимые для работы компоненты. Диаграмма выводов микросхемы следует ниже:
Это несомненно хорошо, что разработчики не уменьшили ширину шин даже в самом маленьком корпусе микросхемы, но — как видите — нужно выбрать одно из трех.
Программирование
Следующее вас приятно удивит, так как для разработки программного обеспечения нам понадобиться лишь USB кабель. 🙂 Все происходит через этот интерфейс, однако, было бы неплохо иметь под рукой осциллограф или тестер.
Среда разработки и конфигурация
Необходимый пакет включает в себя студию Keil uVision и загрузчик/отладчик CyControl Center. К большому огорчению, эта связка держится на .bat файлах и прямых путях, по собственно этой причине крайне нежелательно изменять директории установки.
Приведу пример самой обыкновенной программы, моргающей светодиодом, чтобы у читателя было представление с чем имеет дело.
1 2 3 4 5 6 7 | OEA |= 0x1; //Конфигурируем I/O while(true) { PA0 = 0; EZUSB_Delay(1000); PA0 = 1; EZUSB_Delay(1000); } //Ничего не напоминает? |
После компиляции в папке проекта появится образ программы .icc, который можно загрузить напрямую в ОЗУ контроллера для исполнения.
В таком случае, как и с FPGA, код программы исчезнет из памяти после отключения питания, поэтому его необходимо загрузить в постоянную память. Обратите внимание на эту выделенную мной деталь:
Обведенный переходник препятствует загрузке программы из внешней EEPROM. Для того, чтобы поместить образ в микросхему, следуйте алгоритму ниже:
- Установите переходник-перемычку.
- Подайте питание — загрузочная программа начнет работу.
- Снимите переходник.
- Загрузите программу в 64KB EEPROM (см. рисунок справа).
Разумеется, вы почти не ограничены в числе перепрошивок, установкой одной такой перемычки загрузочная программа будет восстановлена.
Файлы и документы
программно конечно же, аппаратно контроллер просто шлет состояние своего порта В по USB. А уже программа расшифровывает эти данные. Поэтому у разных программ разный функционал.