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

Ця бібліотека використовується для зчитування дотиків по шині 4-wire з контролером ADS7843 (також ця бібліотека працює з контролерами Zilltek UH7843 або XPTEK XPT2046). Контролер може управлятися через шину SPI, але в цьому прикладі використовувані виводи не пов'язані з шиною SPI процесора. Робота була реалізована на GPIO процесора, оскільки "красивий" спосіб не був найзручнішим. Сам тачскрін працює не дуже добре, при слабкому натисканні дає неточні результати. Для калібрування є функція, з послідовним торканням трьох точок на екрані, після цього тачскрін працює максимально точно (формула для цього була взята з специфікації 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"

Приклад використання:

//--------------------------------------------------------------
// Файл     : main.c
// Дата     : 15.08.2013
// Версія   : 1.1
// Автор     : UB
// EMail    : mc-4u(@)t-online.de
// Веб      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Модуль   : CMSIS_BOOT, M4_CMSIS_CORE
// Функція  : Демонстрація Touch-Library
// Примітка : Ці два файли повинні бути на 8MHz
//              "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 і окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить задавати питання на його сайті німецькою або англійською мовами.

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

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

Top