[Решено] SMT32F103C + ILI9486 TFT не работает!

Эрикосовски
Солнце 28 октября 2018 г. 16:41
Привет, ребята,
Я новичок в STM32, и у меня проблемы с TFT 3.5 "Uno Shield As Show на прикрепленном изображении, как и в других темах, TFT прекрасно работает с библиотекой Arduino + MCUFRIENT_KBV, но с SMT32 Blue Pill не работает.
Я прочитал пару тем, но ни одна из них не было решением для моего случая!
Кроме того, я уже сделал тестовый LCD_ID_Reader, используя выводы
#define LCD_RST PB9 #define LCD_CS PB8 #define LCD_RS PB7 #define LCD_WR PB6 #define LCD_RD PB5 #define LCD_D0 PA0 #define LCD_D1 PA1 #define LCD_D2 PA2 #define LCD_D3 PA3 #define LCD_D4 PA4 #define LCD_D5 PA5 #define LCD_D6 PA6 #define LCD_D7 PA7

Стивестронг
Солнце 28 октября 2018 г., 21:03
@eric,
В качестве ответа на ваш вступительный пост вам дали ссылку.
Тщательно прочитайте эту ссылку и опубликуйте больше информации, например:

Какое ядро?
какую библиотеку вы пробовали?
Пример кода?
Что именно означает «не работать»?

Ищите посты, в которых был вовлечен Дэвид Прентис, вы должны найти «специальный», сделанный им, вам просто нужно адаптироваться к своему прикреплению к решению.

Эрикосовски
Солнце 28 октября 2018 г., 22:57
Поверьте мне, я прочитал почти все темы по советам TFT и Дэвиду Прентис, но я не мог пойти дальше с моим ЖК -TFT для Arduino.
Я пытаюсь использовать MCUFIENT_KBV и ADAFRIT_TFTLCD_8BIT_STM32 без успеха.

Когда я говорил «не работать», это потому, что TFT показывает только белый экран, даже пытаясь использовать Exemple UTFT_DEMO_480x320 от MCUFINION_KBV, но проводка верна, потому что она читает экран ID, когда использует Exemple LCD_ID_READREGER из MCUFRIENG_KBVM WICH ILI9486.

Использование Arduino uno работает с библиотекой MCUFINTION_KBV, но когда я пытаюсь с SMT32F103C8T6 - это просто белый экран.
Пример кода - это те же примеры из библиотеки MCVFRIENT_KBV.

У меня нет большого опыта работы с библиотеками, я чувствовал, что это может быть больше объяснений о библиотеке, комментарии в коде для начинающих программных программ начинают вносить изменения для себя. Когда вы делитесь с кем -то другим кодом, трудно понять, что делает код!
Учебник о MCUFIENT_KBV или ADAFRIT_TFTLCD_8BIT_STM32 тоже приветствуется!

Mrburnette
Пн 29 октября 2018 г., 2:55
Вы читали все соответствующие посты:
https: // www.Google.com/search?&Q = MCUFRI ... 2duino.компонент

Эти щиты Arduino - 5 вольт, поэтому Пост Дэвида здесь Следует отметить,

В списке регистра в вашем сообщении я не могу найти строку "9486" ... У меня нет совместимого дисплея, поэтому я никогда не запускаю утилиту - это означает, что я не знаю, каким должен быть выход для «совместимых» устройств.

Луча

Flyboy74
Пн 29 октября 2018 г., 3:27
Не уверен, насколько это поможет, но вот некоторые из моих опытов с этими параллельными экранами.

Я использовал эти экраны на STM32F407, но это будет похоже на STM32103. Я сначала заставил их работать, написав свою собственную библиотеку Bit Bang, но потом я получил аппаратный периферийный FSMC для управления экранами. После настройки FSMC проще.

Экраны, которые они выпускают 3V, но у них есть схемы на печатной плате, чтобы их можно было запустить с 5V, так как они предназначены для Ardunio. То, что я сделал, это удалило 3.3V LDO и короткие винки и прокладки Vout, где LDO был этим, тогда просто подключите 3.3v ко всему вместо 5 В.

Вот проект, над которым я работаю сегодня с ILI9341 в 16 -битной параллельно https: // www.YouTube.com/watch?v = stbh8vw ... e = youtu.быть

