Dixi_Alex
@Dixi_Alex

Использование Touch panel на LCD HY32C по SPI на STM32. Как сделать правильно?

Есть дисплей LCD HY32C с контроллером touch panel ads7843, работающей по SPI.
во всех примерах что я нашел какая-то совершенно разная информация по регистрам в примерах.
В даташите также невнятное описание.
Подскажите что я делаю неправильно, что у меня вместо координат вылазит какойто бред?

#include "mbed.h"

Serial pc(SERIAL_TX, SERIAL_RX);
SPI panel(SPI_MOSI, SPI_MISO, SPI_SCK);
InterruptIn TP_IRQ(PB_12);

DigitalOut TP_CS(PB_6);

void tp_tap(void)
{
	unsigned short X, Y;

	panel.write(0x90);
	X = panel.write(0xFF);
	X<<=8;
	X += panel.write(0x00);
	X=X>>4;
	pc.printf("X=%d,  ", X);

	panel.write(0xD0);
	Y = panel.write(0x00);
	Y<<=8;
	Y += panel.write(0x00);
	Y=Y>>4;
	pc.printf("Y=%d\n", Y);
}


int main(){
	TP_CS=0;
	panel.format(12, 0);
	TP_IRQ.fall(&tp_tap);
	while(1){ }
}
  • Вопрос задан
  • 3007 просмотров
Пригласить эксперта
Ответы на вопрос 1
Dixi_Alex
@Dixi_Alex Автор вопроса
Мне кажется, что я понял примерно как оно работает - ads7843 это практически АЦП, которое выводит по SPI значения напряжения на двух резистивных делителях в 12ти битном формате.
То есть значение на выходе - это не координаты как я думал, а значения оцифрованного напряжения в точке нажатия, которое надо преобразовать в значения координат на LCD.

Поправте меня если я не прав, пожалуйста.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы