Помогите разобраться с библиотекой GxTFT

forfrends
Offline
Зарегистрирован: 24.02.2015
Друзья, помогите разобраться с библиотекой GxTFT: https://github.com/ZinggJM/GxTFT
Это библиотека для TFT дисплеев для разных контроллеров. Использую ее из-за того что она поддерживает FSMC интерфейс для STM32F407.
Использую отладочную плату STM32F407VET6: https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0
в связке с ядром Arduino_Core_STM32: https://github.com/stm32duino/Arduino_Core_STM32
 
Суть проблемы: 
На плате STM32F407VET6 от пина PB1 разведено управление подсветкой дисплея. HIGH - включить подсветку, LOW - выключить
В ручную управлять нельзя, так как пин PB1 используется в библиотеке (для той же подсветки)
Если заглянуть в GxIO_STM32F4_FSMC.cpp то там есть функция, где происходит назначение этому пину:
GxIO_STM32F4_FSMC::GxIO_STM32F4_FSMC(bool bl_active_high)
{
  _cs   = PD7;  // FSMC_NE1
  _rs   = PD13; // FSMC_A18
  _rst  = 0;    // not available, driven from NRST
  _wr   = PD5;  // FSMC_NWE
  _rd   = PD4;  // FSMC_NOE
  _bl   = PB1;     ////------------------------------------
  _bl_active_high = bl_active_high;
}

Так же есть функция управления подсветкой:

void GxIO_STM32F4_FSMC::setBackLight(bool lit)
{
  digitalWrite(_bl, (lit == _bl_active_high));
}

Если заглянуть в функцию инициализации дисплея то можно увидеть что подсветка выключается:

void GxIO_STM32F4_FSMC::init()
{
  ...

  digitalWrite(_bl, LOW);
  pinMode(_bl, OUTPUT);
}

В теории достаточно вызвать функцию setBackLight чтобы включить подсветку, но это почему-то не работает. В скетче GxTFT_FSMC_BlackSTM32F407V (пример из библиотеки) прописываю включение подсветки дисплея, но это ни на что не влияет, подсветка остается выключенной:

tft.init();
io.setBackLight(true);

Можете помочь мне разобраться из-за чего не работает подсветка, и что "перехватывает" ее управление?
В скетче GxTFT_FSMC_BlackSTM32F407V  с пробовал вставлять команду включения в разные места. Подсветка включается только после прохождения всех циклов рисования, перед входом в цикл loop.

 

b707
Offline
Зарегистрирован: 26.05.2017

Может она на самом деле не этим пином включается?

forfrends
Offline
Зарегистрирован: 24.02.2015

Точно пином PB1. Проверял проcтым Блинком. Даже ШИМ есть. Хм... Может вообще с библиотеки убрать все что связанно с этим пином и просто написать свою функцию?
А то все пересмотрел - не пойму что мешает управлять.

Upper
Offline
Зарегистрирован: 23.06.2020

forfrends пишет:

В ручную управлять нельзя, так как пин PB1 используется в библиотеке (для той же подсветки)
 
.....
 
Так же есть функция управления подсветкой:
void GxIO_STM32F4_FSMC::setBackLight(bool lit)
{
  digitalWrite(_bl, (lit == _bl_active_high));
}

Не понял, что значит "В ручную управлять нельзя".
Нельзя дать команду digitalWrite(PB1, HIGH); ?

forfrends
Offline
Зарегистрирован: 24.02.2015

Upper пишет:

forfrends пишет:

В ручную управлять нельзя, так как пин PB1 используется в библиотеке (для той же подсветки)
 
.....
 
Так же есть функция управления подсветкой:
void GxIO_STM32F4_FSMC::setBackLight(bool lit)
{
  digitalWrite(_bl, (lit == _bl_active_high));
}

Не понял, что значит "В ручную управлять нельзя".
Нельзя дать команду digitalWrite(PB1, HIGH); ?

Именно! Реакции нет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

а может digitalWrite(PB1, LOW); ?

andriano
andriano аватар
Онлайн
Зарегистрирован: 20.06.2015

forfrends пишет:

Upper пишет:

Не понял, что значит "В ручную управлять нельзя".

Нельзя дать команду digitalWrite(PB1, HIGH); ?

Именно! Реакции нет.

А у меня вполне себе экран мигает. Что я делаю не так?

 

Вы бы привели полностью код, в котором Вы дергаете PB1, а экран на это не отзывается.

 

PS. И еще: лично у меня возникли некоторые проблемы с цоколевкой: заказал у одного продавца как плату stm32f407vet6, так и 3.2" экран к ней. Все пристыкуется и работает, НО! Оказалось, что распиновка разъема на плате контроллера - НЕСТАНДАРТНАЯ: по-другому разведены 4 пина. Т.е. для того, чтобы этот экран заработал со стандартной платой, нужен переходник.

 

 

 

Upd: Запустил указанную в первом посте библиотеку - работает. (использовал переходник)

PS. На всякий случай: плату и дисплей (которые подходят друг другу) брал здесь: 

https://aliexpress.ru/item/4000953664266.html