Весь мой код просто использует макросы в заголовке, поставляемых из ST «STM32F4XX.час". Я могу сделать свой код доступным, если вы хотите, но, вероятно, понадобятся несколько модов для запуска STM32F103

Изменить я только что посмотрел ближе на спецификации синих таблеток, и у него нет аппаратного периферийного устройства FSCM, поэтому его нужно немного ударить в программное обеспечение

Flyboy74
Пн 29 октября 2018 г., 3:47
Если вы хотите сесть и создать свой собственный код битов.

Экран будет использовать протокол 8088. Он работает так, вы подтягиваете штифт CS Low, чтобы общаться с экраном (так же, как SPI), затем вы устанавливаете контакты данных в данные, которые вы хотите собедать, затем вы пульете штифт WR, чтобы получить экран, чтобы ввести данные, которые у вас есть установить на строки данных. Существует RS (иногда называемый DC), который выбирает, является ли данные командой или данными, которые должны быть записаны в ОЗУ.

Чтобы установить контакты Data 8 одновременно, которые находятся на одном и том же порту, а рядом друг с другом можно сделать, просто написав значение в регистр ODR для этого порта.

Вот ветка, где я работал над битом программного обеспечения ViewTopic.PHP?f = 3&t = 3967&P = 48025&hilit = ... 325#P48025

Дэйвид.Прентис
Пн 29 октября 2018 г., 7:47
Вы все сделали правильно в своем оригинальном посте.

Я опубликую подходящее специальное для вас после того, как я взял свою собаку на его прогулку.

Вам не нужно беспокоиться о кодировании самостоятельно или конверсии уровня. Просто подключите сигналы LCD_XXX к контактам порта Bluepill и подключите 3.3V, 5V, GND штифты к соответствующим выводам мощности чертежа.

Дэйвид.

Жизнь проще, если вы просто используете проводку «Официальный аппаратный мод».глин. #define LCD_RST PB9 #define LCD_CS PB8 #define LCD_RS PB7 #define LCD_WR PB6 #define LCD_RD PB0

Эрикосовски
Вт 30 октября 2018 г. 3:04
[Flyboy74 - Пн 29 октября 2018 г. 3:47] - Если вы хотите сесть и создать свой собственный код битов.

Экран будет использовать протокол 8088. Он работает так, вы подтягиваете штифт CS Low, чтобы общаться с экраном (так же, как SPI), затем вы устанавливаете штифты данных в данные, которые вы хотите собедать, затем вы пульсируете штифт WR, чтобы получить экран, чтобы ввести данные, которые у вас есть установить на строки данных. Существует RS (иногда называемый DC), который выбирает, является ли данные командой или данными, которые должны быть записаны в ОЗУ.

Чтобы установить контакты Data 8 одновременно, которые находятся на одном и том же порту, а рядом друг с другом можно сделать, просто написав значение в регистр ODR для этого порта.

Вот ветка, где я работал над битом программного обеспечения ViewTopic.PHP?f = 3&t = 3967&P = 48025&hilit = ... 325#P48025
Спасибо, Flyboy, я собираюсь углубиться в эту тему, у меня есть 16 -битная параллельная LCL TFT 3.5 ", что я хочу заставить это работать, но не сейчас! Таким образом, ваши знания будут полезны, но сейчас мне нужно быстрое решение для этого параллельного TFT -экрана 8 бит.
Если вы думаете, что я смогу чему -то научиться с вашим кодом, я буду рад вам поделиться этим!

Спасибо за ответ и доброту, чтобы помочь!

Эрикосовски
Вт 30 октября 2018 г., 4:07
[Дэйвид.Прентис - Пн 29 октября 2018 г. 7:47] - Вы все сделали правильно в своем оригинальном посте.

Я опубликую подходящее специальное для вас после того, как я взял свою собаку на его прогулку.

Вам не нужно беспокоиться о кодировании самостоятельно или конверсии уровня. Просто подключите сигналы LCD_XXX к контактам порта Bluepill и подключите 3.3V, 5V, GND штифты к соответствующим выводам мощности чертежа.

Дэйвид.

Жизнь проще, если вы просто используете проводку «Официальный аппаратный мод».глин. #define LCD_RST PB9 #define LCD_CS PB8 #define LCD_RS PB7 #define LCD_WR PB6 #define LCD_RD PB0

Дэйвид.Прентис
Вт 30 октября 2018 г. 6:55 утра
Провод LCD_RD PIN -код PB0 на BluePill
Редактировать LCD_RD определить для PB0 в эскизе LCD_ID_READREGREGE.

Запустите эскиз. Вы должны увидеть reg (0xd3) как xx 94 86 xx, чтобы подтвердить, что ваши провода все в порядке.

Затем запустите любые примеры библиотеки. Они все должны работать.

Если вы что -то изменили, вероятно, задуматься снова.
я.эн. Оставьте IDE. Удалить библиотечный каталог. Начать IDE. Переустановка через менеджер библиотеки.

Дэйвид.

Если вы действительно хотите использовать PB5 (он останавливает вас, используя microSD). Измените щит.H Файл
Это означает удаление двух ударов на линии PB5 и вставка двух ударов на линии PB0.

Flyboy74
Вт 30 октября 2018 г. 8:07
[Эрикосовски - Вт 30 октября 2018 г. 3:04] -
[Flyboy74 - Пн 29 октября 2018 г. 3:47] - Если вы хотите сесть и создать свой собственный код битов.

Экран будет использовать протокол 8088. Он работает так, вы подтягиваете штифт CS Low, чтобы общаться с экраном (так же, как SPI), затем вы устанавливаете штифты данных в данные, которые вы хотите собедать, затем вы пульсируете штифт WR, чтобы получить экран, чтобы ввести данные, которые у вас есть установить на строки данных. Существует RS (иногда называемый DC), который выбирает, является ли данные командой или данными, которые должны быть записаны в ОЗУ.

Чтобы установить контакты Data 8 одновременно, которые находятся на одном и том же порту, а рядом друг с другом можно сделать, просто написав значение в регистр ODR для этого порта.

Вот ветка, где я работал над битом программного обеспечения ViewTopic.PHP?f = 3&t = 3967&P = 48025&hilit = ... 325#P48025
Спасибо, Flyboy, я собираюсь углубиться в эту тему, у меня есть 16 -битная параллельная LCL TFT 3.5 ", что я хочу заставить это работать, но не сейчас! Таким образом, ваши знания будут полезны, но сейчас мне нужно быстрое решение для этого параллельного TFT -экрана 8 бит.
Если вы думаете, что я смогу чему -то научиться с вашим кодом, я буду рад вам поделиться этим!

Спасибо за ответ и доброту, чтобы помочь!
ОК, для вашего интереса, я поместил основные функции на GitHub проекта, который я опубликовал, работающий на плате STM32F407VET, он использует периферийное устройство FMSC HW для написания на ЖК -дисплей, так что не удастся, как вам понадобится на Bluepill https: // github.com/outofthebots/ili9341_16bit_touch

