К нам приехал принтер Creality Ender 3 v2 с процессором GD (GigaDevice) вместо ожидаемого STM (STMicroelectronics). Принтер в базовой комплектации еще как-то работает (хотя прошивка очень урезана), но часть периферии принтера не работает вовсе (датчик филамента), а остальное работает не корректно (сенсор автокалибровки CR Touch) или перегревается (двигатели). Открытую прошивку Marlin для процессора STM можно скомпилировать и установить на матплату GD (хотя официально процессор не поддерживается), вот только эта прошивка не распознает сенсор автокалибровки. Получается, что нужна или замена материнской платы, или сенсора, или того и другого вместе. Логично начать с материнской платы и прошивки — как минимум, в открытой прошивке есть функции тестирования сенсора автокалибровки, так что уже можно будет выяснить, в порядке ли он.


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



Описание проблемы штатной комплектации


Мы выбрали принтер Creality Ender 3 v2 за его популярность и комьюнити на форумах и ютубе и отличную поддержку в опенсорс проектах. Материнская плата устройства оснащена известным процессором STM от STMicroelectronics, полностью поддерживаемым в нескольких открытых проектах, предоставляющих прошивки для 3D принтеров. Но в реальности к нам приехал принтер с совершенно китайским процессором GD (GigaDevice). К этому не очень скромному гигадевайсу нет SDK, а код прошивки на основе открытого проекта Marlin производитель принтера не публикует (хотя и должен). Стабильность работы со штатной прошивкой тоже вызывает сомнения — настройки порой самопроизвольно сбрасываются (например, E-step). И все же принтер поставляется с прошивкой и работает, так что не очень понятно, можно ли что-то сделать в такой ситуации. Как оказалось, можно, потому что существуют две модификации материнской платы с одинаковым обозначением и совершенно разными процессорами и производитель и продавцы намеренно выдают одну за другую.


На сайте производителя принтера на странице скачивания прошивок для принтера Ender 3 v2 мы наблюдаем следующую картину:



Первые две строчки это прошивки для принтера… "GD-Ender 3 v2"! Оказывается, производитель называет у себя этот принтер вовсе не "Ender 3 v2". Следующие три прошивки именованы вразнобой, хотя все они для принтера "Ender 3 v2" и сделаны основе открытого проекта Marlin — очевидно, потому, что раньше вариации "GD-Ender 3 v2" не существовало и не было необходимости указывать "Ender 3 v2" в названии на странице принтера "Ender 3 v2". Итак, по информации от производителя, существуют два разных принтера и "GD-Ender 3 v2" не поддерживает датчик филамента вообще, в то время как для "Ender 3 v2" доступна прошивка "… filament detection". Поддержка CR Touch заявлена, хотя и не ясно, работает ли — то ли продавец нам прислал подделку или бракованный сенсор, то ли проблема в прошивке "GD-Ender-3 V2-Marlin2.0.8.2-HW-V4.2.2-SW-V1.0.7_E_N_BLTouch" (первая в списке).


В первую очередь, мы спросили у продавца прошивку для обоих датчиков — CR Touch и датчика филамента (который уже был нами куплен и давно приехал, пока мы полтора месяца ждали принтер — тут уже с продавцом было что-то неладно, когда он на вопросы присылал раз за разом нерабочие трек-номера). Это обращение было проигнорировано. На просьбу заменить матплату для решения проблемы с недоступностью прошивки и возможного решения проблемы с CR Touch реакции также не последовало.


Итак, по CR Touch становится ясно, что использовать его невозможно, будь то проблема устройства или принтера (и то и другое куплено у одного продавца, так что без разницы). Обращение к продавцу с этим вопросом привело лишь к тому, что он в ответ 4 раза присылал одно и то же — мы неправильно используем сенсор, надо делать не как написано в инструкции, а просто включить автокалибровку уровня сопла один раз, потом настроить уровень рабочего стола руками и больше никогда не запускать автокалибровку. Получается, продавец предлагает вообще не пользоваться сенсором, надеясь на то, что покупатель слабо разбирается в технике и поверит такому объяснению. В итоге, мы потребовали возврат стоимости сенсора — и получили его после рассмотрения жалобы поддержкой алиэкспресс. В качестве подтверждающего видео показали поочередно все рекомендованные шаги установки и настройки из прилагаемого мануала и наши действия согласно им, плюс процесс тестовой печати на всей площади стола (level test), где в левой части рабочего стола филамент прилип намертво (позиционирование сопла правильное или ниже нужного уровня), посередине еле держался и полностью отвалился на оставшейся площади.


Теперь что касается матплаты. В описании принтера указано наличие "Silent mainboard" и у Creality есть такой продукт "Creality Ender-3 V2 32-bit Silent Motherboard Kit", смотрим его описание на сайте https://creality3d.shop/collections/mainboard/products/creality-ender-3-v2-32-bit-silent-motherboard-kit, где прямо назван процессор STM как одно из преимуществ продукта:



Итак, принтер "Ender 3 v2" действительно должен поставляться с процессором STM и это явно указано на странице описания материнской платы к принтеру. Нам прислали другую модификацию принтера, которая на странице поддержки производителя именована как "GD-Ender 3 v2".


Решение проблемы


Остается лишь купить "правильную" материнскую плату из двух доступных от Creality — 4.2.2 или 4.2.7, разницы по функциям и цене между ними нет (судя по описаниям), так что можно просто взять более новую плату 4.2.7. Есть совместимые матплаты и от других производителей, но пока что мы хотим привести наш принтер в ожидаемое состояние. Поскольку на всех фото и в описании матплат указан процессор STM, тут мы не ожидаем непредвиденных замен процессора, отличаются только драйверы шаговых моторов. В то же время, новая плата может оказаться не совместимой с установленным дисплеем. Удивительно, но маркировки на дисплее и внутри никакой нет, по которой его модель можно было бы опознать. Энтузиасты уже составили список примет для опознания дисплея по отверстиям на его управляющей плате, но за точность не ручаются, так что просто заказываем матплату, держа в уме возможную необходимость замены и дисплея.


Уточнив все это, мы обратились за частичным возмещением для покупки комплекта из материнской платы с дисплеем на замену "CREALITY 4.2.7 Silent Mainboard Kit For Ender-3 V2" и получили его после рассмотрения запроса поддержкой алиэкспресс. Стоит отметить, что все вопросы от нас про материнскую плату продавец игнорировал даже после нашего обращения напрямую в поддержку алиэкспресс. Притом, до покупки принтера я видел у этого же продавца лот, где принтер можно купить в комплекте с матплатой версии 4.2.7 с доплатой около 10$, но не было сказано ни слова о не поддерживаемой штатной матплате, так что идея сразу же покупать аналогичную матплату на замену показалась странной. Стоило в описании принтера предупреждать о проблеме — и мы бы сразу взяли комплектом принтер вместе с матплатой на процессоре STM на замену, а вот когда это выявляется только постфактум, то приходится терять время на все эти перипетии и покупать матплату отдельно примерно за 30$.


Установка матплаты 4.2.7


Старая (4.2.2 GD) и новая (4.2.7 STM) платы идентичны по разъемам, так что нужно на старой плате обрезать клей на всех коннекторах, вытащить их и подключить к новой плате. Заодно мы обрезали облуженные кончики силовых проводов для зажимных контактов. Производители для своего удобства зажимают именно облуженные провода и это порой приводит к плохому контакту, перегреву и даже выскальзыванию проводов из разъемов (с коротким замыканием).


Штатная плата щедро залита клеем, который надо аккуратно удалить перед отключением всех коннекторов:



На новой матплате радиаторы значительно крупнее по размерам, размеры остальных элементов и самой платы не изменились:



Изображение и описание от производителя Creality3D Upgrade Silent 4.2.7 Mainboard For Ender 3


Очень интересная деталь — после установки новой матплаты мы не меняли VREF двигателей и они работают корректно, что называется, "из коробки" — не перегреваются и не пропускают шаги. На старой матплате VREF необходимо было существенно снижать, как описано в предыдущей статье, иначе двигатели перегревались и даже филамент в экструдере плавился от нагрева двигателя.


Установка прошивки


Из существующих открытых прошивок для принтера Creality Ender 3 V2, мы выбрали mriscoc форк проекта Marlin, оптимизированный под принтеры Creality Ender 3 серии. Эта же прошивка на штатной матплате с процессором GD устанавливается, но не распознает CR Touch сенсор. А прошивка от производителя распознает, но автовыравнивание все равно не работает, так что разницы, по сути, и нет. После установки новой матплаты с STM процессором сенсор CR Touch работает и показывает отличную точность (подробнее ниже).


Мы попробовали две прошивки, базовую и с добавленной опцией Linear Advance:



Установка заключается в копировании нужного .bin. файла на флэшку и при включении принтер автоматически загрузит новую прошивку (если она не совпадает с уже установленной). После установки нам доступно множество новых функций, посмотрим на самые важные для нас. Настройки мы добавляем в стартовый G-code слайсера, чтобы при обновлении прошивки не нужно было заново указывать все это на принтере.


Ретракты в прошивке (Firmware Retract)


Для лучшей переносимости G-кода можно настроить параметры ректакта на принтере, а в слайсере убрать их настройки и оставить только соответствующие коды для прошивки. Не самое лучшее решение для нас, потому что принтер у нас только один, а настройки ректакта в прошивке имеют меньше опций, чем в слайсере. Чтобы проверить, не использует ли слайсер эту опцию, достаточно в файле G-кода поискать команды G10 и G11 — если их нет, ретракты в прошивке не используются.


Мастер выравнивания рабочего стола (Bed Tramming)


Соответствующий пункт меню позволяет настраивать уровень рабочего стола интерактивно, см. Bed tramming menu:




Без листа бумаги и мерных пластинок можно просто зайти в меню и следовать подсказкам, какой угол рабочего стола поднять или опустить, после чего повторить при необходимости.


Модель температуры сопла (MPC)


Для более точного управления температурой теперь можно провести замеры во всем диапазоне рабочих температур и при работе пользоваться измеренной зависимостью температуры от времени нагрева и мощности нагревательного элемента, см. Model Predictive Temperature Control support (MPC):




Запускаем автокалибровку (построение модели), немного ждем и все готово — параметры вычислены.


Модель температуры рабочего стола (Hotend-Bed PID)


Аналогично модели нагрева сопла оцениваются и параметры нагрева рабочего стола.


Мастер настройки сенсора автокалибровки (Z Probe Wizard)


Для использования сенсора нужно энкодером на контрольной панели принтера выбрать значение высоты Probe Z Offset срабатывания сенсора, см. 3D BLTouch:



Настройка положения сенсора уровня


В связи с очень неровной поверхностью рабочего стола важно точно определить расположение сенсора уровня относительно сопла — но в штатной прошивке эти параметры недоступны. В новой прошивке параметры задаются через соответствующее меню:




Автоматическое выравнивание (UBL)


Unified Bed Leveling (UBL) это метод измерения высот поверхности рабочего стола для узлов регулярной сетки размером от 3х3 до 9х9, ручного или интерполированного заполнения пропусков (если в каких-то точках сенсор не может выполнить измерения) и, опционально, сохранения готовой сетки в EEPROM. Поскольку измерения для больших сеток требуют немало времени, запускать построение сетки для каждой печати не обязательно (хотя и возможно), достаточно делать это при замене поверхности рабочего стола или механических изменений или настроек конструкции принтера.


Прежде чем заниматься настройкой автоматического выравнивания следует проверить работу сенсора автовыравнивания. Для этого в меню установленной прошивки доступен "M48 Probe Test" для оценки точности серии измерений в одной точке. Также это можно сделать с помощью консольных команд (в штатной прошивке не поддерживаются и оценить работу сенсора невозможно):


G28
M48 v4

Для нашего сенсора значение Standard Deviation получилось равным 0.001 при допустимых значениях до 0.01. Значит, сенсор работает точно и можно переходить к настройке автовыравнивания.


Сама настройка сложностей не представляет — из меню запускается измерение значений высоты для регулярной сетки координат на рабочем столе, далее построенную сетку нужно сохранить (по умолчанию в слот 0 EEPROM). В прошивке есть опция загрузки меша, так что не обязательно указывать слот загрузки, а можно использовать активный (уже загруженный) меш. Только UBL меши сохраняются в EEPROM, так что все команды сохранения и загрузки из слотов EEPROM не могут быть использованы с другими методами автовыравнивания — это помогает отличить информацию по другим методам выравнивания, когда использованный метод не указан. Наш штатный стеклянный рабочий стол на сетке 9х9 имеет следующие вариации высоты:




Такая форма поверхности вполне ожидаема, поскольку стекло у нас закреплено канцелярскими зажимами во всех четырех углах, так что в углах получаются минимальные значения, по периметру значения несколько больше и в центре стекло выгибается от основания, то есть вверх. И все же поверхность стекла даже в центре имеет очень большие вариации уровня.

Кстати, если полученные значения не похожи на рассмотренный кольцевой паттерн, это означает необходимость настройки горизонтальной оси, поскольку именно ее перекос приводит к появлению горизонтального тренда в измерениях уровня.


Как результат значительных вариаций уровня, при использовании сетки 9х9 на штатном стекле адгезия оказывается хуже, чем для более грубой сетки 5х5. При желании, это можно компенсировать ручным редактированием значений, измерив уровни вокруг проблемных узлов и посчитав среднее значение или просто оценивая результаты печати. Указанные сложности связаны с гладкой поверхностью штатного стеклянного стола, при использовании более шероховатых поверхностей автовыравнивание "просто работает".


Подключаясь к принтеру через терминал, с помощью команды M420 T1 V1 легко получить измеренные значения сетки в формате CSV. Ниже приведены наши значения для сетки 9х9 (максимальный размер) и 5х5 (размер по умолчанию):


>>> M420 T1 V1
SENDING:M420 T1 V1
Bed Topography Report for CSV:
-0.14   -0.14   -0.15   -0.13   -0.15   -0.14   -0.14   -0.15   -0.21
-0.14   -0.15   -0.15   -0.00   0.00    0.00    0.02    -0.18   -0.22
-0.15   -0.17   -0.02   -0.01   -0.00   0.00    0.01    0.03    -0.22
-0.18   -0.04   -0.04   -0.03   -0.03   -0.02   -0.00   0.00    -0.03
-0.19   -0.05   -0.06   -0.07   -0.07   -0.06   -0.04   -0.03   -0.08
-0.17   -0.05   -0.05   -0.05   -0.04   -0.03   -0.02   -0.01   -0.06
-0.18   -0.19   -0.04   -0.03   -0.03   -0.02   -0.00   0.01    -0.22
-0.18   -0.18   -0.19   -0.03   -0.02   -0.02   0.00    -0.17   -0.21
-0.18   -0.17   -0.16   -0.16   -0.15   -0.15   -0.14   -0.14   -0.20
Mesh is valid

>>> M420 T1 V1
SENDING:M420 T1 V1
Bed Topography Report for CSV:
0.01    0.01    0.03    0.03    -0.04
-0.01   -0.01   -0.01   0.00    -0.05
-0.06   -0.06   -0.07   -0.06   -0.11
-0.04   -0.05   -0.03   -0.01   -0.06
-0.04   -0.02   -0.01   0.01    -0.04
Mesh is valid

Максимальная вариация на расстоянии одной ячейки составляет 0.19 мм (от -0.22 до -0.03) для шага 2.5 см и 0.06 мм (от -0.05 до -0.11) для шага 5 см соответственно у правой границы области измерений выше центра. Конечно, даже для слоя 0.2 мм подобная вариация поверхности приводит к невозможности выровнять первый слой. При печати с автовыравниванием на сетке 5х5 такой проблемы нет — просто потому, что узлы сетки оказались расположены более удачно и не попали в точки с большими отклонениями.


В слайсере к стартовому G-коду следует добавить команды (G28 уже есть, после нее дописать две следующие строки), см. 3D BLTouch:


G28 ; Home all axes
G29 L0 ; Load a valid mesh from slot 0
G29 A  ; Activate the UBL system

Есть и еще один код M420, который частично пересекается по функционалу с G29, в документации есть сравнительная табличка: Unified Bed Leveling. Команда ниже активирует авто-выравнивание, загрузит ранее сохраненный меш из EEPROM слота 0 и установит высоту компенсации 10 мм (компенсация линейно убывает до нуля и на указанной высоте слои будут печататься строго горизонтально):


M420 L0 S1 Z10

Допустимо также выполнять измерения при каждом запуске на печать, см. Unified Bed Leveling:


G28             ; Home XYZ
G29 P1          ; Do automated probing of the bed
G29 A           ; Activate the UBL System

Выравнивание давления филамента (Linear Advance)


Поскольку движение мотора экструдера не мгновенно приводит к изменению давления пластика в сопле, при печати возникают некоторые артефакты, связанные с недостатком или избытком пластика в нужный момент. Для частичного решения этой проблемы можно использовать в слайсере опции Coasting для уменьшения количества подаваемого пластика, и опцию Wipe для увеличения путем добавления небольшого холостого пробега для ожидания поступления нужного количества пластика в сопло. Опции эти полезны, но они оперируют разными параметрами и довольно сложны в использовании. Linear Advance обещает решить эти проблемы разом, отказавшись от (странной) идеи, что перемещения экструдера не отличаются от перемещения по пространственным осям и используя некоторую модель для предсказания потока пластика в сопле.


Для использования опции необходимо установить версию прошивки с поддержкой Linear Advance и потребуется определить значение единственного параметра K-factor. Существует стандартный тест Marlin K-factor Calibration Pattern, но у нас он напечатал только одну линию с набором клякс по краю рабочего стола, так что мы снова обратились к стандартному набору тестов Calibration-Shapes в Cura. Нужный нам тест требует нескольких трюков, которые описаны на его официальной страничке Linear Pressure Advance Tower, а еще вместо указанного "Marlin Linear Advance" следует в настройках постобработки искать "Marlin Linear":



Мы провели тест для трех разных скоростей печати при толщине слоя 0.2 мм, получив следующие результаты (Value Increment 0.01 соответствует делению на 100):


  • разницы нет для скорости 20 мм/с Outer Wall Speed/Inner Wall Speed,


  • 19.2 мм/0.2 мм/100 = 0.96 — для скорости 40 мм/с Outer Wall Speed/Inner Wall Speed,


  • 13.2мм/0.2 мм/100 = 0.66 — для скорости 80 мм/с Outer Wall Speed/Inner Wall Speed.


Поскольку по умолчанию скорость печати стен (Wall Speed) равна половине общей скорости печати, то K-factor 0.96 подходит для скоростей печати до 80 мм/с (притом, что для использованного пластика производитель рекомендует скорость печати до 60 мм/с).


Добавим к стартовому G-коду слайсера команду установки выбранного значения K-factor:


M900 K0.960 ; K-factor

После настройки Linear Advance тест для определения дистанции ретракшена показывает уже значение 1.5 мм вместо прежних 3 мм.


Подавление резонанса (Input Shaping)


Этой опции в опробованных нами прошивках нет, но она доступна в сборке Input Shaping (IS) Возможность пока в статусе экспериментальной для проекта Marlin (и всех его форков), а детальное описание доступно в документации проекта Klipper: Resonance Compensation Кроме того, в Klipper возможна автоматическая оценка параметров, используя акселерометры, к примеру, актуальное руководство доступно по ссылке Klipper Input Shaping for Ender 3 — All You Need to Know Для высокой скорости печати компенсация резонанса необходима, вопрос лишь, как ее выполнять. Дело в том, что в первую очередь следует бороться с резонансом настройкой принтера, а уж потом переходить к программной компенсации — иначе частоты резонанса окажутся плавающими и настройка будет требоваться постоянно (об этом есть упоминания в документации по ссылкам выше). Так что мы начнем с установки уголков на фрейм, второй вертикальной оси, CNC уголков и гибких муфт с гасящей вибрации вставкой на моторы вертикальных осей, а потом можно будет оценить, нужна ли нам программная компенсация вибраций. Сама по себе задача интересная и важная, так что рассмотреть эту тему стоит — но начинать с настройки "железа".


Отображение превью (G-code Preview)


Установленная прошивка умеет показывать превью для G-code файлов, как описано на странице How to generate a gcode preview Мы установили и настроили расширение к Cura согласно описанию, но на нашем принтере отображается пустое место вместо превью:




Как сказано по ссылке выше, в новых Ender 3 v2 установлен экран DACAI, который не поддерживает отображение картинки. Итак, теперь-то мы знаем, какой у нас установлен экран — и нам еще повезло, потому что другие пользователи сообщают, что у них Ender 3 v2 зависает при попытке отобразить превью. А вот первые выпущенные принтеры этой модели не имеют проблем с отображением превью. Притом, приобрести совместимый экран на замену практически невозможно, так как тип экрана продавцами не указывается.

Результаты


Удобство использования принтера дело вкуса, а вот возможности получить точную информацию о качестве измерений сенсора уровня (дисперсию), значения высот по всей поверхности рабочего стола (через терминал можно замерять с произвольным шагом) и, наконец-то, использовать автовыравнивание — это действительно значительные изменения в работе с устройством. Отметим, что для штатного стеклянного покрытия рабочего стола автовыравнивание оказывается делом затейливым — значения высот поверхности настолько варьируются, что измерения в одной точке не представительны для вычисления смещения ячейки сетки измерений.


Посмотрим, как изменилось основание модели 3DBenchy при ручном выравнивании для стоковой прошивки (слева) и автовыравнивании для открытой прошивки (справа):



Здесь автовыравнивание обеспечило значительное улучшение четкости текста на нижней поверхности модели.


И, конечно же, мы ожидали улучшения качества печати за счет калибровки температур сопла и рабочего стола. Если выравнивание возможно было сделать вручную, то эти функции были нам недоступны. Между тем, температурная нестабильность, да еще при слабом штатном вентиляторе, приводит к разной вязкости и толщине слоев, что может быть заметно визуально на результатах печати. Посмотрим на фотографию, где слева показан результат печати со штатной прошивкой (толщина слоя 0.12 мм) и справа с открытой (толщина слоя 0.2 мм):



Разница не очень большая, но на правой модели более гладкая поверхность трубы сверху и еще чуть поменьше артефактов. Притом, правая модель напечатана за 1 час 40 минут вместо 2 часов 20 минут за счет увеличения толщины слоя с 0.12 до 0.2 мм, и результат получился даже лучше прежнего.


Еще некоторые улучшения может обеспечить функция Linear Advance, рассмотренная выше. Согласно нашим тестам, разница ожидается при скорости печати от 80 мм/с. Поскольку штатный вентилятор не справится с нависающими элементами при такой скорости печати, мы включим опцию слайсера "Enable Bridge Settings" для замедленной печати перекрытий, чтобы они успевали остывать. На фото ниже показаны результаты печати при скорости 40 мм/с (слева) и 80 мм/с (справа):



При скорости 40 мм/с разницы между включенным и выключенным Linear Advance нет, как и ожидалось по результатам тестов выше. При удвоении скорости печати разницы тоже почти нет — в то время как на стоковой прошивке без этой функции результаты печати кардинально ухудшались при превышении рекомендованной производителем скорости 60 мм/с. Таким образом, Linear Advance позволяет печатать заметно быстрее при сохранении примерно того же качества результата.


Заключение


В итоге, мы довольны результатами замены материнской платы и установки открытой прошивки. Интерактивный мастер настройки винтов, регулирующих уровень рабочего стола, тестирование сенсора автовыравнивания и само автовыравнивание заметно упрощают эксплуатацию принтера. Поверхность штатного стекла оказалась очень неровной, равно как и алюминиевое основание, и все же система автоматического выравнивания UBL справляется со своей задачей.


Компания Creality, ранее рекламировавшая свой принтер Ender 3 v2 как открытый продукт, на самом деле идет в обратном направлении — процессор, исподтишка замененный на не поддерживаемый даже производителем принтера, приводит к невозможности использования официально совместимой периферии (датчик филамента, сенсор CR Touch) и открытых прошивок. Судя по нашим результатам, проблема с CR Touch в официальной прошивке заключается в том, что она не справляется с автовыравниванием на столь кривой поверхности рабочего стола, используя один из простых алгоритмов с жестко заданными параметрами — притом, что официально заявлена совместимость сенсора CR Touch с принтером Ender 3 v2.


В качестве конструктора принтер оказался тем еще приключением, и мы продолжим этот путь — впереди много интересного.


Также смотрите



Комментарии (10)


  1. WicRus
    00.00.0000 00:00
    +1

    Могу ошибаться, но всегда казалось, что гигидевайсы это практически полные клоны стм-ов. Для их прошивки через openocd рекомендуют использовать сценарии от стм-ок, что как бы намекает.

    К этому не очень скромному гигадевайсу нет SDK

    Беглый поиск по сайту производителя выдаёт библиотеки, примеры и шаблон для keil/iar. Ссылка.
    Предположу, что замена платы была излишней, возможно всё бы решилось компиляцией прошивки под данный мк.


    1. N-Cube Автор
      00.00.0000 00:00
      +2

      Прошивки, скомпилированные под STM, и так работают на GD процессорах, как я и пишу в статье выше - вот только на нашей матплате периферия не подключается (CR Touch). Причем, пользователи купленных давно Ender 3 v2 прекрасно подключают CR Touch, а вот к купленным в последние месяцы принтерам это сделать не удается, есть несколько декабрьских багрепортов на эту тему. Маркировка процессора на матплатах совпадает, версия матплаты совпадает, но разводка платы отличается, процессоры внешне порой отличаются, порой нет. Прошивка от производителя принтера закрыта, на сайте производителя процессора все что есть - показывает полную совместимость с STM. Вероятно, нам достался модифицированный и не документированный вариант, не полностью совместимый с STM. Об этом и рассказываю - то, что раньше эндер 3 с процессором GD был как бы опенсорс девайсом (как бы - потому что производитель код прошивки не публикует, хотя и обязан, поскольку использует код marlin, но есть открытые прошивки), то сейчас это не так и установить открытую прошивку не получится, если хочется подключить датчик уровня CR Touch (возможно, и другие сенсоры тоже не работают, мы не проверяли). А «звоночком» служит и то, что производитель принтера начал отдельные прошивки для GD версии выкладывать - до этого можно было просто ставить STM версию прошивки на все матплаты… но об этом мы узнали только после покупки и попыток обновить прошивку. Все это вовсе не то, что мы ожидали - планировали просто купить принтер и установить открытую прошивку.


      1. WicRus
        00.00.0000 00:00
        +1

        Если верить картинкам из статьи, то 4.2.2 303ий мк, а на 4.2.7 103ий мк. И прошивки между ними по идеи не совместимы. А ещё могут быть отличия по схемотехнике, хотя когда есть рабочая плата, то проверить разводку и обвязку двух датчиков не большой сложности задача. А вот собрать marlin под gd-шку с рабочей конфигурацией всех необходимых датчиков для не подготовленного человека может быть не столь простой задачей. Хотя пара хороших примеров и даже это вполне достижимая цель.


        1. N-Cube Автор
          00.00.0000 00:00
          +2

          Есть открытые прошивки для обоих вариантов STM, платы 4.2.2 и 4.2.7 поддерживаются. Когда на одной и той же плате прошивка от производителя сенсор видит, а открытая прошивка не видит, то все становится очень интересно. Рабочую частоту процессора и тайминги разработчики опен сорс прошивок уже пробовали менять, не помогает. Можно, конечно, логическим анализатором посмотреть для начала, но анализатора под рукой нет и позаимствовать в Таиланде не у кого… да и это совсем не то, чем мы планировали заниматься, покупая принтер :)


          1. WicRus
            00.00.0000 00:00
            +2

            Когда на одной и той же плате прошивка от производителя сенсор видит, а открытая прошивка не видит, то

            сенсор исправен и работает. А значит остаётся только понять, что нужно поправить в прошивке) Предварительно проверив плату на схематехническую совместимость.
            Как по мне, запустить сенсор на плате, на которой ни у кого не работает это действительно интересно. Или даже если не запустить, то объяснить в чём проблема. Тем более, что принтер уже работает, а плата возможно всё ещё лежит без дела и готова для экспериментов)


            1. N-Cube Автор
              00.00.0000 00:00
              +2

              Пока у нас множество идей и доработок намечается. Думаю, доберемся со временем и до GD платы, пока ее аккуратно запаковали и спрятали. Есть подозрение, что со временем запчастей от апгрейдов на новый принтер наберется, тогда просто подключим к плате концевой выключатель вместо CR Touch (точность поплоше будет, а суть та же) и поразбираемся (первое, это проверить резисторы подтяжки, куча проблем с несовместимой периферией на них завязана).


    1. Sun-ami
      00.00.0000 00:00
      +3

      В статье 2021 года говорится, что у GD32F103 флэш-память — на отдельном кристалле, в отличие от STM32, и тайминги её отличаются. Это может вызвать проблемы если критичные к точности задержки реализованы не на таймерах, а при помощи циклов. Также, отличается и настройка таймингов флэш-памяти. На Хабре писали и о других проблемах совместимости.


      1. N-Cube Автор
        00.00.0000 00:00
        +2

        Вы правы, и спасибо за ссылку! Самое интересное в том, что с одной и той же прошивкой у части пользователей матплата с процессором GD работает с периферией, а у других - нет. Разводка матплат отличается, что уже наводит на мысли - никто не делает это просто так для готового и работающего продукта. Насчет процессора тоже сомнения возникают, а идентичен ли он, хотя маркировка и совпадает.


        1. Sun-ami
          00.00.0000 00:00
          +3

          Из-за отличающейся настройки таймингов флэш-памяти программа, написанная для STM32F103 на GD32F103 может работать с таймингами по умолчанию, которые на высоких частотах могут быть короче рекомендуемых даташитом, об укороченных таймингах говорится в статье по первой ссылке. Возможно, из-за этого некоторые экземпляры работают (в разгоне по таймингам флэша), а некоторые — нет.


          1. N-Cube Автор
            00.00.0000 00:00
            +2

            Да, тоже вариант, что проблема именно с отдельными экземплярами...