Привет, уважаемый All!
Не спеши пинать меня за банальность сабжа - есть у меня задачка, и хочется сделать ее красиво, но в течение месяца не могу накопать ничего интересного, вот и решил ее вынести на обсуждение.
Задачка такая - контроллер встраиваемого термопринтера. Этот принтер относится к классу GDI-устройств (бо зело проще было написать драйвера), то есть весь рендеринг графики производится в недрах Windows, по интерфейсу принтера передается уже или текст или компрессированная графика. Собственно, уже разработан контроллер на базе Mega128-16МГц, но он хорошо (достаточно быстро) работает только с узкими термоголовками (2", 3", 4").
А вот потом пришел _ОН_ - термоголова ширина 8"/200dpi (есть еще варианты 300 dpi) с улучшенной энергетикой. Эти головы, способны отображать данные со скоростью не менее 2 Мбит/сек. При этом интерфейс загрузки у них типа SPI (двухканальный) и пропускает до 8 МБит/сек.
Второе узкое место - интерфейс - сейчас есть варианты RS-232 (до 460800), USB (кривоватый FTDI232, в итоге тот же RS внутри, зато быстро USB "освоил" :-( и Centronics, экономно (но медленно) реализованный на сдвиговом регистре с параллельной загрузкой.
Третье узкое место - уже появляются требования к дополнительной обработке графических данных, да и RLE декомпрессия на таких скоростях тоже уже не бесплатна в смысле производительности. Кроме того, для приличной обработки уже надо RAM, хорошо бы пару мегабайт.
Короче, понятно - AVR 16МГц еле дышит (я это предвидел, но мне никто не дал ни времени/ни денег реализовывать это нормально, да и на узких форматах все более/менее шуршит). Скорость от 2 до 6 pps формата A4 в зависимости от картинки. Но это не самое плохое. Еще хуже то, что процессор не успевает прогружать голову (одновременно обрабатывая 50-100К прерываний от интерфейса и декомпрессируя данные), при этом падает частота шагов на системе позиционирования (до 50-100 шагов/сек) и в системе развиваются приличные механические колебания, мало того что это дело начинает шуметь (с модуляцией по плотности поступаемой графики), так и резко возрастает износ (шестерни-то капроновые). Посему, чего же я хотел бы от нового микроконтроллера (в порядке убывания приоритета):
- internal program flash memory - от 64К, ессно ISP; - internal RAM - ну пусть от 8К минимум, хотя и напряг; - непременно DMA или его аналог (типа DTC у Atmel для UART); - SPI (SIO, SCI или чего еще), обязательно с DMA; - external DMA channel (для Centronics); - UART (DMA желателен, но FIFO тоже поможет, да и скорости уже обычно не те); - USB-device 1.1, обязательно c DMA, можно low-speed; - от 10 МИПС (если будет DMA, то интерфейсы и голову уже обслуживать почти не надо, а декомпрессия RLE это простой и малокушающий алгоритм);
Ну еще пожелания (во губу раскатал-то :-) - встроенный контроллер внешней DRAM/SDRAM памяти (пару метров RAM были бы кстати на будущее); - ARM архитектура (хорошо распространена - ИМХО это "аналог" i51 среди 8-битников, тоже толпой производителей выпускается, с разной периферией). Но с архитектурой уж как повезет, сгодится любая другая, лишь бы периферия приличная была.
Вот такая проблема, месяц неспешно ищу - ничего не попадается, смотрел Fujitsu/Hitachi/Mitsubishi/Siemens/ST/Philips/OKI/Samsung/Hynix/Sharp/Cirrus. В-основном ARMы. Может, плохо смотрел, или еще где надо поискать? Проблема в USB - все еще маловато чипов с ним. Но я уж готов и внешний типа USBN9604 ставить. Монстры в >400 pin BGA тоже грустновато как-то и у них с внутренним флешом обычно напряг.