Top.Mail.Ru
Уведомления
Очистить все

[Решено] Дисплей st7735. Подключение к stm32f100, stm32f072

Страница 3 / 8
(@olegmik93)
New member

Я тоже рассматривал тайминги эти, но не был до конца уверен.
На выходных попробую завести экранчик 🙂 И спасибо за то что делитесь знаниями 🙂 
  

ОтветитьЦитата
Размещено : 15.11.2021 22:56
Aveal reacted
Aveal
(@aveal)
Top level Admin

@olegmik93 👍

От: @olegmik93

И спасибо за то что делитесь знаниями 🙂 

Спасибо за отзыв)

ОтветитьЦитата
Размещено : 16.11.2021 11:44
olegmik93 reacted
(@andrej-8)
Level 1

Всем привет. Вопрос, при работе дисплея есть сдвиг ИЗО плюс по двум краям выводится полоски "мусора" (не важно какая ориентация дисплея). Как правильно исправить ошибку ? В среде Ардуино дисплеи показывают нормально.

IMG 20211117 121912
IMG 20211117 122009
IMG 20211117 121952
IMG 20211117 121928

 

ОтветитьЦитата
Размещено : 17.11.2021 13:02
Aveal
(@aveal)
Top level Admin

@andrej-8 можно оффсеты задефайнить и везде при отправке команд CASET/RASET их добавлять. Наверняка в ардуино-библиотеке так и сделано.

ОтветитьЦитата
Размещено : 17.11.2021 20:20
(@romanfaktor)
New member

@aveal, спасибо за туториал! Есть вопросы.

Во первых, как понять какие команды нужно отправлять при инициализации, а какие нет. Да, в даташите есть для некоторых команд описание из которого можно понять что ее нужно отправлять но по поводу большинства остальных остаются вопросы - нужно ее слать или нет, если нет то какие дефолтные значения и тп. Может быть есть какие то общие правила? Ну то есть хочется понять как в функции инит в туториале появились именно эти команды.

Ну и конкретно. Разбираюсь что за команды отсылаются. Вот например команда PWCTR1. В даташите на st7735 эта команда с двумя параметрами, а в туториале отсылаются 3. Почему так?

ОтветитьЦитата
Размещено : 23.11.2021 15:52
Aveal reacted
Aveal
(@aveal)
Top level Admin

@romanfaktor Приветствую!

По поводу PWCTR1, у меня инициализация для ST7735R, упущение, что в статье не указал, добавлю сейчас...

В целом по командам, я обычно стараюсь начинать с минимальных изменений относительно дефолтных значений, дальше уже по мере необходимости. Эти конкретные команды как есть взял из старого проекта своего с этим дисплеем ) Дефолтные значения обычно там же, где описание, указаны должны быть:

изображение
ОтветитьЦитата
Размещено : 24.11.2021 18:08
romanfaktor reacted
(@dimedrolus)
New member

@andrej-8 Судя по твоим фото ты сдвинул координаты отсчета, посмотри где то в коде может быть ошибка. Например разрешение дисплея 128, но адресация по 0 - 127 = 128 значений ! Для 160 = 0 - 159. В некотором коде разных библиотек в функции отрисовки области бывает заминусованы значения для удобства то есть   ОтрисовывемОбласть(1,1,128,160) а на сторне функции   ОтрисовывемОбласть(х-1,у-1,х1-1,у1-1) по тому что первый стоблик в дисплее нумеруется с 0, но так же и для строк.

ОтветитьЦитата
Размещено : 05.01.2022 01:03
 Reni
(@reni)
Level 1

Здраствуйте. Запустил по статье дисплей на STM32FCBT6. Намучался с выводом изображения пока понял что не хватает память у МК ))) Есть предложения как ускорить программу.

В добавление функции "ST7735_WaitLastData()" везде это слишком, точнее ждать после каждой отправки команды или данных освобождения передатчика "while((SPI1->SR & SPI_SR_BSY) != RESET)". Предлагаю при передачи данных вообще не ждать когда передатчик осободится. Сделать как-то так.

void ST7735_SendCommand(uint8_t data)
{
//HAL_GPIO_WritePin(ST7735_DC_PORT, ST7735_DC_PIN, GPIO_PIN_RESET);
while((SPI1->SR & SPI_SR_BSY) != RESET); // Ждем когда передатчик освободится
ST7735_DC_Command;

ST7735_SendByte(data);
ST7735_WaitLastData();
}

