2023-3-7 15:04:54 [显示全部楼层]
3996浏览
查看: 3996|回复: 2

[教程] 跟思兼学Klipper(21)新一代全能选手: Octopus Max EZ 简要使用记录

[复制链接]

新一代全能选手:Octopus Max EZ

前言

本文感谢必趣 (BigtreeTech) 赞助的 Octopus MAX EZ 主板,据说是美女一手自用。既往没有系统了解过必趣系的主板,这次和网友们一起一探究竟。

<img src="https://www.klipper3d.org/img/sponsors/BTT_BTT.png" style="zoom: 25%;" />

【KlipperBoxConfigs 配置文件数据库】已加入 btt-maxez-723 主板支持,提供引脚定义文件和一键编译、升级固件功能。

原创文章,转载引用请务必注明链接,水平有限,如有疏漏,欢迎指正交流。

文章如有更新请访问 DFRobot 社区 或者 cnblogs 博客园。

欢迎对 Klipper 固件,以及对改版 CNC 加工的 Voron 三叉戟、v0、v2.4 感兴趣的朋友加群交流(QQ Group:490111638)。

我们约定:上位机——运行Klipper系统的设备,主板——3D打印机主板,工具板——热端工具板

【2023年3月7日 更新】bigtreetech 的最新代码提交已经解决了 spi4 的问题,效率很高:stm32h7: Restore the RCC set in the bootloader to the default value

本文主要内容:

  • Octopus Max EZ 主板软硬件资源与注意点
  • 主板固件烧录升级方式
  • spi4 的排障过程
  • 如何使用 console.py 与 mcu 直接通讯

0、文档资料

1、外观对比

尺寸:160*100mm,对比 MKS 的怪兽8 主板和它自家的 Octopus。比Monster8稍长,和Octopus同样尺寸。主要空间是把EXP1和EXP2换成了FPC座,缩小部分元件挤出来的。

image-20230307143129421·

2、硬件规格、部分芯片及备注

2.1 核心亮点

  • 高性能主控芯片 STM32H723
  • 10轴 EZ 驱动系统
  • eFuse 智能电子熔丝,支持自恢复

2.2 接口概览

  • 10个高压驱动接口
  • 10路风扇,其中8路可控
  • 5路热敏接口,4路支持PT1000
  • 4路加热接口+1路独立热床加热接口
  • 6路限位开关接口
  • 1个接近开关、1个BLtouch接口
  • CANBus 接口
  • 断料检测、断电检测、打完关机模块接口
  • FPC 12864接口和TFT串口屏接口
  • ESP32WiFi 模块接口,2个RGB接口

2.3 高性能 MCU

主控芯片采用 STM32H723ZET6,主频 550MHz 的单核处理器(显示为400MHz,实际也是,原因如下)。目前H723的CoreMark跑分达到2500+,是F4系列的4倍多,也是目前STM32性能最强的MCU之一,甚至可以运行Linux操作系统,和预想的不同,H723比H743性能更强。

image-20230302104122098

番外

2.4 EZ 驱动系统

这是必趣带来的全新系统,宣称的主要特点如下:

image-20230307125303523

2.4.1 外观变化

  • 防呆防反插设计
    • 确实很方便,但是插座比较紧,正反插是否插到底反馈不明显,还无法达到盲插的水平
  • 驱动散热二合一,外观也更漂亮,不需要自己贴散热片
  • EZ 驱动和传统驱动价格差距不大,优化后值得推广,减少插反烧主板的惨案

image-20230307132757980

【图】包括两枚内测版 EZ2209 (银色散热片)

2.4.2 自动识别 TMC 通讯模式

Max EZ 主板支持自动识别 TMC 驱动通讯方式,UART 和 SPI 模式不再需要手动调整跳帽,富源盛 (Fysetc) 的 蜘蛛King 主板通过额外的 mcu 来实现,Max EZ 还未公布原理图,具体实现方式未知。

2.4.3 灵活的电压选择

Max EZ 板载 10 个驱动都支持高压使用,可以通过 VBB 和 HV 跳线帽切换。

关于这个说一下,VBB 指的是从主板取电,支持 12/24V 输入,比如主板 24V 它就是 24V;HV 则使用专门的 MOTOR POWER 端子供电,支持 24/48V 高压输入。也就是如果仅使用24V 驱动电机,则不需要接 MOTOR POWER 端子供电。这样做比起 XY 电机单独供电以支持高压的方式,如果都使用 24V 情况下更方便一些,少接线。

