Научная статья на тему 'Обработка информации с емкостных сенсорных панелей tp043 2D 1p и tp048 2D 1p и их аналогов на основе контроллеров st1232 и st1332'

Обработка информации с емкостных сенсорных панелей tp043 2D 1p и tp048 2D 1p и их аналогов на основе контроллеров st1232 и st1332 Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
143
21
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Юрков Олег

В статье рассматриваются способы работы с емкостной сенсорной панелью 4,8 дюйма TP048 2D 1P фирмы Fortrend Taiwan Scientific Corp.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Обработка информации с емкостных сенсорных панелей tp043 2D 1p и tp048 2D 1p и их аналогов на основе контроллеров st1232 и st1332»

148 дисплеи

Олег юрков

Обработка информации с емкостных сенсорных панелей TP043 2D 1P и TP048 2D 1P

и их аналогов на основе контроллеров б^232 и б^332

В статье рассматриваются способы работы с емкостной сенсорной панелью 4,8 дюйма — TP048 2D 1P фирмы Fortrend Taiwan Scientific Corp.

Введение

Сначала разберемся с терминологией. Наиболее часто упоминаемый термин (то, что, как говорят, на слуху) — сенсорный дисплей. Сенсорный дисплей (экран) — это устройство, которое состоит из прозрачной сенсорной панели (touch panel) и расположенного под ней дисплея. Сенсорная панель реагирует на прикосновение к ней предметов, пальцев. Еще одно название — touch screen («тачскрин») — хотя и означает то же самое, но приобрело у нас значение «сенсорная панель». Если в вашем смартфоне неисправна touch panel и вы хотите купить новую, то можно смело искать в Интернете замену с запросом «тачскрин для...». Еще одно название сенсорной панели — сенсорное стекло, которое тоже точно отражает ее свойства. Далее автор будет применять как синонимы определения «емкостная сенсорная панель» слова «панель», «сенсор» и «стекло».

Сенсорный экран в повседневный быт вошел сравнительно недавно. Он удобен, поскольку позволяет увеличить размеры дис-

рис. 1. Емкостная сенсорная панель Fortrend TP048 2D 1P

плея на передней панели приборов и отказаться от кнопок, ведь теперь их функцию выполняет сенсорная панель. К тому же он помогает максимально упростить интерфейс, сделав его понятным для любого человека.

Емкостные экраны очень надежны и долговечны, их ресурс составляет сотни миллионов нажатий, они отлично противостоят загрязнениям. По сравнению с резистивны-ми они более прозрачны. Выросла механическая защищенность, комфортность, пропала необходимость в калибровке, появился «многопальцевый» интерфейс. Все это обязательно будет востребовано в промышленной электронике.

Резистивные сенсорные панели на основе принципа изменения сопротивления для определения координат нажатия уже используются отечественными разработчиками электронной аппаратуры и доступны на рынке электронных компонентов как для опытных, так и для серийных изделий. Так же хорошо обстоит дело и с информационной поддержкой конкретных устройств и контроллеров резистивных сенсорных па-

нелей, на которые есть подробные описания и примеры работы. Однако с емкостными панелями, использующими принцип измерения емкости в точке прикосновения для определения координат, все обстоит иначе. Несмотря на обилие бытовых устройств, таких как телефоны, планшеты, смартфоны, снабженных емкостными панелями, у поставщиков электронных компонентов трудно найти дисплей с емкостной панелью (или панель отдельно), если только он не является запасной частью какого-нибудь именитого смартфона. А еще труднее найти информацию по работе с такими панелями.

Образцы панелей ТР043 2D 1PiiTP0482D IP уже можно купить у основных продавцов радиокомпонентов на российском рынке, таких как «КТЦ-МК» и «МТ-Систем», предварительно оформив заказ. С технической поддержкой этих изделий дела обстоят сложнее, потому что это новые устройства и найти нужную информацию — проблема.

Описание устройства емкостной сенсорной панели

Емкостная панель ТР048 2D 1Р сделана по проекционно-емкостной технологии и состоит из стекла с нанесенной на него проводящей прозрачной сеткой электродов и электронной схемы. Более подробно об этой панели можно прочитать в статье [ 1 ]. Схема собрана на гибкой плате, подключенной к стеклу, переходящей в шлейф (рис. 1).

Основа электронной схемы — контроллер фирмы Sitronix Technology Corp. Внутреннее устройство контроллера приведено в таблице 1. Контроллер st 1232 с помощью мультиплексора и преобразователя «емкость-напряжение» определяет токи утечки с контактов-электродов, распределенных по стеклу, преобразует емкость в напряжение, и далее после фильтрации сигнал подвергается преобразованию в цифровую форму

so-

S1-

S30-S31 -

Ч я

л

<ß Ä ь I Ф

Sil 8 § | ail

Ю с &

8si о. х

с

оо

Фильтр низкой частоты АЦП Микро-

контроллер

Источник опорного напряжения

Стабилизатор 1,8 В

2

S

тгг

О'",«,

§ш'ю' > >

Внешние интерфейсы

SPI

-SS/SCK - SCK/SDA • MISO -MOSI

I2C

GPIO

- SS/SCK

- SCK/SDA

- GPI01/GPI0Q

Рис. 2. Структурная схема контроллера st1232

Таблица 1. Варианты шлейфов сенсорной панели: 6-, 8- и 10-контактные

Контакт шлейфа панели Название Назначение

| 6-контактная |

1 VCC Напряжение питания

2 I2C SCL Линия тактирования последовательных данных интерфейса 12С

3 I2C SDA Линия последовательных данных интерфейса 12С

4 INIT Сигнал готовности данных в панели

5 RESET Сброс контроллера

6 GND Общий провод питания

| 8-контактная |

1 I2C SCL Линия тактирования последовательных данных интерфейса 12С

2 GND Общий провод питания

3 I2C SDA Линия последовательных данных интерфейса 12С

4 INIT Сигнал готовности данных в панели

5 VCC Напряжение питания

6 GND Общий провод питания

7 RESET Сброс контроллера

8 GND Общий провод питания

| 10-контактная |

1 RESET Сброс контроллера

2 VCC Напряжение питания

3 I2C SDA Линия последовательных данных интерфейса 12С

4 I2C SCL Линия тактирования последовательных данных интерфейса 12С

5 INIT Сигнал готовности данных в панели

6 NC Не подключено

7 NC Не подключено

8 NC Не подключено

9 GND Общий провод питания

10 GND Общий провод питания

аналого-цифровым преобразователем (ADC). Затем сигнал попадает в микроконтроллер (MCU), который рассчитывает координаты прикосновения к стеклу, определяет число

точек прикосновения (в контролере st1232 — только две) и опознает динамические движения пальцев пользователя на экране — жесты. Контроллер st1232 рассчитывает координаты, исходя из максимальных размеров экрана в точках — 800x600. Калибровка емкостной сенсорной панели, как в случае с резистивной панелью, не нужна. Микросхема поддерживает двухпроводный интерфейс I2C для обмена информацией с управляющим процессором.

Контроллер st1232 содержит и SPI-интер-фейс, но на конкретной панели, на контакты шлейфа выведены только сигналы I2C.

Назначение контактов приведено на рис. 2 для вариантов стекол с 6-, 8- и 10-контактным шлейфом. Для подключения к своему устройству потребуется ответный разъем типа FPC-08-U (шаг 0,5 мм), например C3917-08UTTI00.

Сигналы на разъеме имеют следующее функциональное назначение:

• VCC — напряжение питание 3,3 В (допустимые пределы — 2,4-3,6 В).

• GND — общий провод.

• SCL — тактовая частота интерфейса I2C. Входной сигнал.

• SDA — последовательные данные интерфейса I2C. Вход/выход.

• RST — сигнал сброса процессора (осуществляется низким уровнем). Входной сигнал.

• INIT — сигнал прерывания, правильней было бы назвать INT. Выходной сигнал.

При перепаде из высокого в низкий уровень сообщает внешнему контроллеру о наличии информации о прикосновениях к панели. • NC — неподключенные цепи.

Тем, кто не знаком с протоколом I2C, настоятельно советуем ознакомиться с его работой подробно [2]. А также с конкретной реализацией этого интерфейса в вашем управляющем контроллере.

Краткие характеристики интерфейса этого устройства:

1. Является ведомым в операциях обмена.

2. Частота тактового сигнала — до 400 кГц.

3. Адрес микросхемы в пространстве адресов I2C: Address = 0x55h.

4. Адреса внутренних регистров: от 0x10 до 0x14 (шестнадцатеричные). Подключение панели и внешнего управляющего контроллера показано на рис. 3. Далее управляющий контроллер мы будем называть хост-контроллером или хостом.

Содержимое регистров контроллера сенсорной панели

Контроллер панели st 1232 имеет набор регистров, доступных для чтения управляющим контроллером. Прочитав их содержимое, можно получить информацию о нажатиях, скольжении, жестах или необработанных данных. Список регистров приведен в таблице 2.

Управляющий контроллер (хост)

SDA щ 1ППГ w SDA

SCL SCL

п

RESET RESET

INTERUPT INIT

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

+3,3 В gnd +и OB +3,3 В gnd

Тачскрин

Таблица 2. Регистры контроллера тачскринов st1232

Рис. 3. Подключение сенсорной панели к своему контроллеру

Адрес регистра Имя регистра Данные регистра D7... D0 7 бит 6 бит 5 бит 4 бит 3 бит 2 бит 1 бит 0 бит

0х10 Keys/Fingers Кнопки (Keys) | Пальцы (Fingers)

0х11 Gesture | Код жеста

0х12 Координаты XY0 (старший байт) Достоверность | X0_H (x10, x9, x8) | Резерв Y0_H (y10, y9, y8)

0х13 Координата X0 (младший байт) X0_L (x7-x0)

0х14 Координаты Y0 (младший байт) Y0_L (y7-y0)

0х15

0х16

0х17

1501

дисплеи

И

и

SDA

SCL

□аас

\ЛУА______7ЛАА

Адрес контроллера 0x55 R/W

ооо/оо

в:_Стартовая комбинация сигналов

13ЛЛ/: Запись (низкий) А: Подтверждение Р: Стоповая комбинация сигналов

/ЛУД______JAf\JAJ

Адрес первого регистра 0x10

Г

Удерживаем сигнал вС1- в нуле, пока не будет готов ведомый контроллер

SDA

SCL

:ххх:

\ЛА_.....ТАЛА

Адрес контроллера 0x55 R/W

ооооо

S:_Стартовая комбинация сигналов

R/W: Чтение (высокий) А: Подтверждение Р: Стоповая комбинация сигналов

/ЛА......ТЛУЛААУДт

Значение регистра 0x10

□ао

^иоооог

Uj

'ЛА......ТЛААУ

Значение регистра 0x14

NA

Удерживаем сигнал ЭСЬ в нуле, пока не будет готов ведомый контроллер

рис. 4. Регистры контроллера сенсорной панели вИ232: а) запись в регистр; б) последовательное чтение содержимого регистров

Регистры Keys и Fingers

Поле пальцев (Fingers) — биты 0-3 регистра Keys/Fingers — представляет число пальцев, обнаруженных контроллером. Координата последнего обнаруженного пальца представлена в полях координат X и Y, их нужно составить из младшей и старшей частей регистров 0x12, 0x13, 0x14.

Поле кнопки (Keys) — биты 4-7 регистра Keys/Fingers — представляет, какая клавиша нажата или отпущена. Каждый бит в поле клавиш Keys представляет нажатое или отпущенное состояние одной клавиши. Если бит установлен, это означает, что соответствующая клавиша нажата. Иначе — клавиша отпущена. Сигналы клавиш — это входные сигналы на выводах контроллера панели st1232, но не выведенные на ламельные площадки гибкого шлейфа.

Регистр Gesture

Регистр жеста — Gesture — сообщает хосту, какой жест распознан контроллером. Коды жестов содержатся в младших пяти битах этого регистра (адрес 0x11).

Если жест опознан, то генерируется прерывание, и внешний контроллер должен считать регистры панели. Отсутствие жеста определяется кодом 0x00 (не определено). Коды приведены в таблице 3.

Регистры координат XY

Регистры координат XY представляют координаты X, Y для каждого идентификатора ID-точки соприкосновения. Если битовое поле достоверности (бит 7 регистра 0x12) установлено в 1, то это говорит о том, что координаты, лежащие в регистрах координат (регистры 0x12, 0x13, 0x14), действительны и произошло касание дисплея в этой точке.

Младший байт координаты X находится в регистре 0x13. Три бита — 4-й, 5-й и 6-й бит регистра 0х12 — являются старшими битами координаты X (х8, х9, х10). Младший байт координаты Y находится в регистре 0x14. Три бита — биты 0, 1 и 2 регистра 0х12 — являются старшими битами координаты Y (у8, у9, у10).

Чтение регистров контроллера

Для того чтобы считать значение какого-либо регистра контроллера панели, хост должен произвести запись адреса в его внутренний регистр, который называется регистром стартового адреса. Его содержимое указывает, откуда мы будем считывать информацию при последующем чтении контроллера (рис. 4). Далее хост должен произвести последовательные операции чтения данных, при этом адрес чтения — регистр стартово-

Таблица 3. Коды жестов

код жеста Название Описание

0х00 No detected Ничего

0х01 Single Touch Tap Одиночное касание

0х02 Single Touch Double Tap Одиночное двойное касание

0х03 Single Touch Slide Up Одиночное скольжение вверх

