Библиотека ILI9481 320*480 3.5

Мрмолано
Солнце 29 января 2017 г. 22:33
Привет

Я изменяю библиотеку IWALPOLA ADAFRIT ILI9341 8BT STM для работы с ILI9481, Я оставляю ссылку от Mega
https: // mega.NZ/#!59nmzira!Eb3xwpoyjhpa ... Xvyzb7a6iq

пока

Rogerclark
Пн 30 января 2017 г., 6:42
Спасибо, что поделились.

В идеале это должно быть помещено на GitHub и т. Д., где люди могут легко просматривать и загружать источник, а не на молнии

Димдим
Сб 25 февраля 2017 г., 23:20
Прекрасный порт! Очень полезен.. Эти 3.5 -дюймовые tfts имеют очень приличное качество изображения и дешевые, плюс эта библиотека, похоже, прекрасно работает с нынешней официальной библиотекой Adafruit GFX. Потрясающий.

Просто одна вещь, я заметил опечатку. PIN D1 должен перейти в PA1, а не в PC1.

Димдим
Сб 25 февраля 2017 г. 11:43
Кажется, что я говорил слишком рано здесь.

Я запускаю набросок GraphicStest и текст на портрете выглядит нормально, но когда он вращается (ландшафт), он выглядит зеркальным.

Стивестронг
Солнце 26 февраля 2017 г. 9:23
Мрмолано написал:Привет

Я изменяю библиотеку IWALPOLA ADAFRIT ILI9341 8BT STM для работы с ILI9481, Я оставляю ссылку от Mega
https: // mega.NZ/#!59nmzira!Eb3xwpoyjhpa ... Xvyzb7a6iq

пока

Димдим
Вт 28 февраля 2017 г. 16:06
Димдим написал:Кажется, что я говорил слишком рано здесь.

Я запускаю набросок GraphicStest и текст на портрете выглядит нормально, но когда он вращается (ландшафт), он выглядит зеркальным.

Matrixxx
SAT 08 апреля 2017 г. 10:09
Всем привет,

Я совершенно новичок в этом, но у меня уже есть некоторые шилны Ардуино. Теперь я экспериментирую с STM32F103C6. Особенно для TFT это может быть быстрее, чем мега...
У меня есть этот щит: https: // www.Микроконтроллер.net/attachm ... e_spec.PDF Сказав это ILI9481.. Но я думаю, что это HX8357B?!
или
http: // shop.Boxtec.CH/TFT-LCD-SHIELD-FO ... 42762.HTML Щит, который больше является ILI9481.
..И синяя таблетка.

Но я не знаю, какая булавка в Tftshield должна перейти к тому, какую булавку у STM. Прикосновение не обязательно. Ты можешь как -то дать мне QuickStart? Может SPI?

Спасибо, Майк.

Дэйвид.Прентис
SAT 08 апреля 2017 12:14
Первая ссылка говорит HX8357-B. Так что, похоже, будет HX8357-B, но щит только для записи.
OTOH, недавние «аналогичные щиты» содержит ILI9481. Подсказка написана по номеру детали, напечатанной на антистатической сумке, с которой щит появился с.

Второй щит содержит ILI9481. А так как этот щит читается, вы можете подтвердить, читая reg (0xbf)

Если вы хотите различить HX8357-B и ILI9481, есть некоторые незначительные различия в регистрах производителей.

Дэйвид.

Vnk8
Чт 28 сентября 2017 г., 17:24
Добрый весь день!!!
У меня есть STM32F103C8T6 и 3.2 "Tftlcd Shield для Arduino Mega2560 Driver-ILI9481. С соединением и программированием нет проблем. Проблема с цветом экрана. После загрузки программы экран становится синим. Инверсия хроматности не решает проблемы. Я предполагаю проблему в инициализации дисплея, но, как измениться, я не знаю. Я прошу предложений. Как исправить???
https: // yadi.sk/d/ls0rnl9v3njyj9

Стивестронг
Чт 28 сентября 2017 г., 19:50
Владимир, ты забыл указать:
- Используемый TFT LCD LIB (ссылка?)
- Используемое ядро ​​(arduino_stm32?)
- использованный эскиз (ссылка?)
- на какой ОС вы развиваете.

Проверьте свою проводку, мне кажется, что красные и зеленые цвета отсутствуют.

Vnk8
Пт 29 сентября 2017 г. 14:16
Используемый TFT LCD LIB (ссылка?) ILI9481 320*480 3.5
Используемое ядро ​​(arduino_stm32?) "Generic STM32F103C Series"
использованный эскиз (ссылка?) [code] #include "Adafruit_GFX.h" //#include "gfxfont.h" #include "Adafruit_ILI9481_8bit_STM.h" // Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC Adafruit_ILI9481_8bit_STM tft = Adafruit_ILI9481_8bit_STM(); // If using the breakout, change pins as desired //Adafruit_ILI9481_8bit_STM tft = Adafruit_ILI9481_8bit_STM(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); void setup() { Serial.begin(115200); Serial.println("ILI9481 Test!"); tft.begin(); //tft.invertDisplay(true); tft.setRotation(3); //Устанавливаем заставку tft.fillScreen(ILI9481_BLUE); tft.setCursor(10, 10); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(3); tft.print("Adafruit_ILI9481_8bit_STM"); tft.setCursor(10, 50); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(3); tft.print("3.2 TFTLCD Shield for Mega 2560"); tft.setCursor(10, 140); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(7); tft.print("TEST"); //tft.setCursor(170, 170); tft.print("ILI9481"); delay(200); tft.setCursor(70, 230); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("VERSION "); tft.print("V1.1"); tft.setCursor(190, 280); tft.print("2017"); delay(30000); tft.fillScreen(ILI9481_BLACK); } void loop() { tft.fillScreen(ILI9481_BLUE); tft.setCursor(170, 270); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("BLUE"); delay(3000); tft.fillScreen(ILI9481_WHITE); tft.setCursor(170, 270); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("WHITE"); delay(3000); tft.fillScreen(ILI9481_BLACK); tft.setCursor(170, 270); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("BLACK"); delay(3000); tft.fillScreen(ILI9481_RED); tft.setCursor(170, 270); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("RED"); delay(3000); tft.fillScreen(ILI9481_ORANGE); tft.setCursor(170, 270); tft.setTextColor(ILI9481_WHITE,ILI9481_BLUE); tft.setTextSize(5); tft.print("ORANGE"); delay(3000); } [code]

Стивестронг
Пт 29 сентября 2017 г. 15:35
- Я не могу найти исходный код используемой вами библиотеки TFT.
- Похоже, вы используете 8 -битную библиотеку для 16 -битного параллельного автобусного дисплея. В этом случае это нормально, что у вас, по крайней мере, один цвет отсутствует.
- Как (какие булавки) вы подключили синюю таблетку к ЖК -дисплее? Фотография настройки оборудования?

Vnk8
Пт 29 сентября 2017 г., 17:22
Как (какие булавки) вы подключили синюю таблетку к ЖК -дисплее? //Port data |D7 |D6 |D5 |D4 |D3 |D2 |D1 |D0 | //Pin stm32 |PA7|PA6|PA5|PA4|PA3|PA2|PA1|PA0| //Control pins |RD |WR |RS |CS |RST| //Pin stm32 |PB4|PB5|PB6|PB7|PB8| #define TFT_RD PB4 #define TFT_WR PB5 #define TFT_RS PB6 #define TFT_CS PB7 #define TFT_RST PB8

Стивестронг
Пт 29 сентября 2017 г. 20:36
Вам нужна 16 -битная библиотека.

Vnk8
Сб 30 сентября 2017 г., 4:43
На вашем дисплее не может быть запущено на автобусе 8-бит ??

Стивестронг
Сб 30 сентября 2017 г. 8:29
Мой дисплей, как и ваш, имеет 16 -битный параллельный интерфейс.
Вы должны подключить и управлять всеми 16 битами данных, иначе это не будет работать правильно.
Мой либера адаптируется для управления этими 16 битами для ILI9341 совместимых TFTS.
Вы должны прокомментировать (отключить) эта линия Если вы не используете FSMC.

Vnk8
Солнце 01 октября 2017 г. 15:30
Хорошо, давайте попробуем.

Vnk8
Солнце 01 октября 2017 г. 18:53
Моя LIB адаптирована для управления этими 16 битами для ILI9341 совместимых TFTS.
Вы должны прокомментировать (отключить) эту строку, если вы не используете FSMC.
Но, к сожалению:
Arduino: 1.8.4 (Windows 10), Плата:"Generic STM32F103C series, STM32F103CB (20k RAM. 128k Flash), STM32duino bootloader, 72Mhz (Normal), Smallest (default)" Изменены опции сборки, пересобираем все In file included from C:\Users\User\Documents\Arduino\libraries\Adafruit_TFTLCD_16bit_STM32-master\src/Adafruit_TFTLCD_16bit_STM32.h:56:0, from C:\Users\User\Documents\Arduino\libraries\Adafruit_TFTLCD_16bit_STM32-master\examples\graphicstest\graphicstest.ino:7: C:\Users\User\Documents\Arduino\hardware\Arduino_STM32-master\STM32F1\system/libmaple/include/libmaple/fsmc.h:47:2: error: #error "FSMC is unavailable on your MCU" #error "FSMC is unavailable on your MCU"

Стивестронг
Пн, 02 октября 2017 г., 7:09
Я сказал вам, вы должны сменить линию 15: https: // github.com/stevstrong/adafruit_ ... TM32.H#L15
к этому: //#define USE_FSCM 1 // use FSCM interface instead raw GPIO access

Vnk8
Вт 3 октября 2017 г. 6:35 утра
Я исправил библиотеку для ваших рекомендаций: // IMPORTANT: SEE COMMENTS @ LINE 15 REGARDING SHIELD VS BREAKOUT BOARD USAGE. // Graphics library by ladyada/adafruit with init code from Rossum // MIT license #ifndef _ADAFRUIT_TFTLCD_16BIT_STM32_H_ #define _ADAFRUIT_TFTLCD_16BIT_STM32_H_ #define PROGMEM #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) #define pgm_read_word(addr) (*(const unsigned short *)(addr)) #include //#define USE_FSCM 1 // use FSCM interface instead raw GPIO access //#define USE_MAPLE_MINI_PINOUT // for use with maple mini /*****************************************************************************/ // LCD controller chip identifiers #define ID_932X 0 #define ID_7575 1 #define ID_9341 2 #define ID_HX8357D 3 #define ID_UNKNOWN 0xFF /*****************************************************************************/ #ifndef TFTWIDTH #define TFTWIDTH 320 #define TFTHEIGHT 480 #endif // Initialization command tables for different LCD controllers #define TFTLCD_DELAY 0xFF // For compatibility with sketches written for older versions of library. // Color function name was changed to 'color565' for parity with 2.2" LCD // library. #define Color565 color565 /*****************************************************************************/ #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF /*****************************************************************************/ // Define pins and Output Data Registers /*****************************************************************************/ #ifdef USE_FSCM // use FSCM peripheral #include #define CD_COMMAND #define CD_DATA #define CS_ACTIVE #define CS_IDLE #define CS_ACTIVE_CD_COMMAND #define lcdCommand (*fsmcCommand) #define lcdData (*fsmcData) // set pins to output the 8 bit value #define writeCmd(d) { lcdCommand = d; } //(d&0x00FF); } #define writeData(d) { lcdData = d; } #define WR_STROBE writeData(color) #else // use normal GPIO access #include // Port data bits D0..D16: #if defined (__STM32F1__) #define TFT_DATA_PORT GPIOA //#elif defined (__STM32F4__) // #define TFT_DATA_PORT (&GPIOD) #endif #define TFT_DATA_IO_PORT 'A' //Control pins |RD |WR |RS |CS |RST| #if defined (__STM32F1__) #define TFT_CNTRL_PORT GPIOB //#elif defined (__STM32F4__) // #define TFT_CNTRL_PORT (&GPIOC) #endif #define TFT_CNTRL_IO_PORT 'B' //#define TFT_RD_BIT 5 #define TFT_RS_BIT 6 #define TFT_WR_BIT 5 #define TFT_CS_BIT 7 #define Port2Pin(port, bit) ((port-'A')*16+bit) //#define TFT_RD_PIN Port2Pin(TFT_CNTRL_IO_PORT, TFT_RD_BIT) #define TFT_WR_PIN Port2Pin(TFT_CNTRL_IO_PORT, TFT_WR_BIT) #define TFT_RS_PIN Port2Pin(TFT_CNTRL_IO_PORT, TFT_RS_BIT) #define TFT_CS_PIN Port2Pin(TFT_CNTRL_IO_PORT, TFT_CS_BIT) #define RST_ACTIVE digitalWrite(TFT_RST_PIN, LOW) #define RST_IDLE digitalWrite(TFT_RST_PIN, HIGH) #if 0 // used TFT does not support RD operation #define RD_ACTIVE digitalWrite(TFT_RD_PIN, LOW) #define RD_IDLE digitalWrite(TFT_RD_PIN, HIGH) #endif #if 0 // use old definition, standard bit toggling, low speed #define WR_ACTIVE digitalWrite(TFT_WR_PIN, LOW) // #define WR_IDLE digitalWrite(TFT_WR_PIN, HIGH) // #define CD_COMMAND digitalWrite(TFT_RS_PIN, LOW) #define CD_DATA digitalWrite(TFT_RS_PIN, HIGH) #define CS_ACTIVE digitalWrite(TFT_CS_PIN, LOW) #define CS_IDLE digitalWrite(TFT_CS_PIN, HIGH) #define CS_ACTIVE_CD_COMMAND { CS_ACTIVE; CD_COMMAND; } #else // use fast bit toggling, very fast speed! extern gpio_reg_map * cntrlRegs; #define WR_ACTIVE gpio_clear_dev_bit(TFT_CNTRL_PORT, TFT_WR_BIT) //digitalWrite(TFT_WR_PIN, LOW)// #define WR_IDLE digitalWrite(TFT_WR_PIN, HIGH)//gpio_set_dev_bit(TFT_CNTRL_PORT, TFT_WR_BIT) // #define CD_COMMAND gpio_clear_dev_bit(TFT_CNTRL_PORT, TFT_RS_BIT) //{ cntrlRegs->BSRRH = BIT(TFT_RS_BIT); } // #define CD_DATA gpio_set_dev_bit(TFT_CNTRL_PORT, TFT_RS_BIT) //{ cntrlRegs->BSRRH = BIT(TFT_RS_BIT); } // #define CS_ACTIVE gpio_clear_dev_bit(TFT_CNTRL_PORT, TFT_CS_BIT) //{ cntrlRegs->BSRRL = BIT(TFT_CS_BIT); } // #define CS_IDLE gpio_set_dev_bit(TFT_CNTRL_PORT, TFT_CS_BIT) //{ cntrlRegs->BSRRH = BIT(TFT_CS_BIT); } // #define CS_ACTIVE_CD_COMMAND { cntrlRegs->BSRRH = BIT(TFT_CS_BIT)|BIT(TFT_RS_BIT); } #endif #define WR_STROBE { WR_ACTIVE; WR_IDLE; } extern gpio_reg_map * dataRegs; #if 0 // used TFT cannot be read extern uint8_t read8_(void); #define read8(x) ( x = read8_() ) #define setReadDir() { for (uint8 i = 0; i<16; i++) { pinMode(Port2Pin(TFT_DATA_IO_PORT,0)+i, OUTPUT); } } // set the bits as input #endif // used TFT cannot be read #define setWriteDir() { for (uint8 i = 0; i<16; i++) { pinMode(Port2Pin(TFT_DATA_IO_PORT,0)+i, OUTPUT); } } // set the bits as output // set pins to output the 8 bit value #define writeData_(d) { dataRegs->ODR = d;} //#define writeCmd(d) { writeData_(d&0x00FF); WR_STROBE; } #define writeCmd(d) { writeData_(d); WR_STROBE; } #define writeData(d) { writeData_(d); WR_STROBE; } #endif // USE_FSCM #define TFT_RST_PIN PB8 /*****************************************************************************/ #define swap(a, b) { int16_t t = a; a = b; b = t; } /*****************************************************************************/ class Adafruit_TFTLCD_16bit_STM32 : public Adafruit_GFX { public: //Adafruit_TFTLCD_8bit_STM32(uint8_t cs, uint8_t cd, uint8_t wr, uint8_t rd, uint8_t rst); Adafruit_TFTLCD_16bit_STM32(void); void begin(uint16_t id = 0x9341); void drawPixel(int16_t x, int16_t y, uint16_t color); void drawFastHLine(int16_t x0, int16_t y0, int16_t w, uint16_t color); void drawFastVLine(int16_t x0, int16_t y0, int16_t h, uint16_t color); void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t c); void fillScreen(uint16_t color); void reset(void); void setRegisters8(uint8_t *ptr, uint8_t n); void setRegisters16(uint16_t *ptr, uint8_t n); void setRotation(uint8_t x); // These methods are public in order for BMP examples to work: void setAddrWindow(int16_t x1, int16_t y1, int16_t x2, int16_t y2); void invertDisplay(boolean i), pushColors(uint16_t *data, int16_t len, boolean first), drawBitmap(int16_t x, int16_t y, int16_t w, int16_t h, const uint16_t * bitmap); #if 0 // used TFT cannot be read uint16_t readPixel(int16_t x, int16_t y), readID(void); #endif private: void init(), flood(uint16_t color, uint32_t len); uint8_t driver; }; extern uint16_t color565(uint8_t r, uint8_t g, uint8_t b); #if 0 // used TFT cannot be read extern uint16_t readReg(uint8_t r); extern uint32_t readReg32(uint8_t r); #endif static inline void writeCommand(uint16_t c) __attribute__((always_inline)); static inline void writeCommand(uint16_t c) { CS_ACTIVE_CD_COMMAND; writeCmd(c); } extern void writeRegister8(uint16_t a, uint8_t d); extern void writeRegister16(uint16_t a, uint16_t d); //extern void writeRegister24(uint16_t a, uint32_t d); extern void writeRegister32(uint16_t a, uint32_t d); //extern void writeRegister32(uint16_t a, uint16_t d1, uint16_t d2); extern void writeRegisterPair(uint16_t aH, uint16_t aL, uint16_t d); #endif

fpistm
Вторник 3 октября 2017 г. 15:52
Должен быть BSSR, а не BSSRH, я думаю.

Стивестронг
Вторник 03 октября 2017 г., 17:06
Я почти переработал 16 -битную параллельную часть, я дам вам знать, когда сделано.
В настоящее время получает странут ошибку линкера, надеюсь, я смогу решить проблему сегодня.

Vnk8
Вт 3 октября 2017 г., 18:25
ХОРОШО!!!

Стивестронг
Вторник 03 октября 2017 г. 18:52
Только что закончил обновить мой репо, Пожалуйста, проверьте это.

Примечания:
- Чтение идентификатора не реализовано, поэтому вы должны установить идентификатор на фиксированное значение (0x9341 или 0x9328).
- Для F103 я определил gpiob (bits0..15) как порт данных, Потому что у GPIOA есть зарезервированные булавки для USB, которые, я думаю, важно, чтобы он работал.
Проблемный штифт - это только PB2, который не приводит к штифтам, а только к перемычке Boot1 (средний штифт).
Чтобы использовать этот вывод, вы должны остановить R4 на задней стороне платы, которая подключена между чипом F103 и перемычкой для Boot1.
Этот резистор составляет 100 ком, так что выход PB2 не будет работать, если вы не припаяете мост через этот резистор (ярлык).
- управляющие штифты должны быть нанесены на карту с одним и тем же GPIO, мой По умолчанию GPIOA, Но вы также можете использовать GPIOC (PC13..15).
- Color565 () теперь (STED Back AS) член класса ADAFRIT_TFTLCD_16BIT_STM32. GraphicStest был обновлен соответственно.
Это означает, что вы должны использовать сейчас »тфу.color565 () "вместо" color565 () ".

Строительство-это ошибка/предупреждение, но я не проверял функциональность, потому что это стоило бы мне много времени для повторного перевода ЖК-дисплея на синюю таблетку.
Так что я не могу дать никакой гарантию за это.

Пожалуйста, попробуйте и дайте мне знать, если это работает.

Vnk8
Ср. 04 октября 2017 г. 15:43
Сделал то, что ты сказал. Программа теперь компилируется, но экран остается белым после загрузки.
Использовать:
B0-B15 (B2 Redone)
#define tft_wr_pin pa1
#define tft_rs_pin pa2
#define tft_cs_pin pa3
#define tft_rst PIN PC15

Стивестронг
Ср. 04 октября 2017 г. 16:05
Какое значение идентификатора вы установили в своем эскизе?

Vnk8
Ср. 04 октября 2017 г. 16:23
Эскиз из вашей библиотеки: GraphicStest

Стивестронг
Чт 5 октября 2017 г. 8:23 утра
В качестве первого теста я бы посоветовал вам написать короткую программу тестирования, чтобы переключить все данные и контрольные выводы, например: pinMode(PB0, OUTPUT); digitalWrite(PB0, LOW); delay(500); digitalWrite(PB0, HIGH); delay(500);

Vnk8
Чт 05 октября 2017 г. 15:04
Я хочу заявить о всех извинениях, особенно Стевенстонга, которые принимали участие в решении моего вопроса, но были сильные обстоятельства, которые отложили дальнейшие дискуссии об этом предмете. При следующем подключении модуль дисплея был успешно сгорел. Вино полностью мое. Новый дисплей уже заказан на Aliexpress. Так что я не прощаюсь!!!

Стивестронг
Пт 06 октября 2017 г. 9:33
Не беспокойся.
Я также сгорел один из моих дисплеев ILI9328, хотя только припаял некоторых штифтов доски. Кажется, что они довольно чувствительны к теплу.

Efftek
Вторник 02 января 2018 г. 14:48
Привет, ребята, с новым годом всех вас.

У меня есть плата прототипа/адаптер, которую я сделал, которая будет работать с этим драйвером TFT, поскольку он использует те же данные и линии управления. Моя проблема в том, что я бы очень хотел получить доступ к большему количеству контактов с AD’M надеждается спроектировать новую плату, которую я могу подключить этот модуль с https: // www.aliexpress.com/item/mini-e ... 0.0.P05HAI

я’M не опытный программист с низким уровнем, и изменение драйвера для использования PC0 на PC7 для данных TFT выше моего набора навыков. Кто -нибудь может посоветовать, если это можно сделать, и если да, то как.

С уважением, Стив.

Пито
Вторник 02 января 2018 г. 14:52
Если вы планируете новую доску адаптеров, рассмотрите интерфейс FSMC для ILI..
FSMC также работает 8 -бит.
и изменение драйвера на использование PC0 на PC7 для данных TFT Кажется, вы должны измениться (в adafruit_ili9481_8bit_stm.h) #define TFT_DATA GPIOA

Стивестронг
Вторник 02 января 2018 г. 15:10
Стив, ваша доска - так называемый универсальный F407 Mini. Я мог бы сделать свои 3.5 -дюймовый ЖК -дисплей с моей LIB и FSMC (16 -битный автобус) (прочитайте более ранние посты этой ветки).

Efftek
Вторник 02 января 2018 г. 16:48
Привет, ребята, спасибо за ответы.

У меня есть несколько TFT -щитов со стандартными разъемами ООН, поэтому я действительно хочу использовать их, а не покупать разные.

Если все, что мне нужно сделать, это объявить #define tft_data gpioc, то я’Будь счастлив, но, конечно, это’S не так просто это?

Стив.

nopnop2002
Пн, 08 января 2018 г. 8:17 утра
@Efftek

Я могу не понять ваш запрос правильно, но попробуйте это.

https: // github.com/nopnop2002/stm32_tft_8bit

Я проверил свой STM32F103 RBT6 & 3.5 дюймов 320*480 ILI9481 TFT.
Это работает нормально, используя gpioc.

Flodejr
Пн 15 января 2018 г. 13:48
@stevestrong,

Привет, я пытаюсь взаимодействовать с моей общей платой F407 на ЖК -дисплей TFT, используя NT35310. Похоже, что он совместим с ILI9481, однако мой TFT LCD использует только 8 -битный параллельный. Использование вашей библиотеки и FSMC, я получаю дисплеи, но координаты ошибаются, а цвета, очевидно, неверны, очевидно из -за потери в 8 битах более высокого порядка. Я очень счастлив, потому что я получаю некоторые дисплеи от ЖК -дисплея, я ранее пытался использовать код STM32 HAL, но вообще ничего не получаю от ЖК -дисплея, по крайней мере, ваша библиотека дала мне некоторые дисплеи.

Я попытался изменить FSMC на 8 бит в библиотеке Libmaple, но затем ЖК -дисплей погиб сразу после изменения. Я не уверен, что пошло не так, надеюсь, вы сможете дать некоторые идеи.

Стивестронг
Пн 15 января 2018 г. 14:35
[Flodejr - Пн 15 января 2018 г. 13:48] - Я попытался изменить FSMC на 8 бит в библиотеке Libmaple, но затем ЖК -дисплей погиб сразу после изменения. Я не уверен, что пошло не так, надеюсь, вы сможете дать некоторые идеи.
Пожалуйста, предоставьте подробную информацию, что и как именно вы пробовали.

Я не уверен, достаточно ли этого только для того, чтобы установить MWID = 00 (8 бит), используя FLAG [FSMC_BCR_MWID_8BITS]. Также может потребоваться разделить 16 -битный доступ на два последовательных 8 -битных доступа по программному обеспечению, если оборудование этого не делает.
Так что в основном делай *fsmcData = ; *fsmcData = ;

Flodejr
Пн 15 января 2018 г. 15:05
[Стивестронг - Пн 15 января 2018 г., 14:35] - Пожалуйста, предоставьте подробную информацию, что и как именно вы пробовали.

Я не уверен, достаточно ли этого только для того, чтобы установить MWID = 00 (8 бит), используя FLAG [FSMC_BCR_MWID_8BITS]. Также может потребоваться разделить 16 -битный доступ на два последовательных 8 -битных доступа по программному обеспечению, если оборудование этого не делает.
Так что в основном делай *fsmcData = ; *fsmcData = ;

Стивестронг
Пн 15 января 2018 г. 15:11
Я бы пошел немного более систематически на вашем месте.
Сделайте только одно изменение за раз, а затем проверяйте эффект.
Я думаю, что вы не должны менять адрес fsmcdata.

Я не пробовал в 8 -битном режиме, но я мог бы попробовать, только это время не хватает...

Flodejr
Вт 16 января 2018 г., 4:54
@stevestrong,

Мне удалось получить код, работающий в 8 -битном режиме FSMC, поддерживая 3.5 -дюймовый модуль TFT с чипсетом NT35310. Модификации сделаны:
1) Изменил Libmaple/FSMC.H, чтобы включить переключение между режимом FSMC16 и режимом FSMC 8 -битного режима #ifdef _FSMC16_ volatile uint16_t * fsmcCommand; volatile uint16_t * fsmcData; #endif #ifdef _FSMC8_ volatile uint8_t * fsmcCommand; volatile uint8_t * fsmcData; #endif

Стивестронг
Вт 16 января 2018 г. 7:51 утра
Отличная работа!
Я адаптирую свою репо, чтобы отразить эти изменения.

Flodejr
Вт 16 января 2018 г. 11:53
[Стивестронг - Вт 16 января 2018 г. 7:51] - Отличная работа!
Я адаптирую свою репо, чтобы отразить эти изменения.
В качестве примечания, ЖК -дисплей работает даже в 16 -битном режиме FSMC, переход на 8 -битный FSMC просто сохраняет некоторые булавки для других целей. Тем не менее, у меня сейчас есть некоторые проблемы, я перенес часть кода в STM32Cubemx, и это не работает!!! : oops: : oops: : oops: :зло: Хэл действительно ад, ничего не работает : oops: : oops: : oops: :зло: :зло:

Стивестронг
Вторник 16 января 2018 12:28
Зачем вам HAL?
Мой либмапл репо, В качестве альтернативы официальному репо Роджеру, предлагает большую часть функциональности для F4: http: // stm32duino.com/viewtopic.PHP?F = 39&T = 1976.

Flodejr
Вт 16 января 2018 г. 14:41
[Стивестронг - Вт 16 января 2018 12:28] - Зачем вам HAL?
Мой либмапл репо, В качестве альтернативы официальному репо Роджеру, предлагает большую часть функциональности для F4: http: // stm32duino.com/viewtopic.PHP?F = 39&T = 1976.
Насколько я знаю, в STM32Duino внедрение DCMI нет. В любом случае, мне тоже удалось получить код HAL. Рядом, чтобы добавить камеру DCMI.

Стивестронг
Вт 16 января 2018 г. 14:57
[Flodejr - Вт 16 января 2018 г. 14:41] - Насколько я знаю, в STM32Duino внедрение DCMI нет.
Это правда, arduino_stm32 (ядро Libmaple) не хватает функциональности DCMI.
Я мог бы добавить его, когда получу следующий слот свободного времени.
Я постановлю это как одну из следующих задач.

NYX123
Пн 22 января 2018 г. 1:48
[Стивестронг - Вт 3 октября 2017 г. 18:52] - [url =https: // github.com/stevstrong/adafruit_ ... TM32.H#180] порт данных [/ur]
Чтобы использовать этот вывод, вы должны остановить R4 на задней стороне платы, которая подключена между чипом F103 и перемычкой для Boot1.
Этот резистор составляет 100 ком, так что выход PB2 не будет работать, если вы не припаяете мост через этот резистор (ярлык)
Таким образом, чтобы продолжить пост Стив, есть ли, кроме того, вы упомянули выше, у меня есть HX_3857 TFT LCD с использованием STM32F103, Core от Roger, ваша библиотека выглядит для меня, потому что последовательные выходы . Надеюсь, ты сможешь мне помочь

Стивестронг
Пн 22 января 2018 г. 8:31 утра
[NYX123 - Пн 22 января 2018 1:48] - Таким образом, чтобы продолжить пост Стив, есть ли, кроме того, вы упомянули выше, у меня есть HX_3857 TFT LCD с использованием STM32F103, Core от Roger, ваша библиотека выглядит для меня, потому что последовательные выходы . Надеюсь, ты сможешь мне помочь
HX8357D следует поддерживать.
Что вы попробовали и в чем именно ваша проблема?