На сегодняшний день на рынке представлено множество различных модулей с цветным TFT дисплеем (TFT модуль), которые могут использоваться радиолюбителями и разработчиками в своих проектах. Все они доступны по стоимости и предназначены для непосредственного подключения к микроконтроллеру или процессору.
К сожалению, большинство этих модулей имеет 16-битный интерфейс и рассчитаны на подключение к ARM микроконтроллерам, что не позволяет использовать их в проектах на базе платформы Arduino. В общем случае, при подключении TFT модуля к Arduino усматриваются две проблемы: все TFT модули имеют рабочее напряжение 3.3 В и 16-разрядную шину данных, что потребует от микроконтроллера наличия большого количества свободных линий ввода/вывода.
Статья будет посвящена аппаратному и программному обеспечению, которые позволят решить обе проблемы, а также демонстрации некоторых приемов оптимизации программного драйвера, позволяющих достичь высокой производительности.
Аппаратная часть
Автором был разработан адаптер, подключаемый к плате Arduino и выполняющий преобразование логических уровней (из 5 В в 3.3 В) и формирование 16-битных данных из двух 8-битных последовательностей. Если не принимать во внимание преобразование логических уровней, то адаптер представляет собой регистр-защелку, который позволяет сократить количество выводов, требуемых шиной данных, с 16 до 8 за счет дополнительных выводов управления защелкой. В итоге мы экономим 7 выводов, но немного усложняем аппаратную часть (Рисунок 1).
![]() |
|
Рисунок 1. | Внешний вид адаптера для подключения ЖК дисплея с 16-битной шиной к плате Arduino. |
Параллельный регистр-защелка работает как ячейка памяти. В «прозрачном» режиме данные, поступающие на вход, незамедлительно появляются на выходе регистра. Если включить режим защелкивания данных, то сигналы на входе регистра игнорируются, и на выходе остаются последние принятые сигналы. Именно это свойство регистра-защелки можно использовать для преобразования двух последовательных 8-битных значений в 16-битное, другими словами, с использованием защелки мы расширяем их до 16 бит (Рисунок 1).
|
|
Рисунок 2. | Две фазы работы регистра-защелки при формировании 16-битных данных из двух 8-битных последовательностей. |
На Рисунке 2 изображена диаграмма двух фаз работы регистра-защелки. На первом этапе микроконтроллер передает младшие 8 бит, которые одновременно поступают на 16-битную шину данных через защелку и в обход нее, формируя младший байт (как нам требуется) и старший байт (который сейчас нам не нужен). На втором этапе мы защелкиваем регистр, а затем микроконтроллер передает старшие 8 бит. Регистр в таком режиме игнорирует новые данные, поэтому старший байт, минуя защелку, формируется на выходе шины.
Еще одним важным преимуществом такого решения является прекрасная совместимость с интерфейсом внешней памяти XMEM, встроенного в некоторые микроконтроллеры Atmel AVR, в частности, в микроконтроллеры платы Arduino Mega 1280 и 2560. Использование интерфейса XMEM позволит упростить программный код для управления TFT дисплеем.
Принципиальная схема
В составе схемы (Рисунок 3) имеются преобразователи логических уровней, регистр-защелка, разъем для непосредственного подключения к плате Arduino Mega и разъем для подключения 16-разрядного TFT модуля.
![]() |
|
Рисунок 3. | Принципиальная схема адаптера для подключения TFT модуля с 16-разрядной шиной к плате Arduino Mega. |
Выводы двухрядного штыревого разъема P2 (10×2) для подключения адаптера к плате Arduino Mega разведены так, чтобы соответствовать сигнальным линиям интерфейса XMEM, которые располагаются в блоке выводов, начинающихся с вывода 23. Символ «H» в обозначении сигналов разъема означает, что это логические сигналы с уровнем 5 В (Рисунок 4). На разъеме доступны сигналы данных и управления, включая сигнал CS (выбор кристалла), соответствующий сигналу ALE (разрешение фиксации адреса) интерфейса XMEM (хотя для управления TFT модулем он требуется очень редко и обычно просто подключен к «земле»).
![]() |
|
Рисунок 4. | Распределение выводов двухрядного разъема для подключения адаптера к плате Arduino. |
Микросхема 8-разрядного шинного приемопередатчика SN54LVTH2245 компании Texas Instruments является идеальным выбором для преобразования логических уровней (Рисунок 5). Микросхема достаточно распространеа, имеют задержка распространения сигнала порядка 2 нс (это очень мало), а входы и выходы находятся на противоположных сторонах корпуса, что упрощает печатную плату и монтаж.
![]() |
|
Рисунок 5. | Микросхема шинного приемопередатчика SN54LVTH2245. |
Скоростные характеристики микросхемы регистра-защелки D-типа SN74LV573APW удовлетворяют требованиям, предъявляемым интерфейсом XMEM (Рисунок 6). Регистры и шинные приемопередатчики выпускаются многими производителями, поэтому вы можете использовать другие микросхемы с аналогичными параметрами.
![]() |
|
Рисунок 6. | Микросхема регистра-защелки SN74LV573APW. |
Штыревой разъем питания и дополнительных сигналов P3 используется для подачи питания на TFT модуль от платы Arduino. Два выхода общего назначения U1 и U2 могут использоваться для некоторого расширения функционала. Как вариант, один из них можно использовать для ШИМ управления подсветкой TFT панели.
Двухрядный разъем P1 используется для подключения TFT модуля. Автор с целью экономии места применил разъем, выводы которого загнуты под прямым углом к плате.
Проект печатной платы
Ручная трассировка платы не представила каких-либо трудностей, все элементы схемы уместились на площади 45 × 35 мм (Рисунок 7).
![]() |
|
![]() |
|
![]() |
|
![]() |
|
Рисунок 7. | Проект печатной платы адаптера. |
Загрузки
Принципиальная схема и рисунки печатной платы (PDF) – скачать
Продолжение следует...
Часть 2 - Программная реализация
Часть 3 - Оптимизация алгоритма прорисовки линий и варианты конфигурирования драйвера