@aveal попробовал изменить задержку, не в ней дело. Что то другое. При сборке по этом примеру https://stm32withoutfear.blogspot.com/2019/03/stm32-lcd-st7735.html, все запускается и цвета и размеры нормально, но вместо картинки мусор, не разобрался с выводом изображения пока
@Aveal извиняюсь, а мое сообщение на 5ой транице?
@alexey55555 Сейчас спамеров резко много стало, весеннее обострение наверно, поэтому пока каждое сообщение модерирую вручную. В ближайшее время проверенные авторы будут сразу публиковаться, так что приношу извинения за временные неудобства.
@alexey55555 #define ST7735S_1_8_DEFAULT_ORIENTATION // WaveShare ST7735S-based 1.8" display, default orientation - с этим у меня нормально поехало, но картинка с птичкой не загружается.
В конце основного вывода добавил
ST7735_FillScreen(ST7735_BLACK); ST7735_DrawImage(0, 0, 128, 128, (uint16_t*) test_img_128x128); HAL_Delay(3000);
библиотеку с img подцепил. Картинка выводится так, остальная часть тестовой программы без ошибок
@sdsdfw Вы картинку взяли из проекта который я выложил? там потертый фаил. я его и удалил из демки)
https://dropmefiles.com/HGn7U вот оригинал, но ничего не выйдет. у вас флеша 64кб, только под картинку нужно 113кб.
@alexey55555 а теоретически, что бы на моем контроллере грузить картинки таких размеров, это надо SD карту подключить? И потом построчно выводить на экран?
@sdsdfw я с картинками особо не связывался, теоретически да. или сдкарту или чтото вроде (W25Q32, W25Q64, W25Q128)
Красивая картинка!
Первое, что бросается в глаза: DCX переключается после второго байта, а не после первого.
Дальше выясняется, что в каждом пакете ровно вдвое больше байт, чем должно быть. Отсюда возникает предположение, что SPI контроллер работает в режиме 16-бит. Это вполне объяснило бы и несвоевременный DCX.
И встречный вопрос сообществу: у меня ST7735S работает только на частоте 160КГц, хотя по документации должен бы до 15МГц принимать. Кто-нибудь с таким сталкивался? (Уже на 320КГц даже на однобайтные команды без параметров не реагирует.)
@mamon Я столкнулся с тем, что до определённого момента дисплей хавает данные. Потом увеличение частоты SPI почему то перестаёт влиять на скорость вывода данных.
Я медленно, медленно готовлю статью, в которой хочу показать скорость вывода на дисплей на определённом контролере, но с разными интерфейсами.
SPI, FSMC-8bit, FSMC-16bit, 8bit ногодрыг.
@mamon Я столкнулся с тем, что до определённого момента дисплей хавает данные. Потом увеличение частоты SPI почему то перестаёт влиять на скорость вывода данных.
Я медленно, медленно готовлю статью, в которой хочу показать скорость вывода на дисплей на определённом контролере, но с разными интерфейсами.
SPI, FSMC-8bit, FSMC-16bit, 8bit ногодрыг.
Скорость вывода не растет, или дисплей не принимает данные на более высокой скорости?
Если дисплей все же отображает все, что ему послали, то проблема может быть в скорости процессора или в задержках между посылками последовательных байт.
В моем случае на 160КГц дисплей рисует. После переключения на 320КГц просто игнорирует все, что ему послали, а после возврата на 160 - продолжает рисовать, как ни в чем не бывало. (На stm32f401 при 84MHz CPU минимальная частота SPI - 164062. Понижать частоту CPU или APB1 ради эксперимента не вижу смысла - разве, чтобы убедиться, что "на 200 работает, а на 240 уже нет"?)
Как-то слабо верится, что "не слишком красиво уложенные" провода уже на 320КГц настолько портят сигнал, что дисплей его не видит... Может, какой-то команды не хватает, чтобы вывести его из "сонного состояния"? (Я ему посылаю SleepOut (0x11), DisplayOn (0x29) и ColMod (0x3a) с параметром 0x5 (16bpp).)
Скорость вывода не растет, или дисплей не принимает данные на более высокой скорости?
Скорость вывода не растёт. Я сужу о скорости по заполнению экрана одним цветом. Там всего несколько команд. Выставить координаты верхнего левого угла, нижнего правого угла, запись RAM. А дальше два байта цвета, пока всё не заполнится.
Отображение идёт нормально, даже при максимальной частоте. Проверял на STM32F407 при максимальных частотах тактового генератора.
Дрова использовал отсюда https://disk.yandex.ru/d/ymB60PAjT5rjTw
Примеры там же.
@mamon Доброго времени суток, вряд ли провода, все-таки по частоте на порядки отличие от ожидаемых значений. Теоретически могу Ваш проект проверить у себя, где-то были ST7735 распаянные на платах с STM32F103RE. Но у меня та партия кажется была ST7735R.
Пока не понял, как разбить цитату на части, поэтому пробую вручную:
>> Доброго времени суток, вряд ли провода, все-таки по частоте на порядки отличие от ожидаемых значений.
Вот и я так думал. Просто предполагал, что кто-то еще столкнулся с аналогичной проблемой.
>> Теоретически могу Ваш проект проверить у себя, где-то были ST7735 распаянные на платах с STM32F103RE. Но у меня та партия кажется была ST7735R.
Спасибо за моральную поддержку, но пока этот "проект" находится не в том состоянии, чтобы его можно было оценить или даже просто воспроизвести - это не HAL, не Cube, а просто сделано отдельно от всего.
Я регистрировался не столько для того, чтобы получить ответ на мой вопрос по поводу скорости, сколько для того, чтобы ответить на вопрос, на который я вижу правильный ответ (или мне так кажется, что ответ правильный?).
И я готов поделиться кусками кода, которые у меня работают. Например, чтение - RDID, RDDST, RDDCOLMOD. (Только не просите перевести этот код на более привычные вам вызовы. 🙂 )