STM32F4. Урок 9 — Тачскрин ADS7843

Эта библиотека используется для считывания прикосновения по шине 4-wire с контроллером ADS7843 (Также данная библиотека работает с контроллерами Zilltek UH7843 или XPTEK XPT2046). Контроллер может управляться через шину SPI, но в данном примере используемые выводы не связанны с шиной SPI процессора. Работа была реализована на GPIO процессора, потому что «красивый» способ не являлся самым удобным. Сам тачскрин работает не очень хорошо, при слабом нажатии дает неточные результаты. Для калибровки есть функция, с последовательным касанием 3-х точек на экране, после этого тачскрин работает максимально точно (формула для этого была взята из спецификации ATMEL). Калибровку можно выполнить лишь один раз, получив калибровочные значения через отладчик и записав их непосредственно в C-File.

Таймер 5 используется для циклического считывания прикосновений (каждые 50 мс) и сохраняет полученные данные в структуру «Touch_Data». Эта структура может быть легко запрошена в основной программе (В H-файл может быть настроен отдельный таймер для автоматического опроса структуры).

Библиотека имеет 4 функции для опроса событий дисплея:

  • “OnPressed” — true, пока прикосновение не закончится
  • “OnClick” — true, лишь в момент нажатия на тачскрин
  • “OnRelease” — true, после окончания прикосновения
  • «OnDoubleClick» — true, при двойном клике

Пример работы:

Используемые выводы:

PA15 -> ADS7843_ChipSelect
PB1 -> ADS7843_DIN
PB4 -> ADS7843_Clk
PB5 -> ADS7843_DOUT
PB15 -> ADS7843_PEN
PC2 -> ADS7843_BUSY (в данном коде не используется)

Требования:
 Подключаемые модули CooCox-IDE: GPIO, TIM, MISC.
 Поддерживаемые библиотеки: STM32_UB_LCD_ST7783.

Функции:

ErrorStatus UB_Touch_Init(void); // Инициализация тачскрина
ErrorStatus UB_Toch_Calibrate(void); // Калибровка тачскрина
bool UB_Touch_OnPressed(void); // Событие «OnPressed»
bool UB_Touch_OnClick(void); // Событие «OnClick»
bool UB_Touch_OnRelease(void); // Событие «OnReleased»
bool UB_Touch_OnDoubleClick(void); // Событие «OnDoubleClick»

Пример использования:

//—————————————————————
// File : main.c
// Datum : 15.08.2013
// Version : 1.1
// Autor : UB
// EMail : mc-4u(@)t-online.de
// Web : www.mikrocontroller-4u.de
// CPU : STM32F4
// IDE : CooCox CoIDE 1.7.0
// Module : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der Touch-Library
// Hinweis : Diese zwei Files muessen auf 8MHz stehen
// «cmsis_boot/stm32f4xx.h»
// «cmsis_boot/system_stm32f4xx.c»
//—————————————————————

#include «main.h»
#include «stm32_ub_lcd_st7783.h»
#include «stm32_ub_touch_ads7843.h»

int main(void)
{
SystemInit(); // Инициализация настроек кварца

UB_LCD_Init(); // Инициализация дисплея
UB_Touch_Init(); // Инициализация тачскрина

// Цвет экрана — синий
UB_LCD_FillScreen(RGB_COL_BLACK);

while(1)
{
// Касание тачскрина
if(Touch_Data.status==TOUCH_PRESSED) {
// Когда происходит прикосновение,
// нарисовать пиксель по координатам прикосновения
UB_LCD_SetCursor2Draw(Touch_Data.pos.xp,Touch_Data.pos.yp);
LCD_RAM=RGB_COL_RED;
}

}
}

В приложении проект CooCox и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

Прикрепленные файлы:

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

Ваш адрес email не будет опубликован.