Coder Social home page Coder Social logo

quen0n / xpt2046-stm32-hal Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 4.0 13 KB

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

C 100.00%
stm32 stm32f4 stm32f103 stm32f103c8t6 stm32f0 stm32f1 stm32f2 stm32f3 stm32hal stm32cubemx xpt2046 touchscreen stm32f411 stm32f446

xpt2046-stm32-hal's Introduction

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, а после - вернёт старые.

xpt2046-stm32-hal's People

Contributors

quen0n avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.