Длинный гибкий шлейф к дисплею.
- Войдите на сайт для отправки комментариев
Всем бобра!
Сделал платку на Atmegа328P , к ней подключен OLED вот такой: https://www.winstar.com.tw/products/oled-module/graphic-oled-display/256x64-oled.html по 4х проводному SPI. Все работало пока не понадобилось перенести дисплей подальше от платы.
Я применил типа такого шлейфика http://www.nyplatform.com/index.php?route=product/product&product_id=1167
только 30ти пиновый , длиной 15см, и адаптер наподобии https://www.hxlstore.com/15818174360.shtml
Дисплей работает, но через какое-то время вырубается. Взял кабель вдвое короче - работает как надо. Но блин мне надо минимум 15см, вот в чем засада.
В чем может быть причина? Напряжения все ок. Я подозреваю проблема в емкости самого кабеля. Частота шины SPI стоит максимальная. Наверное в какой-то момент времени какой-то бит считывается не правильно, а в итоге ломается команда на дисплей, и он вырубается.
Как можно побороть? Искать шлейф с меньшой емкостью? Понижать частоту шины не вариант, и так на грани допустимого скорость обновления инфы на дисплее. Кто что подскажет?
Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?
Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.
Снизить частоту SPI, либо найти компромисс между МНЕ НАДО и КАК СДЕЛАТЬ НАДЁЖНО. Вариантов много, но сначала нужно понять, зачем нужно использовать максимальную частут SPI. Например, если нужен удлинитель для SPI, наверняка есть варианты. Либо промежуточные ступени. Для SPI есть еще вариант с DMA, но это уже не Ардуина. Впрочем это уже мои фантазии. Удачи!
Я для своих нужд плотно изучал опыт использования подобных дисплеев с ардуино, и пришел к грустному выводу - слабовата она. :( Если нужно много красивой и динамичной графики - использовать связку из более мощного контроллера под отображение и скажем ардуино для работы с аналоговыми сенсорами, если это нужно.
Ну или вешать на заднюю стенку такого дисплея какую-нить мелкую Нано или ПроМини, которой поручать только отображение, а на нее уже гнать любым удобным интерфейсом данные с другой ардуины для обработки. Если оставаться в рамках ардуино.
Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?
Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.
хм. Я не подозревал, что по SPI на дисплее 256 на 64 на 16 градаций серого можно добиться пару сотен фпс. У меня фрейм аж 300мсек прописывается. Применяю библиотеку u8glib. Но библиотека тут ни при чем. Я пробовал в рукопашную заливать битмапы - плюс минус та же фигня. И 10 фпс не получится, не то что сотни. :)
Я для своих нужд плотно изучал опыт использования подобных дисплеев с ардуино, и пришел к грустному выводу - слабовата она. :( Если нужно много красивой и динамичной графики - использовать связку из более мощного контроллера под отображение и скажем ардуино для работы с аналоговыми сенсорами, если это нужно.
Ну или вешать на заднюю стенку такого дисплея какую-нить мелкую Нано или ПроМини, которой поручать только отображение, а на нее уже гнать любым удобным интерфейсом данные с другой ардуины для обработки. Если оставаться в рамках ардуино.
я тоже подумываю перейти на дуэ до с 8 битным рараллельным подключением.
1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.
Вообще-то 15 см - не слишком далеко.
2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен).
1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.
Вообще-то 15 см - не слишком далеко.
2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен).
можно сигнальные провода разделить на участке плата-адаптер. Но если проблема в емкости сигнального провола относительно земли, то не совсем понимаю как это поможет. Если проблема в наводке, то да, понятно.
По поводу пункта 2, опять-таки, если проблема в емкости, как это пока для меня выглядит, то резистор может только усугубить ситуацию, увеличив сопротивления разряда = увеличив тау рц цепочки. Или я что-то не так понимаю?
Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?
Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.
По той ссылке, что Вы привели, 16 градаций яркости лично мне обнаружить не удалось.
Поэтому считал дисплей монохромным (тем более, что приведенной картинке это полностью соответствует):
Объем экрана: 256*64=16 кбит.
При частоте SPI 4 МГц это соответствует 4000000/2048=244 fps.
Если все-таки допустить, что там действительно 16 градаций яркости, получаем 244/4=61 fps.
Это, конечно, не сотни, но и далеко не 10.
Так что цифры не сходятся.
Могу высказать предположение, что тормозит не экран, а то устройство, с которого Вы читаете битмап. Ну, либо какая неоптимальность в программе... Долго ли, умеючи. :)
1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.
Вообще-то 15 см - не слишком далеко.
2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен).
можно сигнальные провода разделить на участке плата-адаптер. Но если проблема в емкости сигнального провола относительно земли, то не совсем понимаю как это поможет. Если проблема в наводке, то да, понятно.
"В плоском кабеля всегда крайне желательно наличие цепи “общего провода” между сигнальными проводами, используемыми при подключениях “с общей землёй”. – Чередование “общего провода” с сигнальными проводами очень желательно."
но для начала следует распаять шлейф по-людски.
Так что цифры не сходятся.
Могу высказать предположение, что тормозит не экран, а то устройство, с которого Вы читаете битмап. Ну, либо какая неоптимальность в программе... Долго ли, умеючи. :)
проблема может быть в звоне из-за несогласованности волновых сопротивлений. емкость на 15 см. небольшая, вряд ли дело в ней.
но для начала следует распаять шлейф по-людски.
Гложут меня сомнения , что шлейф такой длины на таких частотах уже будет работать , как линия передачи.
На стороне дисплея надо поставить подтягивающие резисторы 1k на линии MOSI, SCK. Волновое сопротивление согласовывать не надо, резисторы нужны чтобы укоротить звон на фронтах. Если не поможет, то на стороне мк последовательно с этими линиями врезать резисторы ом 50...100.
1. Нафига вам 30-и пиновый шлей для протяжки 4-х проводов? Ну да ладно, мало ли ..
2. Если подозреваете емкость кабеля, то почему ещё не посмотрели на осциле?
3. Если проблема в емкости, то да - искать решение с меньшей емкостью ИЛИ снижать скорость SPI. Можно попытаться буферизовать SPI.
Там кроме емкости, ещё может быть переходная наводка с провода на провод. Решение в вашем варианте банально: разместите все сигнальные линии промеж линий земли и подключите их только с одной стороны кабеля на землю. Со стороны Ардуино или экрана, но с одной.
Там кроме емкости, ещё может быть переходная наводка с провода на провод.