0х04 Single Touch Slide Down Одиночное скольжение вниз

0х05 Single Touch Slide Left Одиночное скольжение влево

0х06 Single Touch Slide Right Одиночное скольжение вправо

0х07 Two Finger Slide Up Двухпальцевое скольжение вверх

0х08 Two Finger Slide Down Двухпальцевое скольжение вниз

0х09 Two Finger Slide Left Двухпальцевое скольжение влево

0х0А Two Finger Slide Right Двухпальцевое скольжение вправо

0х0В Pinch In (Zoom In) Пониженное скольжение двух пальцев друг к другу (уменьшает масштаб)

0х0С Pinch Out (Zoom Out) Скольжение двух пальцев друг от друга (увеличивает масштаб)

0x0D Reserved Резерв

0x1F

го адреса — будет автоинкрементироваться (рис. 4б). Например, записав число 0x10 в регистр стартового адреса и прочитав пять раз подряд значения контроллера, мы последовательно получим значения регистров 0x10, 0x11, 0x12, 0x13, 0x14.

Интерфейс контроллера st1232 поддерживает повторяющиеся операции чтения (Repeated Register Read). Это значит, что установленный однажды стартовый адрес регистра контроллера (в нашем примере — 0x10) уже хранится в контроллере, и нужно просто повторить операцию чтения регистров без записи стартового адреса. Периодически повторяем последовательность, представленную на рис. 4б, для получения данных.

Алгоритм считывания данных из контроллера

Последовательность действий программы управляющего процессора (хоста):

1. В инициализационной части своего программного обеспечения проводим следующие действия:

- Заведем глобальные переменные, дублирующие значения внутренних регистров контроллера, например, назовем их Reg0x10-Reg0x14.

- Заведем глобальную переменную — счетчик принятых по шине I2C байт (CountRecByte).

- Заведем флаг готовности данных ReadyDataTS, который будем устанавливать при обновлении переменных Reg0x10-Reg0x14.

2. Инициализируем узел I2C управляющего контроллера как «мастер», и он будет управлять обменом информации. А контроллер панели будет ведомым устройством.

Сигнал прерывания от сенсорной панели

Подпрограмма обработки \

1

прерывания от сенсорной панели

Сигналы шины I2C условно

Подпрограмма обработки прерывания от аппарата состояния шины I2C

Програмный флаг обновления данных с сенсорной панели ReadyDataTS

«рщеиавдюш^чме сотовую

Рис. 5. Диаграмма считывания информации с сенсорной панели

3. Определяем один из выводов управляющего контроллера как вход для получения прерывания от контроллера сенсорной панели.

4. Определяем один из выводов управляющего контроллера как выход для сброса контроллера сенсорной панели.

5. Подготавливаем подпрограмму прерывания управляющего контроллера от узла 12С. В ней анализируем текущее состояние аппарата 12С, счетчик принятых в предыдущих прерываниях байт. Считываем регистр данных, сохраняем его во внутренней переменной и инкрементируем счетчик принятых байтов. Наша задача принять пять байтов, после чего завершить обмен на шине 12С, то есть выдать фазу «Стоп».

6. Подготавливаем подпрограмму прерывания от вывода управляющего контроллера, на которую приходит сигнал прерывания от контроллера панели. Внутри ее инициируем обмен по шине 12С, формируем фазу «Старт» и передачу адреса устройства (контроллера панели) 0x55 и бит операции чтения. А также обнулим счетчик принятых байтов СоиШЛесВу:е.

7. Инициируем обмен по шине 12С — формируем фазу «Старт», передачу адреса устройства (адреса контроллера панели) 0x55 и операции записи адреса первого регистра 0x10 для будущих блоковых считываний.

Процесс взаимодействия контроллера сенсорной панели и управляющего контроллера будет выглядеть следующим образом.

Считывание будет инициировать контроллер панели, когда установлено напряжение низкого уровня на контакте прерывания — сигнал 1№Т. Далее контроллер пользователя, перейдя в подпрограмму обработки прерывания, инициирует считывание байта данных.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

После его приема попадаем в подпрограмму обработки прерывания, но уже по событию завершения передачи байта контроллером 12С, где сохраняем принятый байт и инициируем следующее чтение. После приема пятого байта, контролируя счетчик СоиПКесВуе, завершаем циклы обмена с шиной и устанавливаем программный флаг ReadyDataTS, который будет «говорить» программному обеспечению о необходимости дальнейшего анализа данных. После обработки принятых данных из контроллера панели программами верхнего уровня этот флаг сбросим.

Контроллер панели способен перегрузить хост частотой своих прерываний, поэтому целесообразно по аналогии с обработчиками клавиатуры производить считывание не чаще чем через 10-30 мс. То есть пришло прерывание, считали информацию, замаскировали прерывание, например, на 20 мс, затем разрешили снова. В этом случае, если пользователь вашего устройства будет удерживать палец на панели, то вы получите поток прерываний с промежутком 20 мс. Возможен и другой алгоритм работы — просто периодическое считывание данных из контроллера панели, при этом механизм прерываний не используется. На рис. 5 представлена схема считывания информации с сенсорной панели.

Особенности работы контроллера сенсорной панели

При удержании пальца на панели на одном и том же месте в его контроллере формируется постоянный поток событий о прикосновении (хотя логичнее было бы сформировать это событие однажды), и по сигналу прерывания хост вынужден считывать одну и ту же информацию много раз. Жесты опознаются без привязки к координатам их выполнения.

Жесты опознаются после отпускания пальцев от панели. Это происходит так: положив два пальца на поверхность панели и выполнив скольжение их друг к другу, а затем убрав руку от сенсора, мы совершили жест. Информация о жесте будет доступна для считывания после отпускания пальцев от сенсора.

Обратите внимание на то, что бит 7-дос-товерность, регистра координат 0x12 определяет только доступность и правильность координат касания и не связан с механизмом опознавания жестов, который работает независимо. Признаком распознавания жеста является ненулевой код в регистре жестов. Алгоритм опознавания жестов, реализованный в контроллере st1232, определяет, по оценке автора, приблизительно 80-90% жестов. То есть если исполнить жест Pich in — скольжение двух пальцев навстречу друг к другу — десять раз, то в одном или двух случаях контроллер не распознает жест, в регистре жеста будет 0, или мы прочитаем неверный код жеста.

Одиночные касания определяются безукоризненно. Так же точно и без нареканий определяется количество точек касания. Поэтому, может, стоит написать алгоритм опознавания жестов самому, в программном обеспечении своего управляющего процессора, используя более точную информацию из регистров координат касания (0x12, 0x13, 0x14) и регистра числа пальцев (0x10). Впрочем, после проверки жестов, уменьшения/увеличения на смартфоне htc Desire, при просмотре фотографий процент распознанных жестов оказался примерно таким же. Если реакции на жест не происходит, пользователь просто повторяет жест, добиваясь нужного результата. Если такой подход приемлем, то можно пользоваться системой опознавания жестов контроллера.

152I дисплеи

Эта сенсорная панель чувствует прикосновения как к ее лицевой, так и внутренней стороне. Если ее поставить в свое устройство наоборот, то она будет работать, но будет срабатывать и когда мы просто расположим ладонь параллельно панели, на небольшом расстоянии от нее. Поэтому будьте внимательны: устанавливайте панель правильно — обе стороны сенсора похожи. Сенсорная панель чувствительна к помехам по питанию: при разводке разъема для подключения панели необходимо в непосредственной близости от выводов питания 3,3 В и GND расположить керамический конденсатор не менее 0,15 мкФ.

Заключение

В результате освоения технологии работы с емкостной сенсорной панелью ТР043 2D 1Р на контроллере st1232 разработчик сможет встраивать их в свои приложения. При этом повысится конкурентоспособность разрабатываемых изделий за счет улучшенных функций емкостных сенсорных панелей, таких как прозрачность, повышенное число нажатий на панель, распознавание нескольких прикосновений, жестов. Несмотря на более высокую стоимость емкостной сенсорной панели по сравнению с резистивной, на фоне общей цены изде-

лия, в котором она будет применена, повышение стоимости не будет столь значительным. Хотя в массовых недорогих изделиях, где цена является одним из главных факторов, применение резистивных панелей будет предпочтительней.

Изучив работу контроллера st1232, легко перейти на более совершенный контроллер st1332, полную документацию на который автору во время написания статьи не удалось найти в открытом доступе, но предварительные данные говорят о преемственности его внутренней архитектуры и протоколов обмена. Известно, что st1332 поддерживает более высокое разрешение (2048x2048) и определение пяти одновременных касаний. ■

Литература

1. Мухин И. Сенсорные экраны — решение проблем. Ч. 2 // Телевидение и радиовещание. 2006. № 4.

2. Шина 12С и ее использование — http://www.gaw.ru/html.cgi/txt/interface/ iic/start.htm

3. Техническое описание емкостной сенсорной панели ТР048 2Б — www.touchpanelpro.com

4. Техническое описание контроллера 8Й232 — www.sitronix.com.tw

i Надоели баннеры? Вы всегда можете отключить рекламу.