Длинный гибкий шлейф к дисплею.

5N62V
Offline
Зарегистрирован: 25.02.2016

Всем бобра!

Сделал платку на 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 стоит максимальная. Наверное в какой-то момент времени какой-то бит считывается не правильно, а в итоге ломается команда на дисплей, и он вырубается.

Как можно побороть? Искать шлейф с меньшой емкостью? Понижать частоту шины не вариант, и так на грани допустимого скорость обновления инфы на дисплее.  Кто что подскажет?

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?

Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Снизить частоту SPI, либо найти компромисс между МНЕ НАДО и КАК СДЕЛАТЬ НАДЁЖНО. Вариантов много, но сначала нужно понять, зачем нужно использовать максимальную частут SPI. Например, если нужен удлинитель для SPI, наверняка есть варианты. Либо промежуточные ступени. Для SPI есть еще вариант с DMA, но это уже не Ардуина. Впрочем это уже мои фантазии. Удачи!

 

Чечако
Offline
Зарегистрирован: 15.06.2018

Я для своих нужд плотно изучал опыт использования подобных дисплеев с ардуино, и пришел к грустному выводу - слабовата она. :( Если нужно много красивой и динамичной графики - использовать связку из более мощного контроллера под отображение и скажем ардуино для работы с аналоговыми сенсорами, если это нужно. 

Ну или вешать на заднюю стенку такого дисплея какую-нить мелкую Нано или ПроМини, которой поручать только отображение, а на нее уже гнать любым удобным интерфейсом данные с другой ардуины для обработки. Если оставаться в рамках ардуино.

5N62V
Offline
Зарегистрирован: 25.02.2016

andriano пишет:

Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?

Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.


хм. Я не подозревал, что по SPI на дисплее 256 на 64 на 16 градаций серого можно добиться пару сотен фпс. У меня фрейм аж 300мсек прописывается. Применяю библиотеку u8glib. Но библиотека тут ни при чем. Я пробовал в рукопашную заливать битмапы - плюс минус та же фигня. И 10 фпс не получится, не то что сотни. :)

5N62V
Offline
Зарегистрирован: 25.02.2016

Чечако пишет:

Я для своих нужд плотно изучал опыт использования подобных дисплеев с ардуино, и пришел к грустному выводу - слабовата она. :( Если нужно много красивой и динамичной графики - использовать связку из более мощного контроллера под отображение и скажем ардуино для работы с аналоговыми сенсорами, если это нужно. 

Ну или вешать на заднюю стенку такого дисплея какую-нить мелкую Нано или ПроМини, которой поручать только отображение, а на нее уже гнать любым удобным интерфейсом данные с другой ардуины для обработки. Если оставаться в рамках ардуино.


я тоже подумываю перейти на дуэ до с 8 битным рараллельным подключением.

SLKH
Offline
Зарегистрирован: 17.08.2015

1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.

Вообще-то 15 см - не слишком далеко.

2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен). 

 

5N62V
Offline
Зарегистрирован: 25.02.2016

SLKH пишет:

1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.

Вообще-то 15 см - не слишком далеко.

2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен). 

 

Дисплей подключен как попало: http://microsin.net/programming/avr/oled-wex025664-and-u8glib.html

можно сигнальные провода разделить на участке плата-адаптер. Но если проблема в емкости сигнального провола относительно земли, то не совсем понимаю как это поможет. Если проблема в наводке, то да,  понятно.

По поводу пункта 2, опять-таки, если проблема в емкости, как это пока для меня выглядит, то резистор может только усугубить ситуацию, увеличив сопротивления разряда = увеличив тау рц цепочки. Или я что-то не так понимаю?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

5N62V пишет:
andriano пишет:

Т.е. для Вас несколько сотен fps - это минимально допустмая частота обновления?

Мне кажется, Вы сами завели себя в тупик неверной постановкой задачи.

хм. Я не подозревал, что по SPI на дисплее 256 на 64 на 16 градаций серого можно добиться пару сотен фпс. У меня фрейм аж 300мсек прописывается. Применяю библиотеку u8glib. Но библиотека тут ни при чем. Я пробовал в рукопашную заливать битмапы - плюс минус та же фигня. И 10 фпс не получится, не то что сотни. :)

По той ссылке, что Вы привели, 16 градаций яркости лично мне обнаружить не удалось.

Поэтому считал дисплей монохромным (тем более, что приведенной картинке это полностью соответствует):

Объем экрана: 256*64=16 кбит.

При частоте SPI 4 МГц это соответствует 4000000/2048=244 fps.

Если все-таки допустить, что там действительно 16 градаций яркости, получаем 244/4=61 fps. 

Это, конечно, не сотни, но и далеко не 10.

Так что цифры не сходятся.

Могу высказать предположение, что тормозит не экран, а то устройство, с которого Вы читаете битмап. Ну, либо какая неоптимальность в программе... Долго ли, умеючи. :)

SLKH
Offline
Зарегистрирован: 17.08.2015

5N62V пишет:

SLKH пишет:

1. Хорошо бы схему - как шлейф подключен? парами "сигнал-земля" или как попало? на 30-пиновом можно сигнальные провода двумя земляными разделять. Незадействованные провода заземлить с двух сторон.

Вообще-то 15 см - не слишком далеко.

2. Попробуй сигнальные выходы подключать к шлейфу через резисторы 50 - 100 ом (это уже бубен). 

 

Дисплей подключен как попало: http://microsin.net/programming/avr/oled-wex025664-and-u8glib.html

можно сигнальные провода разделить на участке плата-адаптер. Но если проблема в емкости сигнального провола относительно земли, то не совсем понимаю как это поможет. Если проблема в наводке, то да,  понятно.

проблема может быть в перекрестных помехах.

"В плоском кабеля всегда крайне желательно наличие цепи “общего провода” между сигнальными  проводами, используемыми при подключениях “с общей землёй”. – Чередование “общего провода” с сигнальными проводами очень желательно."

 

Цитата:
По поводу пункта 2, опять-таки, если проблема в емкости, как это пока для меня выглядит, то резистор может только усугубить ситуацию, увеличив сопротивления разряда = увеличив тау рц цепочки. Или я что-то не так понимаю?

проблема может быть в звоне из-за несогласованности волновых сопротивлений. емкость на 15 см. небольшая, вряд ли дело в ней.

но для начала следует распаять шлейф по-людски.

5N62V
Offline
Зарегистрирован: 25.02.2016

andriano пишет:

 

Так что цифры не сходятся.

мде уж. Намек понял.

andriano пишет:

Могу высказать предположение, что тормозит не экран, а то устройство, с которого Вы читаете битмап. Ну, либо какая неоптимальность в программе... Долго ли, умеючи. :)

Вот что умею, то умею! :) Ну   у меня еще организовано чтение битмапа из прогмем, ибо где я столько оперативки на таком-то проце возьму. 

5N62V
Offline
Зарегистрирован: 25.02.2016

SLKH пишет:

проблема может быть в звоне из-за несогласованности волновых сопротивлений. емкость на 15 см. небольшая, вряд ли дело в ней.

но для начала следует распаять шлейф по-людски.

  Я идею понял, спасибо! Жаль, что развести шлейф по-людски потребует переделки дизайна платы и адаптера, поэтому поиграюсь для начала с сопротивлениями. Гложут меня сомнения , что  шлейф такой длины на таких частотах уже будет работать , как линия передачи.

triac
triac аватар
Offline
Зарегистрирован: 03.05.2018

5N62V пишет:

 Гложут меня сомнения , что  шлейф такой длины на таких частотах уже будет работать , как линия передачи.

На стороне дисплея надо поставить подтягивающие резисторы 1k на линии MOSI, SCK. Волновое сопротивление согласовывать не надо, резисторы нужны чтобы укоротить звон на фронтах. Если не поможет, то на стороне мк последовательно с этими линиями врезать резисторы ом 50...100.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

5N62V пишет:
Сделал платку на Atmegа328P , к ней подключен OLED ...по 4х проводному SPI.  Все работало пока не понадобилось перенести дисплей подальше от платы. Я применил типа такого шлейфика ... длиной 15см, и адаптер наподобии ...  Взял кабель вдвое короче - работает как надо. Но блин мне надо минимум 15см, вот в чем засада. ... Я подозреваю проблема в емкости самого кабеля. Частота шины SPI стоит максимальная. ... Как можно побороть? Искать шлейф с меньшой емкостью?

1. Нафига вам 30-и пиновый шлей для протяжки 4-х проводов? Ну да ладно, мало ли ..

2. Если подозреваете емкость кабеля, то почему ещё не посмотрели на осциле?

3. Если проблема в емкости, то да - искать решение с меньшей емкостью ИЛИ снижать скорость SPI. Можно попытаться буферизовать SPI.

Там кроме емкости, ещё может быть переходная наводка с провода на провод. Решение в вашем варианте банально: разместите все сигнальные линии промеж линий земли и подключите их только с одной стороны кабеля на землю. Со стороны Ардуино или экрана, но с одной.

SLKH
Offline
Зарегистрирован: 17.08.2015

Arhat109-2 пишет:

 

Там кроме емкости, ещё может быть переходная наводка с провода на провод.

там с вероятностью 90% дело именно в ней.