Skip to content

Библиотека для работы с резистивным тачскрином на контроллере XPT2046 по SPI через HAL для STM32

quen0n/XPT2046-STM32-HAL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

XPT2046-STM32-HAL

Библиотека для работы с резистивным тачскрином на контроллере XPT2046 по SPI через HAL для STM32

Оглавление

Общее описание

Библиотека написана для дисплея 240х320 TFT 2.2 от WaveShare с контроллером тачскрина XPT2046. Язык - Си, среда разработки - Keil uVision 5, генератор кода - STM32 CubeMX. В качестве железа была использована отладочная плата STM32 NUCLEO-F446RE с микроконтроллером STM32F446RET6. Обмен данными организован по SPI.

Описание функций

  • void XPT2046_init(SPI_HandleTypeDef *spi, touchOrienation o, const uint16_t width, const uint16_t height) - инициализация тачскрина. Здесь необходимо указать интерфейс SPI, по которму будет происходить передача данных, ориентацию дисплея, длину и ширину дисплея.
  • touchStates XPT2046_getTouchState(void) - получить текущее состояние тачскрина. Возвращает объект, в котором указано текущее состояния нажатия - "Нет нажатия", "Нажат (передний фронт /)", "Короткое удерживание (-)", "Длинное удерживание (-)", "Отпущено (задний фронт )".
  • touch_t XPT2046_getTouch(void) - получить координаты и состояние нажатия. Можно предварительно не вызывать XPT2046_getTouchState, а сразу получать координаты и проверять состояние нажатия.

Подключение

Для подключения используются 5 проводов:

  • MOSI - линия отправки данных SPI
  • MISO - линия приёма данных SPI
  • SCK - линия тактирования SPI
  • T_CS - chip select, указание контроллеру тачскрина что работаем именно с ним
  • T_IRQ - линия прерывания по нажатию на тачскрин, активно в низком уровне.

После подключения к микроконроллеру, настройте T_CS на выход, а T_IRQ - на вход (можно настроить прерывание). По необходимости, подправьте в XPT2046.h макросы работы с пинами.

Использование

#include "XPT2046.h"

...

int main(void) {
	...
  // Инициализация тачскрина
  XPT2046_init(&hspi1, XPT2046_LANDSCAPE,320,240);
  ...
  while (1)  {
    //Получение координат и состояния нажатия
    touch_t t = XPT2046_getTouch();
    //Если тачскрин удерживается, то рисование круга
    if(t.state == T_shortHoldDown || t.state == T_longHoldDown) {
      TFT_fillCircle(t.x,t.y,penSize,TFT_COLOR_CURRENT);
    }
  }
}

Параметры SPI

Параметры стандартные, старайтесь не превышать скорость более 1.5 МГц. Если у вас на шине несколько устройств с разными параметрами SPI, раскомментируйте строчку #define XPT2046_SPI_PARAM_CONTROL в XPT2046.h. Библиотка перед получением данных выставит правильные параметры SPI, а после - вернёт старые.

About

Библиотека для работы с резистивным тачскрином на контроллере XPT2046 по SPI через HAL для STM32

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages