Главная » Микроконтроллеры
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

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"

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

//--------------------------------------------------------------
// 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 и отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

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

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

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (1) | Я собрал (0) | Подписаться

0
Кинг #
Странно, почему то автор библиотеки пишет, что калибровочные данные можно взять из дебага и забить в переменные. А в UB_Touch_Init в конце не указал функцию P_Touch_KalSetData();
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Квадрокоптер Syma X11 Паяльник с регулировкой температуры
вверх