Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ADS7843 помогите разобраться
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
batisto4ka
Помогите, пожалуйста, примером кода, как работать с тачскрином ads7843e. Есть плата SK-WF43BTIBEDOTP-Plug. Там TFT с данным тачскрином. По примерам в нете настраиваю spi. В результате при касании к экрану срабатывает прерывание, настроенное на PENIRQ. Но при опрашивании координат всегда возвращается 0. Опрашиваю координаты командами 0х9С и 0хDC.
Алгоритм такой: обработчик прерывания от PENIRQ устанавливает флаг TOUCH_FLAG.В основном цикле идет проверка флага и считывание координат х и у следующим образом:
Код
if (TOUCH_FLAG)
  {
   TOUCH_FLAG=o;
   Xpos=WriteSPI(SPI1,0x9C);
   Ypos=WriteSPI(SPI1,0xDC);
  }

//
uint8_t WriteSPI(SPI_TypeDef *SPIx, uint8_t val)
{ SPIx->DR=val;
while(!(SPI1->SR&SPI_SR_RXNE));
return SPI1->DR;
}

В качестве мастрева использую камень stm32f107vc(плата SK-mstm32f107)
batisto4ka
Теперь тач отвечает, но постоянно выдает координату Х 0xff, y-0x7f.Думаю, нужно оираться с настройками. Апока хотлось бы уточнить, в каком виде выдается напряжение и как оно соответствует координатам?

batisto4ka
и еще.Ноги SPI дрыгаются. Не могу подобрать скорость и настройки CPHA, CPOL. Подскажите, как для данного тачскрина настроить эти параметры
batisto4ka
Поставив прескаллер SPI в 2, получаю следующие данные (1. при первой обработке прерывания, 2. при второй обработке прерывания):
1. Верхний правый угол:
Код
//Координата Х
//1
k=WriteSPI(SPI1,0xDC);//  k=0x4c
k=WriteSPI(SPI1,0);    //k=0xff
k=WriteSPI(SPI1,0);     //k=0

//2
k=0xee,
k=0xf0,
k=0
Координата Y:
Код
//1
k=WriteSPI(SPI1,0x9C);//k=0x0с,
k=WriteSPI(SPI1,0);  //k=0
k=WriteSPI(SPI1,0);//k=0

2.
k=0xce,
k=0xf0
k=0xf5
Нижняя правая точка:
Координата Х
1. к=0x4c;
k=0x40,
k=0
2.
к=0x6c;
k=0,
k=0xc0
Координата У:
1.
к=0x0c;
k=0,
k=0
2.
к=0x0c;
k=0xff,
k=0
Нижняя левая точка:
Координата Х
1. к=0x4c;
k=0,
k=0xff
2.
к=0xee;
k=0,
k=0xf5
Координата У:
1.
к=0x0c;
k=0,
k=0
2.
к=0xce;
k=0,
k=0
Верхняя левая точка:
Координата Х
1. к=0xee;
k=0,
k=0
2.
к=0xcc;
k=0xf0,
k=0
Координата У:
1.
к=0xce;
k=0xc0,
k=0
2.
к=0x8c;
k=0xfc,
k=0

Как интерпретировать полученные данные?
sherr
Вообще-то у самого тачскрина приличная емкость - порядка тысяч пикофарад и показания после касания устанавливаются единицы- десятки микросекунд, поэтому обычно читают показания Х и У пока разница между соседними не станет минимальной (обычно 2-3 единицы), кроме того - отбрасывают слишком большие или слишком малые показания, ибо на самых краях данные некорректны.
Данные получаются в условных единицах, где 255 - максимум (ну 479 по Х и 271 по У для вашего дисплея) ну или минимум, смот-
ря как подключено в плаге. И еще, замечено, что если время от времени не читать результаты Х-У просто так не дожидаясь
касания, PENIRQ может подвиснуть ...
batisto4ka
Цитата(sherr @ Aug 27 2012, 21:30) *
Вообще-то у самого тачскрина приличная емкость - порядка тысяч пикофарад и показания после касания устанавливаются единицы- десятки микросекунд, поэтому обычно читают показания Х и У пока разница между соседними не станет минимальной (обычно 2-3 единицы), кроме того - отбрасывают слишком большие или слишком малые показания, ибо на самых краях данные некорректны.
Данные получаются в условных единицах, где 255 - максимум (ну 479 по Х и 271 по У для вашего дисплея) ну или минимум, смот-
ря как подключено в плаге. И еще, замечено, что если время от времени не читать результаты Х-У просто так не дожидаясь
касания, PENIRQ может подвиснуть ...

