Может регистр Memory Write тоже сокращается на то количество бит, которым кодируется пиксель.
В данном случае на 16 бит. 2 бита регистра Memory Write может деактивируются.
@stm Смотрите внимательнее. Вы неправильно интерпретируете данные.
Что DPI, что DBI всего три бита, а вы их интерпретируете как 4х битные. И эта ошибка не первый раз.
Будьте внимательнее
DPI = 101
DBI = 101
Остальные биты значения не имеют. Нет никаких ужиманий, деактиваций и всего остального.
И в данном случае команда 8 бит.
Повторяю ещё раз. КОМАНДА ВСЕГДА 8 БИТ. Там нет никаких 16 или 18. Всё, что выше игнорируется.
Я у Китайского производителя об этом СПРАШИВАЛ. Он сказал, что так у всех дисплеев КОМАНДА 8 бит, данные цвета 3-18 бит.
Да, это я неправильно записал, но значения правильные.
DPI [2:0]==101
DBI [2:0]==101
Если б время для редактирования сообщений было больше, я б исправлял.
@stm Ко мне на учёбу приезжает человек, на новогодние праздники. Можете то же приехать.
Я мягко говоря не очень социально активный))
И пока что не было вопросов в которых я сам не разбирался.
Ну конечно из тех тем, которые мне были необходимы.
То что вы ведёте обучение лично за это большое уважение.
Кстати тема дисплея огромная, очень огромная.
Но думаю большинству нужен только старт, вводная детальная информация по дисплею.
То есть как читать даташит, как устроен пиксель, про регистр то что я выше описал итп.
А дальше дело техники и желания думаю.
@stm Я даже не знаю что сказать.
Когда я занялся дисплеями, было всё как в тумане.
Когда я понял что и как, всё стало просто. Написание драйвера один-два дня.
Но это теперь мешает объяснить. Пишу как делается и упускаю нюансы.
Вы вываливаете очень много вопросов. Некоторые заводят в тупик.
Ответ знаю, но как объяснить не знаю. У нас уровень подготовки разный.
Думаю ещё недельку детали буду изучать, просто потому что интересно.
Или больше, не жалко))
А дальше буду искать подходящую графическую библиотеку.
Говорят LVGL библиотека нормальная https://www.youtube.com/watch?v=xUTmpjq5oDM
@stm stemwin нормальный вариант под stm32 для базового ui, правда я не слежу, что там с обновлениями на текущий день.
@aveal Хорошая библиотека. Я её пробовал. Но как скрестить с С++, пока не разобрался.
И исходного кода нет.
Вначале я хотел С++ учить для МК, но из за распространённости Си для МК, учил его.
Вы пишете на С++?
На CMSIS пишете, без HAL?
HAL ведь на Си или на С++ есть тоже?
@stm Я пишу на С++.
Такое ощущение, что кроме меня этого никто не делает.
Поэтому мне приходится всё делать самому.
HAL я не уважаю по многим причинам.
CMSIS использую всегда. Он удобен. И это не язык. Просто дефайны, которые описывают регистры.
Почитайте серию моих статей. Поймёте в чём дело.
Представить даже не могу как это сложно, не видел ещё коды для STM32 на С++))
Я не писал что CMSIS это язык)
Понятно, что в HAL есть много ненужного, всякие проверки, код на HAL выполняется дольше.
Но библиотеки упрощают кодирование. Если нужна скорость, можно и на CMSIS написать.
Всё идёт к упрощению, знать всё это хорошо, но выполнение проще доверять машине, а самому сходить в это время прогуляться, чайку попить.
Вот я дисплей сейчас изучаю, я ведь не буду сам графическую библиотеку писать, мне достаточно будет знать как она работает.
Я как то писал на HAL под какой то камень. Сейчас уже и не помню.
У него 8 Килобайт FLASH и 2 Килобайта ОЗУ.
Инициализация периферии заняла всю память и свой код вставлять было некуда.
Всё сделал на С++ и классах, вся прошивка заняла 50%
Так что я голосую ногами за уход от HAL.
А так как я пишу много и на разные камни. У меня практически на всё есть библиотеки. Если устройство несложное, новый драйвер я накидываю за пару дней.
Да и с дисплеями проще работать на С++.
Так что когда по быстрому нужно что то накидать, я уже обхожусь без HAL.
А на счёт CMSIS я вас просто недопонял.
МК становятся всё мощнее и с большим объёмом памяти.
На ассемблере ещё лучше было бы писать, а в бинарном виде лучше ассемблера.
Скоро будем голосом или мыслями программировать.
Можно проверить насколько быстрее у вас без HAL заполняется дисплей.
Baud Rate на SPI1 у меня 42 Mbits/s.
Заполняю дисплей функцией HAL_SPI_Transmit
Скорость заполнения всего дисплея на gif.
Когда дисплей засвечивается, это я нажимаю на ресет.