MementoMori 4 24 января, 2020 Опубликовано 24 января, 2020 · Жалоба 42 minutes ago, zombi said: А можно как-то остановить процессор? что бы к памяти никто кроме контроллера LCD не обращался. Записал всё что надо (бело синие полоски) и остановился. Будет дёргаться изображение? Не знаю. По идее, если где-то поставить точку останова, процессор останавливается. Пробовал, к положительному результату со стороны дисплея это не приводит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба Запустил тест на 100 циклов. Ни одной ошибки SDRAM. 10 раз сработало прерывание ошибки LTDC. Всего 10 раз. Да черт возьми, что ж там с чтением адреса? Может быть контроллер дефективным? Неохота его перепаивать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба ЕСТЬ НЕБОЛЬШОЙ РЕЗУЛЬТАТ!!!! Выяснено, что если располагать буфер в SRAM по адресу 0x2000FF00, то дрожание полностью прекращается. На единицу меньше - появляются глюки. Я любитель и в некоторых аспектах матчасти разбираюсь плохо. Еще один минус моего любительства - слепая вера чужому коду, который, если его выложили, очевидно рабочий. Вот где в этом чужом коде была собака зарыта volatile uint32_t RGB565[5000] = {0x00000000}; uint32_t i; HAL_LTDC_SetAddress(&hltdc,(uint32_t) &RGB565,0); for(i=2000;i<4500;i++) { *(__IO uint16_t*) (hltdc.LayerCfg[0].FBStartAdress + (i*2)) = 0x00ff; } while (1); Только сейчас я понимаю его несуразность - объявить переменную, которой компилятор присвоит некий адрес и разместить начало буфера по этому же адресу. Хотя и в младших адресах и в старших могут быть еще переменные. Просветите невежду, может быть так, что в процессе создания и уничтожения локальных переменных образующиеся пустые места не остаются без внимания системы и происходит "уплотнение" памяти? ПОнятно теперь, почему начало буфера плавало. Но..... проблемы то со SDRAM это не решает. Ладно, пытаясь разместить код в SRAM, я рисковал разворошить осиное гнездо. Но по адресу 0xD0000000 должно быть спокойно. Продолжаю копать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба 7 minutes ago, MementoMori said: Просветите невежду, может быть так, что в процессе создания и уничтожения локальных переменных образующиеся пустые места не остаются без внимания системы и происходит "уплотнение" памяти? ПОнятно теперь, почему начало буфера плавало. Локальные переменные, когда не помещаются в регистрах или требуется их адресация, выделяются на стеке. Поэтому при каждом вызове приведенного фрагмента адрес буфера может быть новым. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба 1 minute ago, aaarrr said: выделяются на стеке Опять таки, простите мне мою необразованность - но разве верхушка стека не в старших адресах располагается? Вот как выглядит красный прямоугольник на экране, если расположить буфер по адресу 0x2000FF00 А вот, как его корежит, если в качестве адреса буфера указать 0xD0000000, то есть SDRAM (это картинка, в динамике изображение дрожит и шумит) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба 24 minutes ago, MementoMori said: разве верхушка стека не в старших адресах располагается? Стек располагается там, где его явным образом расположили. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 25 января, 2020 Опубликовано 25 января, 2020 · Жалоба Вникаю в предмет... Скажите, а MPU может помочь? Я сделал как в одной статье Правда там почему-то адрес SRAM (хотя статья про настройку SDRAM), но я попробовал поменять адрес на 0x20010000 - не помогло. Что-то не так или это тупиковый путь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 26 января, 2020 Опубликовано 26 января, 2020 · Жалоба 5 hours ago, MementoMori said: Скажите, а MPU может помочь? А вы прочитайте для чего используется Memory Protection Unit. Он всего-лишь вызовет вам исключение при попытке доступа в запрещённую область памяти. А диапазоны памяти и их аттрибуты вы сами настраиваете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 26 января, 2020 Опубликовано 26 января, 2020 · Жалоба При указании в качестве адреса буфера FLASH памяти тоже дрожание. Какой бы я адрес ни указал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 26 января, 2020 Опубликовано 26 января, 2020 · Жалоба Господа это абсурд!!!!! Картинка перестала дрожать лишь тогда, когда я уменьшил пиксельклок до 30 МГц, а размер окна до 200х200 пикселей, формат цвета RGB565. Правда даже в этом случае есть какой-от глюк, цвет 0xF800 дает розовый квадрат, хотя по идее это чистый красный. Так.... скажите мне, какова пропускная способность памяти SDRAM 32 бит на частоте 108 МГц? Можно ли как-то практически средствами контроллера измерить ее? Ну не может такого быть чтобы SDRAM+LTDC не мог потянуть кадр больше 80 кб... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 7 марта, 2020 Опубликовано 7 марта, 2020 · Жалоба Все-таки до конца проблемы с дисплеем не решены. Когда он у меня худо бедно заработал, я забил на частоту пиксельклока. Но теперь все же хочу получить законно (по даташиту) причитающиеся мне мегагерцы. А по факту не получается завести дисплей более чем на 30 МГц. Итак, напомню - контроллер STM32F746. Дисплей https://www.buydisplay.com/download/manual/ER-TFT070-6_Datasheet.pdf Контроллер дисплея https://www.buydisplay.com/download/ic/EK79001.pdf Согласно даташиту дисплей может работать с пиксельклоком до до 65 МГц У меня же после 30 МГЦ черный экран, с артефактами и прочим. Иногда есть неяркие мутные вспышки, во время которых на линиях питания VGL и VGH есть плавные просадки напряжения примерно 0.5 вольт (не ниже нижнего предела питания по даташиту). Для того, чтобы полностью исключить LTDC я принудительно настроил загнал ножки интерфейса как GPIO_Output и настроил на красный цвет. То есть в отправляемой информации на дисплей я уверен. Остается только клок. К сожалению, у меня нет возможности проверить осциллографом клок, мой не берет такие частоты. Но, как мне кажется, если бы дело было в клоке то я на экране ничего не увидел бы - каждый загоняемы в него пиксель - красный - ну подумаешь, пропущено пару клоков и что? Насчтет просадок напряжения -мне кажется что они являются не причиной, а следствием. В противном случае, если бы они зависели от контролера питания, поведение дисплея не зависело бы от частоты клока. Более того - просадки и вспышки - нечастое явление, в остальные 90% времени на линиях питания нет никаких просадок, но экран черный. Куда копать? Вот видео https://cloud.mail.ru/public/42Ba/DpBw5umNp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 7 марта, 2020 Опубликовано 7 марта, 2020 (изменено) · Жалоба У меня роооовно такое было когда преобразователь напряжения для питания панели возбуждался и мерцал. Скорее всего выходным напряжением. Для уменьшения помех на плате дисплея была своя цепь земли, соединявшаяся с землей дисплпя перемычкой. В одном изделии вместо 0 ом резистора оказался фееритовый блочёк blm21pg331. И все мерцало. Хотя вроде не должно.... все обратные связи замыкались в пределах локального участка схемы и наружу шёл только постоянный ток. Изменено 7 марта, 2020 пользователем GenaSPB Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MementoMori 4 7 марта, 2020 Опубликовано 7 марта, 2020 · Жалоба Трассировка преобразователя у меня такая Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 8 марта, 2020 Опубликовано 8 марта, 2020 · Жалоба Там много букаф... предложение просто накидать перемычки между землями и посмотреть на результат, на поведение дисплея. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться