ST7796S 4" к АРМ

Что значит “отсутствует стирание”?
Я вообще не знаю ни одного дисплея, где бы оно присутствовало.

Что значит “неправильные координаты”?
Как Вы определяете, что они неправильные?

“тормоза” - я уже спрашивал, как это выглядит на логическом анализаторе?

В общем, на большинство вопросов существуют ответы, просто Вы не хотите их искать.

инициализацию надо брать от адафруит
Вот тут и для HARD SPI и софт SPI

// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, TFT_RST);

// SoftSPI - note that on some processors this might be *faster* than hardware SPI!
//Adafruit_ST7796S_kbv tft = Adafruit_ST7796S_kbv(TFT_CS, TFT_DC, MOSI, SCK, TFT_RST, MISO);
/*
 * SPI Interfaces
 */
#define SPI_INTERFACES_COUNT 1

#define SPI_INTERFACE        SPI0
#define SPI_INTERFACE_ID     ID_SPI0
#define SPI_CHANNELS_NUM 4
#define PIN_SPI_SS0          (77u)
#define PIN_SPI_SS1          (87u)
#define PIN_SPI_SS2          (86u)
#define PIN_SPI_SS3          (78u)
#define PIN_SPI_MOSI         (75u)
#define PIN_SPI_MISO         (74u)
#define PIN_SPI_SCK          (76u)
#define BOARD_SPI_SS0        (10u)
#define BOARD_SPI_SS1        (4u)
#define BOARD_SPI_SS2        (52u)
#define BOARD_SPI_SS3        PIN_SPI_SS3
#define BOARD_SPI_DEFAULT_SS BOARD_SPI_SS3

#define BOARD_PIN_TO_SPI_PIN(x) \
	(x==BOARD_SPI_SS0 ? PIN_SPI_SS0 : \
	(x==BOARD_SPI_SS1 ? PIN_SPI_SS1 : \
	(x==BOARD_SPI_SS2 ? PIN_SPI_SS2 : PIN_SPI_SS3 )))
#define BOARD_PIN_TO_SPI_CHANNEL(x) \
	(x==BOARD_SPI_SS0 ? 0 : \
	(x==BOARD_SPI_SS1 ? 1 : \
	(x==BOARD_SPI_SS2 ? 2 : 3)))

static const uint8_t SS   = BOARD_SPI_SS0;
static const uint8_t SS1  = BOARD_SPI_SS1;
static const uint8_t SS2  = BOARD_SPI_SS2;
static const uint8_t SS3  = BOARD_SPI_SS3;
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK  = PIN_SPI_SCK;

ну рисуюю квадрат , после этого перепрошиваю контроллер с исправлениеми запускаю а на нем остаются квадраты со старых проб и так по нарастающей пока не выключу питание… ресеты не помогают… но возможно я чегото не сделал принудительно…

координаты не правильные например задаю закарасить прямоугольник в координатах ( 200.125-250.175 должен примерно нарисовать в середине … квадратик 50 на 50 а рисует либо сбоку либо в середине но внизу…

с тормозами вроде понял - анализатор показал что между командами задержки большие видимо я неправильно их расчитал, хотя по другим библиотекам задежки в 100 делей так и есть … я использовал

	TFT_SendCommand(ST7796S_SWRESET);
	HAL_Delay(100);
	TFT_SendCommand( ST7796S_SLPOUT);
	HAL_Delay(50);

возможно не соответствует буду дальше разбираться

Спсисбо. я пробовал все варианты, но если Вы считаете что адафруит болше внушает доверия останавлюсь на их варианте и буду с ним искать у себя ошибки

“Например” не интересует.
Чтобы понять, в чем дело, нужно вычислить функцию преобразования тех величин, которые задаются, в те, которые получаются на экране.

И еще:
По сути от библиотеки дисплея требуется:

  1. Инициализировать дисплей.
  2. Задать регион (прямоугольник) рисования.
  3. Уметь записывать в видеопамять.
  4. Обеспечить правильную кодировку цвета.

Вот для начала попытайтесь сделать эти 4 функции, тем самым разделив основную задачу на несколько подзадач. Как говорится, слона нужно есть по частям.

что-то туплю

#if 0
#elif 0  
				0x36, 1, 0x68,
				0x3A, 1, 0x05,
		0		0xB0, 1, 0x80, 
				0xB6, 2, 0x00, 0x02,
				0xB5, 4, 0x02, 0x03, 0x00, 0x04,
				0xB1, 2, 0x80, 0x10, 
		
#elif 0  
    0x36, 1, 0x48,
    0x3A, 1, 0x05,              //Interlace Pixel Format [XX]
  else
//    0xC0, 2, 0x10, 0x10,        //Power Control 1 [80 25]
//    0xC1, 1, 0x41,              //Power Control 2 [13]
    0xC5, 1, 0x1C,              //VCOM  Control 1 [1C]
    0x36, 1, 0x48,              //Memory Access [00]
#endif

я правильно понимаю что использоваться будут только две строчки


 0xC5, 1, 0x1C,              //VCOM  Control 1 [1C]
 0x36, 1, 0x48,              //Memory Access [00]

спасибо

Правильно

Всем спасибо вопрос с инитом , инверсией координатами и тормозами решен.
инит адафруит почти подошел, если расскоментировать (#elif 0 ) часть кода, несколько команд из TFT_eSPI взято

Вопрос не теме. А где купили дисплей? Ищу 4" на ST7796S ( с али пришел на ILI9486)