/*----------------------------------------------------------------------------*/
void ST7735_SendData(uint8_t data)
{
//HAL_GPIO_WritePin(ST7735_DC_PORT, ST7735_DC_PIN, GPIO_PIN_SET);
ST7735_DC_Data;

ST7735_SendByte(data);
//ST7735_WaitLastData();
}
ОтветитьЦитата
Размещено : 18.03.2022 13:11
 Reni
(@reni)
Level 1

Ну и еще можно вызов функции HAL() для переключения gpio заменить на атомарные операции

  //HAL_GPIO_WritePin(ST7735_DC_PORT, ST7735_DC_PIN, GPIO_PIN_SET);  
ST7735_DC_Data;

подправив define-ы в файле "ST7735.h"

#define ST7735_CS_PORT                                                  (GPIOB)
#define ST7735_CS_PIN_SET                                               (GPIO_BSRR_BS2)
#define ST7735_CS_PIN_RESET                                             (GPIO_BSRR_BR2)

#define ST7735_DC_PORT                                                  (GPIOB)
#define ST7735_DC_PIN_SET                                               (GPIO_BSRR_BS0)
#define ST7735_DC_PIN_RESET                                             (GPIO_BSRR_BR0)


#define ST7735_CS_Enable					ST7735_CS_PORT -> BSRR = ST7735_CS_PIN_RESET					//RESET
#define ST7735_CS_Reset						ST7735_CS_PORT -> BSRR = ST7735_CS_PIN_SET						//SET

#define ST7735_DC_Command					ST7735_DC_PORT -> BSRR = ST7735_DC_PIN_RESET					//RESET
#define ST7735_DC_Data						ST7735_DC_PORT -> BSRR = ST7735_DC_PIN_SET						//SET
ОтветитьЦитата
Размещено : 18.03.2022 13:23
Aveal
(@aveal)
Top level Admin

@reni сейчас как раз в одном изделии буду этот дисплей ставить, можно будет протестировать на предмет ускорения 👍 

ОтветитьЦитата
Размещено : 18.03.2022 21:05
 Reni
(@reni)
Level 1

@aveal Где можно будет увидеть результаты тестирования? 😋 Очень интересно. Кстати, проверь цвета в библиотеке я красный с синим менял для правильного отображения цветов.

ОтветитьЦитата
Размещено : 24.03.2022 23:17
Aveal
(@aveal)
Top level Admin

@reni Отпишу тут как дойдут руки протестировать )

Там в одном из регистров задается RGB или BGR.

ОтветитьЦитата
Размещено : 25.03.2022 11:39
(@alexey55555)
Level 1

Доброго времени суток всем.

имеется отладачная плата stm32g030f6p6 и два экрана st7735s 096" и st7789 1.3". уже с неделю бьюсь с ними. никак не могу подружить хоть один.

7789 не получается установить библиотеки(или они карявые, или мои руки), а на st7735s 096" выводит какойто мусор. и то при скорости 4мбита(с библиотекой с етого сайта).

в сети находил упоминание что если выводит мусор - необходимо сдвигать начальные координаты Y отрисовки. перебрал через for от 0 до 160 и Y и X - не помогло. 

for (i = 0; i < 160; i++) {
	ST7735_DrawRect(0, i, ST7735_X_SIZE, ST7735_Y_SIZE, ST7735_COLOR_RED);
	HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
	HAL_Delay(500);
}

 

image
image

фото екрана не мое, но картина такая же.

кого не затруднит ПРОШУ помочь!

ОтветитьЦитата
Размещено : 26.01.2023 11:21
Aveal
(@aveal)
Top level Admin

Доброго дня, можешь скинуть проект и ссылку на дисплей?

ОтветитьЦитата
Размещено : 26.01.2023 12:30
(@alexey55555)
Level 1

https://aliexpress.ru/item/4001282467099.html?spm=a2g2w.orderdetail.0.0.79a94aa63NTatA&sku_id=10000015593398595 оба брал тут.

как залить проект? собрал в *.7z и *.zip , не прикрепляет фаил.

image
ОтветитьЦитата
Размещено : 26.01.2023 12:52
Страница 3 / 8
Поделиться: