реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADS7843 помогите разобраться
batisto4ka
сообщение Aug 26 2012, 15:17
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Помогите, пожалуйста, примером кода, как работать с тачскрином 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)
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 26 2012, 19:13
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



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



Сообщение отредактировал batisto4ka - Aug 26 2012, 19:13
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 27 2012, 08:18
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



и еще.Ноги SPI дрыгаются. Не могу подобрать скорость и настройки CPHA, CPOL. Подскажите, как для данного тачскрина настроить эти параметры
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 27 2012, 14:00
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Поставив прескаллер 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

Как интерпретировать полученные данные?
Go to the top of the page
 
+Quote Post
sherr
сообщение Aug 27 2012, 18:30
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Вообще-то у самого тачскрина приличная емкость - порядка тысяч пикофарад и показания после касания устанавливаются единицы- десятки микросекунд, поэтому обычно читают показания Х и У пока разница между соседними не станет минимальной (обычно 2-3 единицы), кроме того - отбрасывают слишком большие или слишком малые показания, ибо на самых краях данные некорректны.
Данные получаются в условных единицах, где 255 - максимум (ну 479 по Х и 271 по У для вашего дисплея) ну или минимум, смот-
ря как подключено в плаге. И еще, замечено, что если время от времени не читать результаты Х-У просто так не дожидаясь
касания, PENIRQ может подвиснуть ...
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 28 2012, 07:04
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



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

то есть, после срабатывания прерывания от penirq я читаю Х и У столько раз, пока пока разница между предыдцщим и текущим прочитанным значением Х не станет равна 2-3, и то же с У?
Go to the top of the page
 
+Quote Post
sherr
сообщение Aug 28 2012, 07:13
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



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

У Стартеркита в примерах именно так - а у вас их нету,что ли , напишите им- пришлют на почту,
правда у них опросом в цикле, без прерывания ,,, у меня тоже их подобный код есть , но на stm32f4xx

Сообщение отредактировал sherr - Aug 28 2012, 07:14
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 28 2012, 07:23
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



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

а дайте пример,какой есть у вас. и пример стартеркита у вас есть?
Go to the top of the page
 
+Quote Post
sherr
сообщение Aug 28 2012, 07:30
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Куда слать ? Нашел только свое для LPC2478 и экрана 800*480, но именно с ads7843 - предупреждаю -
код ужасный, постараюсь вечерком выдрать нужное, и чуть-чуть откомментировать ...

Сообщение отредактировал sherr - Aug 28 2012, 07:47
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 28 2012, 10:17
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



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

ответила в личку
Go to the top of the page
 
+Quote Post
sasamy
сообщение Aug 28 2012, 10:43
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(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 бит использовать.

Сообщение отредактировал sasamy - Aug 28 2012, 10:44
Go to the top of the page
 
+Quote Post
batisto4ka
сообщение Aug 28 2012, 19:33
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Цитата(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 бит использовать.


А может знаете, где найти этот апноут
Go to the top of the page
 
+Quote Post
Jury093
сообщение Aug 28 2012, 19:58
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



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

наверно где-то тут тыц
Go to the top of the page
 
+Quote Post
sasamy
сообщение Aug 29 2012, 01:11
Сообщение #14


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



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


Не - не там sm.gif http://www.analog.com/static/imported-file...tes/AN-1021.pdf

Сообщение отредактировал sasamy - Aug 29 2012, 01:12
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01472 секунд с 7
ELECTRONIX ©2004-2016