roboforum.ru

Технический форум по робототехнике.

Marlin 2.0 (32bit)

Marlin 2.0 (32bit)

alexxy » 29 окт 2017, 20:54

Как известно одна из популярных прошивок для 3D принтеров Marlin обзавелась поддержкой 32битных контроллеров на базе следующих чипов:
  • AT91SAM3X8E (на базе Arduino Due) (например RAMPS-FD, RADDS)
  • LPC176x (Всем известные девайсы на базе Smoothieboard) (работают ReARM, MKS Sbase, Azteeg X5 GT, AZSMZ mini)
  • STM32F1
  • Teensy 3.5/3.6 (они уже Cortex-M4 с FPU)

Предыстория: Товарижчь setar подбросил мне плату Azteeg X5 GT с драйверами BigFoot BSD2660. В оригинале плата работала на Smoothiware, но мне хотелось попробовать Marlin на ней. Собственно дело оставалось за малым, добавить в Marlin поддержку этой платы. К плате прилагался дисплей Viki2.

На фото ниже, Marlin запущенный на Azteeg X5 GT с Viki2 (к принтеру пока не подключал, драйвера tmc2660 не удалось запустить, надо написать или найти библиотеку для них)
DSC_0339.JPG

DSC_0340.JPG

DSC_0341.JPG

DSC_0342.JPG


Что сейчас работает:
  • Мапинг базовых пинов
  • Эндстопы
  • Грелки
  • Сервы
  • Термисторы
  • Экран Viki2
  • Драйверы (пробовал drv8825 и tmc2100)
Что не работает:
  • Драйверы BSD2660 (нет библиотеки, надо написать)
  • Ну и потенциально всё что не проверялось ;)

Как всё это было: вся проблема заключалась в том, что по этой борде нет нормальной спецификации с пинами, а предположение что все пины будут совпадать с тем что заявлено для Smoothieboard мягко говоря не оправдалось =). Так что пины искались методом реверс энжиниринга и научного тыка. Порт по сути делался не с нуля, а в качестве базы использовалось то, что было сделано уже для re-arm. Фотки и может пара видео этого дела будет в следующих постах.

Мой код поддержки Azteeg X5 GT смержили в основное дерево Marlin, так что берем бранч bugfix-2.0.x и пользуем

Базовая инструкция для сборки
  • Ставим platformio
  • Клонируем основную репу марлина
    Код: Выделить всёРазвернуть
    git clone https://github.com/MarlinFirmware/Marlin
  • Переключаем бранч на bugfix-2.0.x
    Код: Выделить всёРазвернуть
    git checkout -b bugfix-2.0.x origin/bugfix-2.0.x
  • Конфигурим как обычно, выставляем нужные параметры для платы и тип платы
  • Собираем
    Код: Выделить всёРазвернуть
    pio run -e LPC1768
  • В итоге получится файл firmware.bin (смотрим где он в выводе pio), копируем его на флешку, и перезапускаем плату
  • Радуемся Marlin на 32битной борде

Re: Marlin 2.0 (32bit)

karabas2011 » 08 ноя 2017, 20:05

alexxy писал(а):
demonx писал(а):Я сегодня попробовал. У меня MKS SBase 1.3+LV8729 на XY+FullFraphicDisplay+Encoder. Скачал Марлин 2.0, скомпилил и прошил. В итоге - экран не работает, движки работают странно, еле ползают, шаги и ускорения совсем не соотвествуют заданным в конфиге. Самое странное, в конфиге заданы концевики: x_min, y_max, z_max, а M119 выдаёт x_min, y_min, z_min. Вентилятор включается нормально. Температуру стола не показывает.


Так вы проверьте соответствие пинов. Концевиков, термисторов и тд..
Могу поправить по результатам ваших тестов. У меня нет этой платы

Тебе плату дать? в Москве?
У тебя кардридер работает?

Re: Marlin 2.0 (32bit)

setar » 08 ноя 2017, 22:34

Леша В питере, даже скорее в Гатчине (Леннинградская область)

Re: Marlin 2.0 (32bit)

karabas2011 » 09 ноя 2017, 12:36

На текущий момент ситуация хреновая,
Разработчики решили встроенную флешку использовать только как EEPROM эмулятор.
Она недоступна как носитель жкодов. По поводу внешней флешки никто не чешется. Мои запросы закрывают с дурацкой пометкой - смузевцы типа сказали что оно не работает.
С SPI какие-то непонятные проблемы, даже если цепляешь дисплей, который его вообще не использует, флеха не инитится. Хотя пытается.
В файле spi_pins.h пины вообще не для Sbase.

Re: Marlin 2.0 (32bit)

sergey2x » 09 ноя 2017, 13:19

karabas2011 писал(а):В файле spi_pins.h пины вообще не для Sbase.


Там только SS_PIN не понятен, остальные это SSP0 на котором LCD висит.
Проблема, имхо, в том, что внутренняя и внешняя карты висят на одном интерфейсе SSP1.

Re: Marlin 2.0 (32bit)

karabas2011 » 09 ноя 2017, 16:24

sergey2x писал(а):
karabas2011 писал(а):В файле spi_pins.h пины вообще не для Sbase.


Там только SS_PIN не понятен, остальные это SSP0 на котором LCD висит.
Проблема, имхо, в том, что внутренняя и внешняя карты висят на одном интерфейсе SSP1.


Там как external SPI объявлены пины которые идут как данные в LCD поэтому и артефакты на экране при втыкании флешки.
А закоментированы internal которые как раз и вынесены на разъём EXT2 сбейсы.
SS_PIN это типа SDcard select - и он на ext2 разведён как 0.28 а не как у них.
Можно вооще всё переназначить и всё равно будет нормально грузиться с системной флешки.
можно отцепить дисплей нафиг и оставить один кардридер - но он один фиг не работает.

при ините сдкарты идёт попытка проинитить c sdss - если облом и lcd_sdss на другом пине то вторая попытка инита на lcd_sdss
и если тоже облом то досвиданья

Re: Marlin 2.0 (32bit)

demonx » 09 ноя 2017, 22:49

У меня заработал дисплей когда я в spi_pins.h прописал:

#define SCK_PIN P0_15
#define MISO_PIN P0_18
#define MOSI_PIN P0_17
#define SS_PIN P0_16
#define SDSS SS_PIN

Re: Marlin 2.0 (32bit)

sergey2x » 10 ноя 2017, 10:31

В
chanfs\mmc_ssp.c
usb\mscuser.cpp
идёт работа с "системной" флешкой, для интерфейса USB<->SD. И параллельно "надстройка" в виде марлина на этих пинах должна с экранной флешкой общаться, но что-то не заводится...

Re: Marlin 2.0 (32bit)

karabas2011 » 10 ноя 2017, 12:02

demonx писал(а):У меня заработал дисплей когда я в spi_pins.h прописал:

#define SCK_PIN P0_15
#define MISO_PIN P0_18
#define MOSI_PIN P0_17
#define SS_PIN P0_16
#define SDSS SS_PIN


Так эта хрень там уже и так изначально прописана. Она на дисплей не влияет. Он работает с ходу. Посмотри на разводку EXT1/EXT2

Добавлено спустя 1 минуту 28 секунд:
sergey2x писал(а):В
chanfs\mmc_ssp.c
usb\mscuser.cpp
идёт работа с "системной" флешкой, для интерфейса USB<->SD. И параллельно "надстройка" в виде марлина на этих пинах должна с экранной флешкой общаться, но что-то не заводится...


Отож. Намутили где-то с spi. А выключаешь софтовый - перестаёт компилиться

Добавлено спустя 3 минуты 13 секунд:
alexxy писал(а):Как известно одна из популярных прошивок для 3D принтеров Marlin обзавелась поддержкой 32битных контроллеров на базе следующих чипов:

[*] Радуемся Marlin на 32битной борде [/list]

Флеха дисплейная доступна?

Re: Marlin 2.0 (32bit)

demonx » 10 ноя 2017, 14:08

karabas2011 писал(а):
demonx писал(а):У меня заработал дисплей когда я в spi_pins.h прописал:

#define SCK_PIN P0_15
#define MISO_PIN P0_18
#define MOSI_PIN P0_17
#define SS_PIN P0_16
#define SDSS SS_PIN


Так эта хрень там уже и так изначально прописана. Она на дисплей не влияет. Он работает с ходу. Посмотри на разводку EXT1/EXT2


В твоем коментарии не нуждался. Написал для людей у кого как у меня discount full graphic display подключен к MKS SBase. В исходнике другие пины, видимо под Re-Arm.

Re: Marlin 2.0 (32bit)

karabas2011 » 10 ноя 2017, 17:10

Подцепил к sbase дисплей MKS MINI12864 как AZMSZ или VIKI2

Код: Выделить всёРазвернуть
#if ENABLED(AZSMZ_12864) || ENABLED(VIKI2) 
#define BEEPER_PIN       P1_31
#define DOGLCD_A0        P1_23
#define DOGLCD_CS        P1_22
#define BTN_EN1          P3_26
#define BTN_EN2          P3_25
#define BTN_ENC          P1_30
#define LCD_SDSS         P0_28
#define SD_DETECT_PIN    P0_27
#define DEFAULT_LCD_CONTRAST     100
#endif


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

spi_pins.h
Код: Выделить всёРазвернуть
/** onboard SD card */
#define SCK_PIN           P0_7
#define MISO_PIN          P0_8
#define MOSI_PIN          P0_9
#define SS_PIN            P0_6
/** external */ /*
#define SCK_PIN           P0_15
#define MISO_PIN          P0_17
#define MOSI_PIN          P0_18
#define SS_PIN            P1_23
*/
#define SDSS              -1 //SS_PIN


При откате на GLDC(discount full graphic display) те же самые флешки не читаются.

Re: Marlin 2.0 (32bit)

sergey2x » 11 ноя 2017, 14:43

При старте пины настроены на аппаратный SPI и как пины ввода/вывода не работают и софтовый SPI на них не пашет.
Костыли такие:
HAL\HAL_LPC1768\HAL_spi.cpp
Код: Выделить всёРазвернуть
в блоке LPC_SOFTWARE_SPI
#include <lpc17xx_pinsel.h>

  void spiBegin() {
   
    PINSEL_CFG_Type PinCfg;
    PinCfg.Funcnum = 0; //!
    PinCfg.OpenDrain = 0;
    PinCfg.Pinmode = 0;

    PinCfg.Pinnum = LPC1768_PIN_PIN(SCK_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(SCK_PIN);
    PINSEL_ConfigPin(&PinCfg);

    PinCfg.Pinnum = LPC1768_PIN_PIN(MISO_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(MISO_PIN);

    PinCfg.Pinnum = LPC1768_PIN_PIN(MOSI_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(MOSI_PIN);
    PINSEL_ConfigPin(&PinCfg);

    SET_OUTPUT(SCK_PIN);
    SET_INPUT(MISO_PIN);
    SET_OUTPUT(MOSI_PIN);
  }

HAL\HAL_LPC1768\spi_pins.h
Код: Выделить всёРазвернуть
#define SCK_PIN           P0_7
#define MISO_PIN          P0_8
#define MOSI_PIN          P0_9
#define SS_PIN            P0_28

Системная флешка по USB становится невидна.

Re: Marlin 2.0 (32bit)

iYw682w » 11 ноя 2017, 14:56

Не могу найти где ток в конфигурации настраивается на встроенные драйвера у MKS sbase v1.3?

Re: Marlin 2.0 (32bit)

karabas2011 » 13 ноя 2017, 13:23

sergey2x писал(а):При старте пины настроены на аппаратный SPI и как пины ввода/вывода не работают и софтовый SPI на них не пашет.
Костыли такие:
HAL\HAL_LPC1768\HAL_spi.cpp
Код: Выделить всёРазвернуть
в блоке LPC_SOFTWARE_SPI
#include <lpc17xx_pinsel.h>

  void spiBegin() {
   
    PINSEL_CFG_Type PinCfg;
    PinCfg.Funcnum = 0; //!
    PinCfg.OpenDrain = 0;
    PinCfg.Pinmode = 0;

    PinCfg.Pinnum = LPC1768_PIN_PIN(SCK_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(SCK_PIN);
    PINSEL_ConfigPin(&PinCfg);

    PinCfg.Pinnum = LPC1768_PIN_PIN(MISO_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(MISO_PIN);

    PinCfg.Pinnum = LPC1768_PIN_PIN(MOSI_PIN);
    PinCfg.Portnum = LPC1768_PIN_PORT(MOSI_PIN);
    PINSEL_ConfigPin(&PinCfg);

    SET_OUTPUT(SCK_PIN);
    SET_INPUT(MISO_PIN);
    SET_OUTPUT(MOSI_PIN);
  }

HAL\HAL_LPC1768\spi_pins.h
Код: Выделить всёРазвернуть
#define SCK_PIN           P0_7
#define MISO_PIN          P0_8
#define MOSI_PIN          P0_9
#define SS_PIN            P0_28

Системная флешка по USB становится невидна.



Пару дней назад они пофиксили новую систему нумерации пинов
теперь в spi_pins.h можно просто закоментить

//#define LPC_SOFTWARE_SPI

и по идее врубится хардварный SPI в расшареном режиме.
Я попробовал - MKSный дисплей вешается на экране приветствия. Плата работает и монтируется по USB. Развязывать селекты не удаётся. Гдето селект на дисплей жёстко забит.

Re: Marlin 2.0 (32bit)

sergey2x » 14 ноя 2017, 11:45

karabas2011 писал(а):Пару дней назад они пофиксили новую систему нумерации пинов
теперь в spi_pins.h можно просто закоментить
//#define LPC_SOFTWARE_SPI
и по идее врубится хардварный SPI в расшареном режиме.
Я попробовал - MKSный дисплей вешается на экране приветствия.
Плата работает и монтируется по USB.

Видел. Не работает.
karabas2011 писал(а):Развязывать селекты не удаётся. Гдето селект на дисплей жёстко забит.

Имхо сложнее всё.
Обмен USB<->SD идёт в прерываниях от USB как я понял, и одним SS тут не обойтись.
Вообще проект тёмный, SPI взаимодействие в тысяче мест, и всё вроде работает пока не появляется два слейва на одной шине.

Добавлено спустя 14 минут 51 секунду:
iYw682w писал(а):Не могу найти где ток в конфигурации настраивается на встроенные драйвера у MKS sbase v1.3?

Configuration_adv.h
Код: Выделить всёРазвернуть
#define DIGIPOT_I2C
#define DIGIPOT_I2C_MOTOR_CURRENTS { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 }  //  AZTEEG_X3_PRO

Работоспособность не проверял.

Re: Marlin 2.0 (32bit)

ales2k » 03 дек 2017, 14:03

Запустил в опытное производство платку под 32x битный марлин на STM32F405VGT6
RAM - память, 192 кБайт
Тактовая частота, 168 мГц
Размер программной памяти, 1024 кБайт
Архитектура Cortex M4

Размеры 10*10 см

На борту
5 независимых осей со сменными драйверами
3 Мощных транзистора
3 Выхода под вентиляторы
3 Входа под терморезисторы
4 Входа под конечники + вход под Z пробу

2 SPI для термопар или других устройств
2 СOM порта

EXT1 и EXT2 в формате GLCD//SD

1 I2C
1 Servo

1 SWD - отладочный порт

f411.jpg


2017-12-03_12-32-18.png


cron
Rambler\'s Top100 Mail.ru counter