то есть, после срабатывания прерывания от penirq я читаю Х и У столько раз, пока пока разница между предыдцщим и текущим прочитанным значением Х не станет равна 2-3, и то же с У?
sherr
Цитата(batisto4ka @ Aug 28 2012, 10:04) *
то есть, после срабатывания прерывания от penirq я читаю Х и У столько раз, пока пока разница между предыдцщим и текущим прочитанным значением Х не станет равна 2-3, и то же с У?

У Стартеркита в примерах именно так - а у вас их нету,что ли , напишите им- пришлют на почту,
правда у них опросом в цикле, без прерывания ,,, у меня тоже их подобный код есть , но на stm32f4xx
batisto4ka
Цитата(sherr @ Aug 28 2012, 10:13) *
У Стартеркита в примерах именно так - а у вас их нету,что ли , напишите им- пришлют на почту,
правда у них опросом в цикле, без прерывания ,,, у меня тоже их подобный код есть , но на stm32f4xx

а дайте пример,какой есть у вас. и пример стартеркита у вас есть?
sherr
Куда слать ? Нашел только свое для LPC2478 и экрана 800*480, но именно с ads7843 - предупреждаю -
код ужасный, постараюсь вечерком выдрать нужное, и чуть-чуть откомментировать ...
batisto4ka
Цитата(sherr @ Aug 28 2012, 10:30) *
Куда слать ? Нашел только свое для LPC2478 и экрана 800*480, но именно с ads7843 - предупреждаю -
код ужасный, постараюсь вечерком выдрать нужное, и чуть-чуть откомментировать ...

ответила в личку
sasamy
Цитата(batisto4ka @ Aug 26 2012, 19:17) *
Помогите, пожалуйста, примером кода, как работать с тачскрином ads7843e. Есть плата SK-WF43BTIBEDOTP-Plug. Там TFT с данным тачскрином.


Посмотрите драйвер в ядре Linux
http://lxr.free-electrons.com/source/drive...creen/ads7846.c
там можете найти полезные дефайны и пример как фильтровать "отскоки", но вам все равно нужно калибровать показания, можете тут посмотреть теорию
http://www.ti.com/lit/an/slyt277/slyt277.pdf
у AD где-то аппнот есть на эту тему. Вы настраиваете АЦП на 8 бит, а экран у вас 480x272 - лучше 12 бит использовать.
batisto4ka
Цитата(sasamy @ Aug 28 2012, 13:43) *
Посмотрите драйвер в ядре Linux
http://lxr.free-electrons.com/source/drive...creen/ads7846.c
там можете найти полезные дефайны и пример как фильтровать "отскоки", но вам все равно нужно калибровать показания, можете тут посмотреть теорию
http://www.ti.com/lit/an/slyt277/slyt277.pdf
у AD где-то аппнот есть на эту тему. Вы настраиваете АЦП на 8 бит, а экран у вас 480x272 - лучше 12 бит использовать.


А может знаете, где найти этот апноут
Jury093
Цитата(batisto4ka @ Aug 28 2012, 22:33) *
А может знаете, где найти этот апноут

наверно где-то тут тыц
sasamy
Цитата(Jury093 @ Aug 28 2012, 23:58) *
наверно где-то тут


Не - не там sm.gif http://www.analog.com/static/imported-file...tes/AN-1021.pdf
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.