2.4.4 驱动信号电压提升

由于 STM32 的信号电平为 3.3v,主板驱动信号电平升至 5v,信号更稳定,理论上抗干扰更强。

2.4.5 支持功能拓展

板载10驱动,支持冗余,支持功能拓展。除了 EZ 步进电机驱动,未来还将有更多模块,比如 EZ31865 等,当然,这种转变会导致手中的传统外形拓展模块无法使用。

2.4.6 支持外置驱动和无限位归零

主板还引出了 step/dir/en/gnd 信号,用于外置驱动使用。DIAG 采用跳帽形式。

2.4.7 !spi4 使用的问题(已解决)

另外测试发现驱动所使用的 spi4 通讯有问题,目前的临时解决方法是使用软件定义 SPI,例如:

[tmc5160 stepper_x]
cs_pin: PG14
#spi_speed:
#spi_bus: spi4
spi_software_sclk_pin: PE12
spi_software_mosi_pin: PE14
spi_software_miso_pin: PE13

# 是否启用细分差值
interpolate: True
run_current: 1.0
# 采样电阻,一般采用默认
#sense_resistor: 0.075
# 低于以下速度采用静音模式,99999 意即始终启用静音模式
stealthchop_threshold: 99999

且无论是否插入 5160 驱动,都无法连接主板。除此之外,查看文档可知LCD-FPC SPI、板载SD卡插槽、拓展SPI引脚以及TMC SPI通讯都共用spi4,其中TMC信号转换为5V。一旦驱动使用softSPI,则其他的也要使用,具体原因等待工程师反馈。

  • Onboard SD card, expansion SPI pin header and TMC driver SPI, 4 features multiplexing the same hardware SPI4, and is converted to 5V to TMC driver

2.5 风扇子系统

甚至可以接 13 个风扇。

  • 常开恒压散热风扇(FAN) * 2 | 一般用于驱动散热,供电电压 VIN
  • 可控可调电压风扇(MFAN) * 1 | 一般用于主板散热,电压和 FAN6 相同
  • 可控可调电压 2Pin 风扇 * 4
  • PWM 可调电压 3/4Pin KF2510 风扇 *3(电脑风扇接口,支持PWM测速调速,可以检测风扇故障,调速范围更大,可以实现更静音)
  • 合计10路风扇,如果挤出机热端仅用 1 路,则剩下 3 路也可以连接可控风扇(VIN),也就是日常最大13路风扇
  • PC FAN 采用电脑风扇接口,也就是KF2510,默认线序 GND-VCC-测速-调速,其中测速因为输入电压,有隔离芯片,默认上拉有电压。使用时请注意电压,以及有些风扇线序与标准不同。使用可以参考我的文章 【思兼-Klipper 篇17】基于 Klipper 的必趣 Manta 牌夏日降温电风扇
  • 每路风扇电流 1A,峰值 1.5A

2.6 eFuse 智能电子熔丝

eFuse 智能电子熔丝 M335EF05,优点包括迅速断电,短路保护,自恢复,反向电流截断,过压、过流保护,反极性保护等。更多介绍:eFuse,自动驾驶成就的“小人物”

2.7 传感器子系统

  • 5路NTC,其中4路可选PT1000,1路用于热床温敏
  • NTC 不用插跳帽,使用 PT1000 时插跳帽,配置文件里修改上拉电阻,此精度低于 MAX31865。不使用 4k7 欧姆的原因是当 PT1000 到达日常打印温度时,其阻值更接近 2k/1k(可能说的不对)。
  • 接近开关支持PNP和NPN(三种电压可选),再也不怕买错型号了
  • BLTouch 接口
  • 打完关机接口 PS_ON
  • 断电检测接口 PWR-DET
  • FWS 4Pin 线宽检测或新式断料检测: 默认用于连接 耗材直径检测霍尔传感器(hall_filament_width_sensor),也可以连接新款断料检测传感器。

2.8 其他子系统

  • 最大 4 个热端加热棒及配套热敏接口,支持换头机,也可以使用多个加热棒同时加热提升效率
  • 支持 CANBus 通讯,板载 TI SN65HVD1050DR (VP1050) 高速CAN收发器芯片,最高速率可达1M/s,是经典的 TJA1050 升级版。
  • 1路独立 spi4 接口,可用于连接ADXL345加速度计等
  • 支持 ESP32 模块(默认不包含),支持RRF固件
  • 使用 FPC 连接 12864 屏幕,取消 EXP1 和 EXP2 拓展接口
  • 支持 USB Type-A 接口供电,使用 TI TPS5450-5v 降压转换芯片,支持5A高电流输出,可以为树莓派等上位机提供稳定供电
  • 支持 TFT 彩色串口屏幕,搭配 Marlin 使用
  • 两路 RGB 灯带接口,也可以连接其他设备。如果支持可调电压就好了,有带 12v 大灯板的需求

2.9 硬件接口备注

  1. 板载 Reset、Boot0 和 Boot1 按钮,一般 Boot1(PB2) 都是另有他用,不过 zet6 引脚多,任性。同时独立的boot1 也可以用于各种BootLoader,如 hid-bootloader、canboot 等,这里不展开了。
  2. reset 按钮旁边的排针是 SWD 调试接口
  3. VUSB 使用跳帽短接可以使用 USB 供电调试用,正常上机请断开,避免混合供电导致可能的信号干扰不稳定等问题
  4. 注意驱动和限位开关从1开始编号,为1-10。风扇等从0开始编号,注意别搞混了

3、固件编译与烧录

硬件谈完,我们来介绍下软件,默认支持多种方式更新固件:

  1. SD 卡升级固件
  2. DFU 在线升级固件
  3. Canboot 在线升级固件
  4. SD 卡在线升级固件(SDCard_Updates, "伪线刷")

首次烧录Klipper固件推荐使用 sd 卡,后续可以直接使用 dfu 方式在线升级固件,无需打开电器仓手动进入 dfu 模式。

编译参数:

image-20230305132554276

  • 其中 USB_ids 可以设置为btt-maxez-723

3.1 SD 卡刷

下载 klipper.bin 并重命名为 firmware.bin 拷贝到格式化为 FAT32 文件系统的 SD卡中插入主板,断电或者按下RESET按钮,稍等片刻即可完成烧录,之后文件名称会变成 FIRMWARE.CUR

3.2 DFU 线刷

  1. 按住boot0按钮,再按下reset按钮,稍等片刻设备进入DFU烧录模式

    cd ~/klipper
    sudo dfu-util -p 1-1 -R -a 0 -s 0x8020000:leave -D out/klipper.bin
  2. (推荐)如果系统已经烧录了新版 Klipper 系统,则无需使用boot0按钮即可自动进入dfu模式,编译后直接烧录

    cd ~/klipper
    make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32h723xx_btt-maxez-723-if00
  3. 注意dfu烧录固件并不会破坏sd卡升级功能

  4. 目前支持自动进入DFU更新固件的MCU

    通过查询 klipper/src/ 文件,搜索 usb_reboot_for_dfu_bootloader 可知如下芯片支持烧录新版 Klipper 后自动进入DFU升级固件,无需使用 boot0 手动进入升级。

    • H7、G0、F4、F0
    • lpc176x 也有 dfu bootloader

3.3 SDCard_Updates 伪线刷

需要插一张SD卡,然后Klipper将固件传输到SD卡,重置主板后完成传统升级模式,通过检校文件名称确定升级成功。

修改 ~/klipper/scripts/spi_flash/board_defs.py 定义如下,遇到同样的问题,只能使用软件定义SPI。

# cat .config | grep CONFIG_MCU
# miso,mosi,sclk: PE13,PE14,PE12
# ./scripts/flash-sdcard.sh -b 115200 /dev/serial/by-id/usb-Klipper_stm32h723xx_btt-maxez-723-if00 btt-maxez-h723-sw
    'btt-maxez-h723-sw': {
        'mcu': "stm32h723xx",
        'spi_bus': "swspi",
        'spi_pins': "PE13,PE14,PE12",
        'cs_pin': "PB12",
        'skip_verify': True
    },
    # 使用硬件spi4时初始化SD卡失败
    # 'btt-maxez-h723-hw': {
    #     'mcu': "stm32h723xx",
    #     'spi_bus': "spi4",
    #     'cs_pin': "PB12",
    #     'skip_verify': True
    # },

image-20230305134734951

3.4 Canboot 升级固件 [TODO]

适用 CANBus 桥接固件。

4、与 mcu 直接通讯:以探析 spi4 问题为例

Klipper 默认将 Gcode 命令转换为机器语言,当然我们也可以直接与下位机主板通讯。这与 /tmp/printer 不同。参考文档包括:

4.1 简单示例:控制LED亮灭(设置数字输出引脚值)

我们先演示一个简单的例子,通过 console.py 控制 LED 灯亮灭:

sudo systemctl stop klipper
cd klipper
~/klippy-env/bin/python ~/klipper/klippy/console.py /dev/serial/by-id/usb-Klipper_stm32h723xx_btt-maxez-723-if00
SUPPRESS stats

# 设置 PE9 引脚值为 1,即输出高电平,点亮设备
set_digital_out pin=PE9 value=1

image-20230307142058414

4.2 启用硬件 spi 设备

# 停止 klipper 服务,解除设备占用,查看 console.py 工具帮助信息
sudo systemctl stop klipper
cd klipper
~/klippy-env/bin/python ./klippy/console.py -h

# 与下位机 mcu 直接建立通讯,注意修改设备地址
~/klippy-env/bin/python ~/klipper/klippy/console.py /dev/serial/by-id/usb-Klipper_stm32h723xx_btt-maxez-723-if00

# 通过 LIST 命令可以查看主频和帮助信息
LIST
Available local variables:
  clock: 360005514289
  freq: 400000000.0

# 屏蔽干扰信息
SUPPRESS stats

# 为对象分配内存空间,示例分配3个对象
allocate_oids count=3

# 配置 spi 信息并尝试传输数据
config_spi oid=0 pin=PF14 cs_active_high=1
spi_set_bus oid=0 spi_bus=spi4 mode=0 rate=2000000
spi_transfer oid=0 data=1234
ERROR:root:b'Got EOF when reading from device'

## 语法参考
config_spi oid=%c pin=%u cs_active_high=%c
spi_set_bus oid=%c spi_bus=%u mode=%u rate=%u
spi_send oid=%c data=%*s
spi_transfer oid=%c data=%*s

## 定义softwareSPI
spi_set_software_bus oid=%c miso_pin=%u mosi_pin=%u sclk_pin=%u mode=%u rate=%u

image-20230307140659934

小记及测试结果:

  1. Klipper 文档未更新,config_spi 语法有变动,请以 LIST 输出结果为准
  2. 基本概念:创建oid,分配空间,c语言概念,变量格式化参考printf
  3. MCU 主频确实是 400Mhz
  4. 创建spi,设置spi参数,向spi传输数据,其中1-3a正常,spi4报错,证明不仅驱动问题,整条 SPIBus 都有问题

进一步测试比如使用示波器等就没时间了,将此问题反馈给 btt 的工程师,很快就解决了。思路如下(引用):

  1. 不用引导程序,直接把klipper写到芯片的 0x08000000 ,发现完全正常,烧了引导程序之后就出现异常了,就从引导程序开始排查

  2. 引导程序里面在可能的地方屏蔽掉部分程序,依次烧录芯片里面,慢慢找到是哪部分导致的。

  3. 引导程序跳转到klipper之前,我们有把所有的时钟都reset的,gpio那些时钟都被正常reset了,但是 RCC_APB2ENR 的spi4时钟还是使能的状态, 导致https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32h7_spi.c#L90这里压根没进去gpio初始化的部分

image-20230307142510683

5、建议与问题

  1. 驱动和限位开关编号从1开始,和其他从0开始不一样,历史遗留问题,请注意不要接错了。
  2. 建议增加一路电压可选RGB,方便使用 12V 等牛逼的灯板(WS2812 氛围灯 + 暖色/白色照明灯)
  3. USB连接接口与 USB-Type-A 供电接口使用同一跳帽,是否有混合供电干扰信号的问题
  4. CAN接口优化下位置,方便接线?
  5. 独立驱动输入电压,pdf说明书是24-48v,产品介绍页面12-60(56)v,希望介绍说明保持一致,虽然也没错
  6. Klipper 目前最大仅支持 400Mhz 主频,希望以后能完全发挥 H723 的威力

小结

组装机器的时候会根据自己需求购买刚刚合适的主板,当然也可以有另一种选择:

jike_146504544405248_pic

那年九岁  学徒

发表于 2023-3-11 14:47:59

嘿嘿我也有它!
回复

使用道具 举报

pATAq  版主
 楼主|

发表于 2023-3-12 08:56:36


666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail