跟思兼学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日 更新】**(https://github.com/bigtreetech)** 的最新代码提交已经解决了 spi4 的问题,效率很高:(https://github.com/Klipper3d/klipper/pull/6092)
本文主要内容:
* Octopus Max EZ 主板软硬件资源与注意点
* 主板固件烧录升级方式
* spi4 的排障过程
* 如何使用 console.py 与 mcu 直接通讯
## 0、文档资料
* 项目主页:https://github.com/bigtreetech/Octopus-Max-EZ
* 以上包括中文说明书和引脚图,原理图暂时没有。还包括Marlin和Klipper的固件和配置参考
* (https://item.taobao.com/item.htm?id=700913610879)
## 1、外观对比
尺寸:160*100mm,对比 MKS 的怪兽8 主板和它自家的 Octopus。比Monster8稍长,和Octopus同样尺寸。主要空间是把EXP1和EXP2换成了FPC座,缩小部分元件挤出来的。
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071458490.png)·
![](https://gd4.alicdn.com/imgextra/i3/381903059/O1CN01Hajfh61YT4NPexYDA_!!381903059.jpg)
## 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接口
![](https://img.alicdn.com/imgextra/i2/381903059/O1CN01wGunhz1YT4N9gn1p2_!!381903059.jpg)
## 2.3 高性能 MCU
主控芯片采用 STM32H723ZET6,主频 550MHz 的单核处理器(显示为400MHz,实际也是,原因如下)。目前H723的CoreMark跑分达到2500+,是F4系列的4倍多,也是目前STM32性能最强的MCU之一,甚至可以运行Linux操作系统,和预想的不同,H723比H743性能更强。
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303021041401.png)
**番外**:
* (https://www.st.com/zh/microcontrollers-microprocessors/stm32f4-series.html) 以及 (https://www.st.com/zh/microcontrollers-microprocessors/stm32h7-series.html) 系列特性对比
* 关于 mcu 性能跑分:[《STM32各系列MCU性能对比及测试说明》](https://blog.csdn.net/ybhuangfugui/article/details/99827113)
> 关于跑分常见的就是 Coremark 和 DMIPS(Dhrystone),目前前者更常见,但是STM32网站上使用后者。
>
> 项目主页:https://github.com/eembc/coremark
>
> 官方网站:https://www.eembc.org/
>
> 跑分结果列表:https://www.eembc.org/coremark/scores.php
>
> 其网站上还有针对不同应用场景的跑分工具和结果,例如针对低功耗场景、IoT、网络等。
* 关于 Klipper 显示为 400Mhz 的问题
* 使用 console.py 直接连接 mcu 后,输入 LIST 也能看到当前主频确实是 400Mhz,不是显示错误
*实际使用 (https://www.klipper3d.org/Benchmarks.html#micro-controller-benchmarks) 进行测试,结果也显示 H723 在Klipper上的性能约是 F4 的 2 倍多
* 查看 (https://github.com/Klipper3d/klipper/blob/master/src/stm32/stm32h7.c) 找到 `CONFIG_CLOCK_FREQ` 定义 mcu 主频
* 搜索 `CLOCK_FREQ` 找到 (https://github.com/Klipper3d/klipper/blob/master/src/stm32/Kconfig),发现下面一句,也就是 <u>**目前 Klipper 最大支持 400Mhz 主频**</u>
> default 400000000 if MACH_STM32H7 # 400Mhz is max Klipper currently supports
## 2.4 EZ 驱动系统
这是必趣带来的全新系统,宣称的主要特点如下:
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/20230307132852.png)
### 2.4.1 外观变化
* 防呆防反插设计
* 确实很方便,但是插座比较紧,正反插是否插到底反馈不明显,还无法达到盲插的水平
* 驱动散热二合一,外观也更漂亮,不需要自己贴散热片
* EZ 驱动和传统驱动价格差距不大,优化后值得推广,减少插反烧主板的惨案
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/20230307132838.png)
【图】包括两枚内测版 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,例如:
```yaml
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 牌夏日降温电风扇 ](https://www.cnblogs.com/sjqlwy/p/klipper_fan.html)
* 每路风扇电流 1A,峰值 1.5A
## 2.6 eFuse 智能电子熔丝
eFuse 智能电子熔丝 M335EF05,优点包括迅速断电,短路保护,自恢复,反向电流截断,过压、过流保护,反极性保护等。更多介绍:(https://www.sohu.com/a/578728462_560178)
![](https://img.alicdn.com/imgextra/i2/381903059/O1CN01Lvg1xy1YT4NQDn1Ax_!!381903059.jpg)
## 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 卡在线升级固件((https://www.klipper3d.org/SDCard_Updates.html), "伪线刷")
首次烧录Klipper固件推荐使用 sd 卡,后续可以直接使用 dfu 方式在线升级固件,无需打开电器仓手动进入 dfu 模式。
编译参数:
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071458005.png)
* 其中 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。
```shell
# 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
# },
```
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071458988.png)
### 3.4 Canboot 升级固件
适用 CANBus 桥接固件。
## 4、与 mcu 直接通讯:以探析 spi4 问题为例
Klipper 默认将 Gcode 命令转换为机器语言,当然我们也可以直接与下位机主板通讯。这与 /tmp/printer 不同。参考文档包括:
* (https://www.klipper3d.org/Debugging.html#manually-sending-commands-to-the-micro-controller)
* (https://www.klipper3d.org/Protocol.html)
* (https://www.klipper3d.org/Benchmarks.html#micro-controller-benchmarks)
* (https://www.klipper3d.org/MCU_Commands.html) | 注意文档配置对象部分有错误
* 以及 Klipper 源代码等
## 4.1 简单示例:控制LED亮灭(设置数字输出引脚值)
我们先演示一个简单的例子,通过 console.py 控制 LED 灯亮灭:
```shell
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
```
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071459701.png)
## 4.2 启用硬件 spi 设备
```shell
# 停止 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
```
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071459564.png)
小记及测试结果:
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初始化的部分
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071459092.png)
## 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 的威力
## 小结
组装机器的时候会根据自己需求购买刚刚合适的主板,当然也可以有另一种选择:
!(https://raw.iqiq.io/sjqlwy/blog_imgs/default/images/202303071459886.jpeg) 嘿嘿我也有它! 那年九岁 发表于 2023-3-11 14:47
嘿嘿我也有它!
666
页:
[1]