Немного о Klipper и LCD
Решил поделиться своей эпопеей по модернизации старичка-принтера, а также решением одной проблемы, что "сожрала" у меня массу времени и нервов (на самом деле времени больше).
Итак, есть у меня принтер FlashForge Creator Pro, купленный в далекие времена за овердофига денег. Принтер по сути является клоном Makerbot Replicator 2x. но весьма неплохим по качеству исполнения. Брал его, как первый принтер и в принципе был доволен (хотя два экструдера это реально бесполезная фича для меня).
В общем наступил момент, когда я, уже имея три других принтера, решил обновить железо этого красавца. Сначала, в качестве мозгов была выбрана плата SKR Pro v.1.1 так как позволяла подключить два экструдера и имела шустрый контроллер STM32F407 с кучей портов для расширения.
Так как это были времена доступных "малинок", то заодно было прикуплено пару клонов Pi 3.
В общем и целом перевод на Klipper был завершен успешно за исключением модуля родного дисплея. В целом экран был не особо нужен, до тех пор, пока я не перетащил все принтеры в отдельную комнату и стало неудобно бегать к компуктеру. Да-да, можно и с телефона, но многие операции все же удобно делать через родной экран (лично мне по крайней мере).
Итак, встала задача подключить родной дисплей. В целом, в нем ничего особенного нет: стандартный контроллер HD44780 подключенный через регистр сдвига. Так как Klipper поддерживает такие контроллеры, то мои ожидания были весьма позитивны: найти распиновку, прописать нужные пины, спаять переходник для стандартных портов расширения на плате и подключить. Но не тут-то было! Экран при подключении или оставался пустым, или показывал разную дичь в виде кракозябр по всему экрану.
Ладно, подумал я, может что-то с ним не в порядке ну или с моими руками. Достал у себя в закромах старую плату от Эндер-3, прошил, подключил к компу, подключил экран и .... заработало! Повторил с SKR - все по прежнему. Я уже в голове начал хоронить свою плату (ну мало ли), но возник резонный вопрос: а в чем же причина. Логично было предположить, что либо контроллер шлет дичь, либо что-то с портами. На мое счастье у меня был логический копеечный клон с Алика, который я немедленно подключил к обоим платам и снял данные.
А предварительно еще раз освежил знания по контроллеру LCD. В общем, пардон за большое вступление, проблема, как и ожидалось, оказалась в скорости обмена, а точнее в аппаратной скорости переключения уровней на портах. Если для старых AVR чипов длительность импульса синхронизации составляла пару мс, то для STM счет шел уже не нано-секунды. Естественно, что контроллер экрана просто не успевал выполнить команду и получалось, что получалось. Ладно, подумал я, у Klipper же есть задание скорости по шине SPI. Не работает. Что делать? Изучать исходники. Итак, оказывается, что для software spi, которая используется для обмена данными с экраном, скорость тупо игнорируется внутри прошивки. Т.е. хост шлет ее в команде, а прошивке глубоко на это фиолетово. Поэтому скорость шины зависит от скорости самого контроллера и на современных она зашкаливает.
В общем написал я небольшой патч и залил в свой гитхаб. Сами изменения можно посмотреть в реквесте, что я закинул в гитхаб Klipper. Смысл патча - начать учитывать скорость SPI и для software.
После изменений нужно перепрошить плату и, вуаля, все работает. Ничего дополнительно конфигурировать не надо, т.к. скорость по-умолчанию установлена в 100кГц.
Результат.
До изменений.
После изменений.Основной минус этого подхода, что при пере-установке Klipper придется опять ручками накатывать этот патч, если его не примут в основную ветку.
Надеюсь, что данная информация кому-то окажется полезной и сохранит время. Подобные проблемы могут быть не только с экраном, но и любой периферией, которая использует software spi.
Еще больше интересных статей
Klipper - восстановление прерванной печати
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Внезапно выяснилось что у стокового клиппера есть странная особенно...
Настройка Marlin для датчика Biqu microprobe для платы BigTreeTech_SKR_mini_E3_V2.0
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Настраиваем прошивку Marlin и заливаем её в 3D принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
ну для пла это наверно актуаль...
Напечатал из PETG без масштаби...
Я говорю про скорость, а не жа...
Добрый день!Господа, среди тех...
Как посмотреть избранное?
Добрый день. Есть ли в каком-н...
Всем привет, недавно случилось...