Вот какой -то код, когда я использовал бит на экран HX8357B в 16 -битной параллельной. Что -то похожее на это, это то, что вам нужно написать для синей таблетки. Все, что делает этот код, это настройка экрана и непрерывно писать Redish Colored Pixels на экран и посмотрите здесь обсуждение ViewTopic.PHP?f = 3&t = 3841&P = 47071&hilit = hx8357#p47071 #include "stm32f4xx.h" #define RS GPIO_ODR_ODR_0 #define WR GPIO_ODR_ODR_1 #define CS GPIO_ODR_ODR_2 #define RST GPIO_ODR_ODR_3 //used for count down in Delay __IO uint32_t TimmingDelay; void SysTick_Handler(void) { if(TimmingDelay !=0) { TimmingDelay --; } } void Delay(__IO uint32_t time) { TimmingDelay = time; while(TimmingDelay !=0); } void Pin_setup(void){ //enable port D and E RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOEEN; //Port E is used for parallel data pins //set a port E pins to output. GPIOE->MODER = 0x55555555; //set all port E pins to push pull GPIOE->OTYPER = 0; //set all port E pins to 100MHz speed GPIOE->OSPEEDR =0xFFFFFFFF; //Port D is used for RS, WR, CS, RST //set needed pins as ouput GPIOD->MODER |= GPIO_MODER_MODER0_0 | GPIO_MODER_MODER1_0 | GPIO_MODER_MODER2_0 | GPIO_MODER_MODER3_0; //set needed pin to push pull GPIOD->OTYPER = 0; //set needed pins to 100MHZ; GPIOD->OSPEEDR |= 0x000000FF; GPIOD->ODR |= RS | WR | CS | RST; } void TFT_write_cmd(uint16_t command){ GPIOD->ODR &= ~RS; GPIOD->ODR &= ~CS; GPIOD->ODR &= ~WR; GPIOE->ODR = command; GPIOD->ODR |= WR; GPIOD->ODR |= CS; GPIOD->ODR |= RS; } void TFT_write_data(uint16_t data){ GPIOD->ODR &= ~CS; GPIOD->ODR &= ~WR; GPIOE->ODR = data; GPIOD->ODR |= WR; GPIOD->ODR |= CS; } void LCD_setup (void){ //hardware reset GPIOD->ODR &= ~RST; Delay(120); GPIOD->ODR |= RST; Delay(120); //software reset TFT_write_cmd(0x01); Delay(120); //sleep out TFT_write_cmd(0x11); Delay(120); //Normal Display Mode On) TFT_write_cmd(0x13); //Display On TFT_write_cmd(0x29); //CASET (Column Address Set) TFT_write_cmd(0x2A); TFT_write_data (0000); TFT_write_data (320); //PASET (Page Address Set) TFT_write_cmd(0x2B); TFT_write_data (0000); TFT_write_data (480); //Exit_idle_mode TFT_write_cmd(0x38); //Set_pixel_format RGR565 16 bit TFT_write_cmd(0x3A); TFT_write_data(0b01010101); //RAMWR (Memory Write) TFT_write_cmd(0x2C); } void main(void){ SysTick_Config(SystemCoreClock/1000); Pin_setup(); LCD_setup(); // Infinite loop while (1) { //write some redish data to the screen TFT_write_data(0xff00); } }

Эрикосовски
Вторник 30 октября 2018 г. 16:27
Привет, Дэвид,
Я предполагаю, что правильная библиотека по ссылке ниже:
https: // github.com/prentiadevidavid/mcufriend_kbv
Я изменил PIN LCD_RD для порта PB5, но я тоже попробовал с PB0, и ничего не произошло.
Этот идентификатор 0xd3 был возвращен во время одной из моих многочисленных попыток включить его! И я увидел, что этот идентификатор ссылается на ILI9486 в коде Libray, но даже он просто показывает белый экран, поэтому я предполагаю, что через один момент я правильно его подключил, я попробую еще раз!
Я переустану библиотеку через менеджер библиотеки и посмотрю, что произойдет.
PINS DATA SINS по умолчанию PA0 ~ PA7?
Должны быть объявлены приведенные ниже выводы?
#define LCD_RST PB9 #define LCD_CS PB8 #define LCD_RS PB7 #define LCD_WR PB6 #define LCD_RD PB0

Дэйвид.Прентис
Вторник 30 октября 2018 г. 18:10
Эскиз Readgreg вообще не использует библиотеки вообще. Только встроенный цифровой write () и pinmode ().

Ваш оригинальный пост показал, что Readger работает на PB5. Измените проводку на PB0 и определите на PB0. Эскиз для чтения должен дать вам такой же вывод, что и в OP.

Целесообразно использовать менеджер библиотеки для установки библиотек, когда это возможно.

Punters часто пытаются помещать библиотеки в системные папки или случайные местоположения. Я предлагаю, чтобы вы удалили неправильно установленные библиотеки, если есть «официальная» сторонняя библиотека, которая поддерживается менеджером E.глин. Adafruit_gfx, mcufriend_kbv, ...
Затем перезапустите IDE. Установите с помощью менеджера библиотеки.

Если у вас когда-нибудь возникнут проблемы, копируйте вставку последние несколько строк из словесного компиляции e.глин. Использование памяти и библиотеки.

Дэйвид.

Эрикосовски
Ср 31 октября 2018 г., 11:22
Привет, Дэвид,
Хорошие новости, я сделал все, что вы сказали, и TFT начал работать, как магия! : D
Ты лучший!
Большое спасибо!

Дэйвид.Прентис
Ср 31 октября 2018 г. 13:29
Отличная работа.

Секрет, как правило, покинуть компьютер и сесть с хорошей чашкой чая.

Тогда делайте один шаг за раз. Сделайте заметки с карандашом и бумагой, когда вы идете.

Дэйвид.