Кто нибудь работал с такой конфигурацией? Проблема следующая: дисплей подключен через хардварный spi, распиновка 100% верная, питание и лог. уровни 3.3 вольта, библиотека adafruit st7735. Заливаю скетч в stm32f103c8t6 все работает. В lgt скетч также заливается без проблем, но экран белый и ничего не происходит. Перелопатил кучу сайтов, решения так и не нашел. Пишут что spi у lgt физически отличается от атмег и некоторые библиотеки не умеют с ним работать, но решения этой проблемы нет. Пробовал вносить изменения в библиотеку spi, а также в adafruit gfx- толку ноль. Пробовал менять частоту контроллера, также ноль. Пробовал другие библиотеки, но и тут тупик. Варианты у меня закончились к сожалению.
Вот код, который использовал:
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#define TFT_CS 3
#define TFT_DC 2
#define TFT_RST 4
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
void setup(void) {
tft.initR(INITR_BLACKTAB);
uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;
delay(500);
tftPrintTest();}
void loop() {}
void tftPrintTest() {
tft.setTextWrap(false);
tft.setRotation(3);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(15, 0);
tft.setTextColor(ST77XX_RED);
tft.setTextSize(1);
tft.println(utf8rus("Наименование дисплея "));
tft.setCursor(25, 15);
tft.setTextSize(1,2);
tft.println("YFY177NPQQ906-С");
tft.setTextColor(ST77XX_YELLOW);
tft.setCursor(35, 30);
tft.setTextSize(1);
tft.println(utf8rus("Контроллер"));
tft.setCursor(40, 45);
tft.setTextSize(1,2);
tft.println("ST7735S");
tft.setTextColor(ST77XX_GREEN);
tft.setCursor(35, 60);
tft.setTextSize(1);
tft.println(utf8rus("Биюлиотека"));
tft.setCursor(25, 75);
tft.setTextSize(1,2);
tft.println("Adafruit st7735.h");
tft.setCursor(5, 95);
tft.setTextSize(1);
tft.println(utf8rus("Подключение по SPI шине"));
}
String utf8rus(String source){
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xBF){
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
break;}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB7; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
break;}}}
m[0] = n; target = target + String(m);}
return target;}
запусти на софтовом на тех же пинах
Для лгбт же какое-то ядро нужно ставить в IDE.
Пробовал, изображения также нет.
Ну это само-собой. Ядро стоит.
не может быть! покажи строку инициализации
Конкретно в этом скетче выводится просто статическая картинка, Я пробовал заливать grafictest из примера к библиотеке. В этом случае на экране время от времени проскакивает цветная рябь, затем исчезает и снова белый экран.
полную строку
Работал с SPI и LGT - без замечаний.
Ты бы код научился сначала вставлять.
у адафрута не для всех дисплеев строки инициализации одинаковые почему-то
Да я первый раз на форуме пишу, не до конца разобрался еще.
Да, но точно такой же скетч, без каких либо изменений на stm ядре запускается без нареканий.
#include <Adafruit_GFX.h> // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library for ST7735
#include <SPI.h>
#define TFT_CS 3
#define TFT_DC 2
#define TFT_RST 4
//#define TFT_MOSI 11 // Data out
//#define TFT_SCLK 13
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
void setup(void) {
SPI.begin();
tft.initR(INITR_BLACKTAB);
uint16_t time = millis();
tft.fillScreen(ST77XX_BLACK);
time = millis() - time;
delay(500);
tftPrintTest();}
это ты на хардовый инициируешь, на софтовый строка выше и выбор кристалла не на том пине
#if defined(__LGT8F_SSOP20__)
#define PIN_SPI_SS (9) // Redirected in main.cpp at line 77
#else
#define PIN_SPI_SS (10)
#endif
#define PIN_SPI_MOSI (11)
#define PIN_SPI_MISO (12)
#define PIN_SPI_SCK (13)
За строку знаю. Пробовал с ней, MOSI и SCK оставлял так же на 11 и 13 пинах, потом пробовал с MOSI и SCK на других пинах ничего. А насчет CS, Я перекинул его конечно на 9 пин, результата нет, но вроде и в описании к библиотеке было написано что cs можно назначить любой цифровой пин. Или ли не понял чего то?
Меня очень сильно сбивает с толку отказ работать именно с этим камнем, непонятно где искать ошибку.