本文作者:zhujue

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3

zhujue 2024-01-31 10:37:02 41 抢沙发
跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3摘要: ...
[youbanshan]

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第1张

番外二:使用 UART 接口连接主板通讯

参考文档:https://klipper.wiki/index.php/UART

除了使用传统的USB数据线连接上位机,我们还可以使用UART,它支持所有主板。

通过UART连接的优点是:

  • 机身面板上没有数据线(封在电源仓内的除外)

  • 可以连接没有 USB 接口的设备

  • 方便刷写升级 STM32 设备固件和引导

  • 对于没有 USB 主板供电选择开关的设备,可以避免 USB 5v 和主板24v供电混合

缺点:

  • 需要 GPIO 引脚进行连接,这在 x86 计算机和笔记本电脑上是不可能的

  • 需要额外配置单板计算机

  • 无法访问 DFU,这在某些情况下导致无法在没有 SD 卡的情况下重新刷新电路板

大多数开发板以及部分电视盒子拥有 UART 接口可以直接使用,而树莓派比较特殊,所以单独叙述。

1.1 树莓派

树莓派有一个 miniuart 接口,还有一个全功能 UART 接口。前者有些限制所以不适用于 Klipper,后者有时候被板载的蓝牙模块占用。另外不同版本的树莓派也有差异,具体可以参考 RPi UART 文档 。

 复制代码 隐藏代码
sudo raspi-config# 【3 Interface Options】 - 【P6 Serial Port】 - 【NO】 - 【Yes】sudo nano /boot/config.txt####################################################### 在最后添加以下内容enable_uart=1              # 没有则添加 dtoverlay=disable-bt       # 除 RPi3 的其他版本树莓派 core_freq=250# dtoverlay=pi3-disable-bt # 树莓派3 特殊设置####################################################### 禁用蓝牙相关服务sudo systemctl disable hciuart.service sudo systemctl disable bluetooth.service## 重启生效sudo reboot
注意:
  • disable-bt | 关闭蓝牙设备

  • sudo systemctl disable hciuart | 关闭蓝牙服务

  • miniuart-bt | 不要使用该 overlay。设置蓝牙设备使用 mini UART, 但会降低最大可用串口通讯波特率

  • force_turbo=1 或 core_freq=250 | 设置 VPU 核心时钟来固定频率

对应的配置文件如下:

 复制代码 隐藏代码
# printer.cfg[mcu] # 通过 ls /dev/ttyAMA* 来确定serial: /dev/ttyAMA0restart_method: command# [mcu 2ndMCU] # 设置第2个MCU# serial: /dev/ttyAMA0# restart_method: command

接线方式:

树莓派GND(Pin6/9)GPIO14(TX,Pin8)GPIO15(RX,Pin10)GPIO26(Pin37)*3.3v(Pin1)*MCUGNDRXTXboot03.3v

注意:
  1. 使用前3个引脚即可以通讯

  2. 后2个标记星号的为可选,用于刷写引导和固件。GPIO26 也可以换成其他未使用的引脚。

1.2 香橙派等其他设备

这些设备一般拥有独立的调试串口和额外 UART ,具体请参考其手册,使用调试串口需要关闭终端和内核信息输出功能。采用传统的接线方式即可。

以 Armbian 为例,修改 /boot/armbianEnv.txt 并添加对应的 overlays 。它们的设备好可以通过 ls /dev/ttyS* 查看。

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第2张

【MKS Robin Nano v1.2 接线示意图】 请注意,有些主板的 UART 接口用于连接 WiFi模块后者其他设备。

番外三:不需要 microSD 卡的线刷模式

目前大多数32位主板需要通过拷贝固件到 SD卡刷来更新固件。那么有没有办法不用每次升级时要打开盖子插拔SD卡呢?

1. 官方伪线刷方法(SD updates)

Klipper 提供了一种伪线刷的方式,具体可以参考官方文档 SDCard updates,目前支持的主板可以通过 ~/klipper/scripts/flash-sdcard.sh -l 进行查询。kiauh 助手默认支持这种方式,但是需要插一张 SD 卡在主板上。

  • 此方法仅适用于固件升级,你仍然需要通过传统方式安装 Klipper 固件

  • 此方法仅适用于 SPI 接口的 SD 卡插槽,不支持 SDIO 接口(例如 Flyboard 以及 MKS Robin Nano V1/V2 等)

2. 新的线刷方法

在上面学习为STM32烧录引导和固件的过程中,我们联想到将树莓派的 GPIO引脚与最小系统的 BOOT0 引脚连接,即可以通过网页控制,切换MCU的boot0状态,闭合为高电平(ISP烧录模式),断开为低电平(正常运行模式),从而实现不需要microSD卡的固件线刷。

  • 此方法可以用于 Klipper 固件首次烧录、升级,以及 bootloader 烧录

  • 此方法不需要额外的 microSD 卡

  • 【结论】STM32F103 和 STM32F4 都测试成功

是否可行,我们验证一下。此外,由于 Klipper 包括上位机和下位机才能运行和读写引脚,所以我们不能在 printer.cfg 里面进行设置,这里使用 moonraker 进行控制。

 复制代码 隐藏代码
# moonraker.cfg[power boot0]type: gpiopin: gpiochip0/gpio26 # 根据喜好和实际情况设置,用于输出设置 `boot0` 的高/低电平,需要共地off_when_shutdown: Trueinitial_state: off

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第3张

2.1 UART 模式通讯

此种模式除了 boot0 线之外,需要额外的三根线连接:GND、Rx、Tx。

此种方式适用于引出 boot0 的设备,比如 monster8 主板,否则无法使用,比如 boot0 接地的 robin nano v2

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第4张

  • 此时选择 No bootloader ,并且会覆盖之前烧录的 stm32duino bootloader

  • 晶振频率请根据实际情况选择,可以在原理图上找到,我这里是 8 MHz

  • 通讯端口我这里选择 USART1 Serial ,对应引脚为 PA10(Rx)和 PA9(Tx),也可以选择其他 UART 引脚

  • 一定要确认通讯过程中良好接线

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第5张

 复制代码 隐藏代码
# 点击右上角 power,闭合开关使 boot0 为高信号,断开并重新给主板上电,使其进入 ISP 烧录模式# 查看设备信息sudo stm32flash /dev/ttyAMA0# 刷入固件sudo stm32flash -w ~/klipper/out/klipper.bin -v -g 0 /dev/ttyAMA0# 刷入 bootloader,这里不需要,会被覆盖# sudo stm32flash -w generic_boot20_pc13.bin -v -g 0 /dev/ttyAMA0

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第6张

2.2 USB 模式通讯

此种模式除了 boot0 线之外,需要通过 USB 数据线与树莓派连接。

此种方式由于可以自定义进入 bootloader 的按键,所以不需要引出 boot0 也可以使用。但是需要主板支持使用 SWD 协议刷入引导。话说回来,有些主板既没有引出 boot0,又没有引出 SWD 引脚,SD卡又是通过 SDIO 协议通讯的,这种乖乖用 microSD 卡更新吧,说的就是 MKS Robin Nano v1/v2。

跟着思兼学习Klipper(03-3)番外23-UART通讯设置与stm32线刷方法|3 3D打印 klipper 第7张

  • 此时选择 8KiB bootloader ,烧录固件后不会覆盖,板载 LED 灯可以正常指示 bootloader 状态。

  • 晶振根据实际情况选择

  • 通讯接口选择USB,必要时查看原理图确认。

  • 烧录方法和上面一样:sudo dfu-util -d 1eaf:0003 -a 2 -R -D ~/klipper/out/klipper.bin


[/youbanshan]
文章投稿或转载声明

来源:思兼版权归原作者所有,转载请保留出处。本站文章发布于 2024-01-31 10:37:02
温馨提示:文章内容系作者个人观点,不代表天云博客对其观点赞同或支持。

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,41人围观)参与讨论

还没有评论,来说两句吧...