Урок 37
Часть 9
Дисплей TFT 240×320 8bit
В прошлой части данного урока мы закончили работать со шрифтами и строками и начали работать уже с изображениями, написав функцию считывания изображения с USB Flash и вывода её на экран.
Сегодня мы продолжим данную работу.
Напишем прототип этой функции.
Добавим тест для вывода картинок на экран опять же в теле функции FileReadWrite
TFT9341_SetRotation(i%4);
}
TFT9341_SetRotation(0);
TFT9341_DrawBitmap(0, 0, «001.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «002.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «003.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «004.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «005.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «006.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «007.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «008.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «009.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «010.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «011.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «012.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «013.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «014.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «015.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «016.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «017.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «018.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «019.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «020.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «021.bmp»);
HAL_Delay(5000);
TFT9341_DrawBitmap(0, 0, «022.bmp»);
HAL_Delay(5000);
Соберем код, прошьем контроллер и проверим на практике
Таким же самым образом выводятся и все остальные рисунки. Весь тест вы увидите в видеоверсии, прикрепленной ниже.
Раскомментируем предыдущие тесты и проверим код полностью.
Предыдущая часть Программирование МК STM32 Следующий урок
Техническая документация на контроллер дисплея
Отладочную плату и дисплей LCD 20×4 можно приобрести здесь:
Где приобрести именно такой дисплей TFT 240×320, написать затрудняюсь, так как может прийти не всегда именно такой дисплей, какой заявлен в продаже. Либо придет подключаемый по SPI, либо с другим контроллером. Поэтому все тонкости уточняйте у продавца.
Смотреть ВИДЕОУРОК (нажмите на картинку)
Владимир, добрый день! Спасибо за Ваши уроки, весьма полезные и качественные. Есть пожелание — оставляйте промежуточный код в частях урока, так проще с ними разбираться на пути освоения урока. При попытке повторить данный урок, я столкнулся с тем что у меня идет только часть теста графики и не идет часть с текстом и я уже не говорю о катрике. А урок весьма важный и полезный! И весьма интересна как сама шина, так ещё более интересен контроллер ILI9341!
Да и к тому же Ваш пример сильно мне помог! Я им проверял полученные дисплеи! И только 3-й дисплей оказался не бракованным и с нужным контроллером, хотя все заявляли что у них ILI9341! Спасибо!
а без LCD дисплея будет работать? Что-то подсветка горит, а картинки нет
Будет, символьный дисплей используется только в целях отображения идентификатора.
Здравствуйте , Возникли проблемы по работе с данным дисплеем,
У меня другая плата и команды Chip Select я выбрал NE4, команду LCD Register Select на A6
1) Вопрос про вот эти значения откуда они берутся?
#define ADDR_CMD *(uint8_t*)0x60000000
#define ADDR_DATA *(uint8_t*)0x60010000
2) в файле ili9341.c ругается на строку extern void Error_Handler(void);
3) Обязательно ли подключать вывод RES на дисплее? дело в том что у меня этот вывод идет на кнопку ресет.
Очернь понравились уроки, дисплей с али заработал без проволочек
Прошу не этом не останавливаться и например сделать урок гле, например, stm будет по дисплею крутить видео снятое на какой нить нокии 2690
Это нужен будет как минимум STM32F769, который поддерживает аппаратное декодирование JPEG.
так ведь там h263
вот пример видео, очень старое
https://yadi.sk/i/IYWyyTAh3MYYeR
STM может потянуть такое?
сведения их mediainfo
Video
ID : 1
Format : H.263
Format profile : BaseLine@1.0
Codec ID : s263
Duration : 58 s 187 ms
Bit rate : 69.9 kb/s
Width : 176 pixels
Height : 144 pixels
Display aspect ratio : 1.222
Original display aspect rat : 4:3
Frame rate mode : Variable
Frame rate : 9.796 FPS
Minimum frame rate : 1.458 FPS
Maximum frame rate : 43.388 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.281
Stream size : 496 KiB (83%)
Writing library : hant
Language : English
Encoded date : UTC 2016-10-10 11:57:06
Tagged date : UTC 2016-10-10 11:57:06
Audio
ID : 2
Format : AMR
Format/Info : Adaptive Multi-Rate
Format profile : Narrow band
Codec ID : samr
Duration : 58 s 320 ms
Bit rate mode : Constant
Bit rate : 12.8 kb/s
Channel(s) : 1 channel
Sampling rate : 8 000 Hz
Bit depth : 13 bits
Stream size : 91.1 KiB (15%)
Writing library : Nokia
Language : English
Encoded date : UTC 2016-10-10 11:57:06
Tagged date : UTC 2016-10-10 11:57:06
должен потянуть но нужно все оптимизировать и даже эту библиотеку, код которой представлен автором статьи и после нужно прикручивать декодер и буфер кадра и с него уже гонять картинку на дисплей
по хорошему, если ног не жалко то буфером пусть будет внешняя быстрая микросхема из которой контроллер просто будет читать в дисплей то есть это должно работать так: контроллер раскодирует видео и помещает в буфер, дальше из буфера прогоняет и снова
кстати дисплеи часто комплектуются халявным тачскрином который сам по себе неплох и если мы увидим статью по применению этого тач скрина то это думаю будет очень даже неплохо
Добрый день. Отличный урок.
Только есть один вопрос: как происходит совмещение логических уровней?
Ведь дисплейчик работает в пятивольтовой логике, а АРМ — в трехвольтовой. Может я что-то не заметил в Вашем уроке? Объясните, пожалуйста.
Здравтсвуйте!
Да всё нормально там работает. Дисплей работает от 3 вольт. От 5 вольт работает подстветка. Вроде так. Ну если что как правило производители делают ножки толерантными к более низким уровням.
Спасибо. А то видел у какого-то итальянца, он отпаивал стабилизатор и шины на 3,3 и 5 вольт закорачивал, когда подключал к STM. Типа, это фича такая с этим дисплейчиком и STM.
У Вас отличные уроки.
Добрый вечер.
Нужно бы урок с подключением touchscreen у этого шилда.
Подскажите такой вопрос: имеется подобный дисплей на контроллере LS022 (8ми битный интерфейс). Вот только уровни сигналов в нем 1,8В. Собрал на резисторных делителях напряжения + добавил индикаторы в виде светодиодов (D0-D7, RW, RS). Если дрыгать пинами все команды вручную — светодиоды светятся, дисплей работает, но медленно. Попробовал задействовать Ваш вариант с FSMC — кроме ресета — ничего на индикаторах нет. Функцию чтения с контроллера не использую — понятно, что связь через делители односторонняя — передаю команды и данные на дисплей. Может ли в этом быть причина?
Трудно сказать, я так не пробовал.
кстать такая фича наблюдалась и у меня — я сначала не мог сосчитать ID дисплея у меня был бред типа FEFEFEFEF… ACACA0AC0C… а если чуть увеличить тайминги — на 2 то ID считывается как ему положено 00009341. На картинка на дисплей выходит сыпанной, либо вообще какой-то сеткой покрыта и видно что часть пикселей отображается неправильно или вообще не отображается. Это исправляется подключением шины данных через витую пару и запайкой резистора 200…500 ом между контактами 5V и RW
Огромнейшее вам СПАСИБО!!! Почти разобрался (подключил ili9486_8bit к stm43f407vet6, читаю шрифт и картинки с SD карты, инициализацию переделал взяв команды с WIKI LCD и подключил А18 вместо А16) Ваши картинки рисует но в пол экрана это понятно, разрешение другое, а вот свою вывести не могу.Подскажите чем и как перегнать, и какие шрифты можно взять мне нужно покрупнее.Еще раз СПАСИБО!!!
Картинку вывел. Ура!
Здравствуйте!А можно ускорить вывод картинок на 407 контроллере?
дисплей 480х800.уж очень медленно.на авр так выводит.Заранее большое спасибо!
У меня на дисплее не разведен вывод rd считать id невозможно. Есть ли какой нибудь способ узнать наверняка, доходят ли команды до дисплея. Инициализация с Ардуино не заводит экран
нашёл способ. отправил тупо в лоб
void lcd_init(void)
{
TFT9341_reset();
LCD_Write_COM(0x11); // Sleep OUT
HAL_Delay(50);
LCD_Write_COM(0x29);
}
закрасил половину экрана чёрным, остались куски белых пикселей.
теперь точно знаю что команды доходят
Добрый день!
Подскажите по шрифтам, 32 размер или более есть у Вас?
Отдельно можете ссылку на шрифты сделать?
Спасибо за труд!!!