拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Marlin固件串口配置改3处,USB和串口通信不再掉线

Marlin固件串口配置改3处,USB和串口通信不再掉线 Marlin固件串口配置改3处USB和串口通信不再掉线【免费下载链接】MarlinMarlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin打印打到一半上位机突然不响应指令队列卡死宿主软件里刷出一排排超时警告。这多半是电脑与打印机之间串口通道出了问题。这里把Marlin固件串口配置拆成三块讲USB主通道、第二串口与RS485、压缩与调试输出。按下面顺序改三处即可每处都附验证方法。先认路Marlin串口通信链路的三层结构通信链路分工很清楚。主机发来的G代码先进串口接收缓冲区由 Marlin/src/core/serial.cpp 负责实际收发再交给 Marlin/src/gcode/parser.cpp 解析最后变成运动指令和状态响应。不同主板的USB、串口硬件各不一样固件用接口层统一抽象通用接口定义在 Marlin/src/core/serial_base.h转发、多路复用、条件开关等特性包装在 Marlin/src/core/serial_hook.h 里自由组合具体硬件实现放在 Marlin/src/HAL/ 目录。模块关键文件职责通用串口接口Marlin/src/core/serial_base.h定义统一串口读写接口上层代码不关心具体哪块主板串口特性组合Marlin/src/core/serial_hook.h把串口包装成转发、多路复用、条件开关等特性模块硬件抽象层Marlin/src/HAL/为每块主板的USB和串口提供对应引脚与硬件实现USB主通道调稳Marlin USB波特率设置先说目标主机直连打印机USB通道建好打印全程不掉线。Marlin固件串口配置里最常动的两个宏集中在 Marlin/Configuration.h#define SERIAL_PORT 0 #define BAUDRATE 250000怎么确认改对了上位机串口工具按250000波特率打开能稳定与打印机对话即可出现乱码或无响应通常是两端速率不一致。解释两句。SERIAL_PORT 取0是板载硬件串口取-1则是USB虚拟串口主板支持时才用得上。BAUDRATE 的250000应付多数场景若打印时经常丢包就把它降到115200。用BTT E3 RRF板子的话USB硬件引脚的映射可在 buildroot/share/PlatformIO/variants/MARLIN_BTT_E3_RRF/PinNamesVar.h 中核对USB_OTG_FS_SOF PA_8, USB_OTG_FS_VBUS PA_9, USB_OTG_FS_ID PA_10, USB_OTG_FS_DM PA_11, USB_OTG_FS_DP PA_12怎么确认没改错对照板上丝印这5个引脚号对得上实际USB口再编译对不上就先查自己主板的variant文件。两个坑。一是线材换屏蔽USB线长线缆别和电源线并排走。二是别在同一个通道上混用不同波特率的工具250000与115200混着开乱码是必然的。第二串口与RS485总线的开启配置这一步解决还要再接一台设备的问题给外部控制器留一个口或者接RS485一种适合长距离双绞线传输的串口协议设备。仍改 Configuration.h四行配置一起放开#define SERIAL_PORT_2 -1 #define BAUDRATE_2 250000 #define RS485_SERIAL_PORT 1 #define M485_PROTOCOL 1 #define RS485_BUS_BUFFER_SIZE 128怎么确认改对了主口上主机会话照常RS485设备的指令经总线进来、打印机正常应答。M485_PROTOCOL 打开后打印机会校验主机协议兼容性先确认主机端支持再开。两个坑。其一SERIAL_PORT_2 与 RS485_SERIAL_PORT 不能落到同一块板子的同一物理口否则两个功能互相抢资源。其二总线缓冲默认128字节主机单条指令超过这个长度时会出问题遇到就先核对再调整该值。Meatpack压缩与M111调试输出启用步骤两个可选优化一个减小通道上的数据量一个让通信问题更容易定位。落到实操。Meatpack是G代码压缩协议同样内容占更少的字节#define HAS_MEATPACK #define MEATPACK_ON_SERIAL_PORT_1怎么确认改对了发同一份G代码文件串口监视器里实际发出的字节数下降而打印动作不变。压缩的实现在 Marlin/src/feature/meatpack.cpp。一个坑压缩需要通信两端都认这套协议。主机端不支持时宁可关掉也别留着制造奇怪的乱码现象。再看调试输出。用 M111 命令控制级别标志位定义在 Marlin/src/core/serial.h常用的四项参数作用MARLIN_DEBUG_ECHO按处理顺序回显收到的G代码MARLIN_DEBUG_INFO打印调试输出消息MARLIN_DEBUG_ERRORS输出错误信息MARLIN_DEBUG_COMMUNICATION输出通信调试信息怎么确认改对了M111 打开 ECHO 级后上位机开始按顺序回显被处理的命令关掉即停止用它观察一轮指令流水很方便。排错速查通信掉线与多设备冲突的处理3D打印串口通信不稳定、多设备接入冲突是两类最高频的毛病。下表按先降速、再换线、后分流的顺序排好逐行对照即可现象处理办法打印中频繁丢包、主机掉线把 BAUDRATE 从250000改成115200再试降速后仍不稳定换屏蔽USB线并禁用Meatpack压缩简化链路偶发乱码、打印质量波动把Marlin更新到最新版本并核对主机端版本多台设备同总线、应答混乱每台设备用不同的串口编号端口彼此隔离隔离端口后仍冲突优化 Marlin/src/core/serial.cpp 里的串口中断处理设备多时改用带独立电源的USB集线器接入行动清单打印前把通信稳定性锁住按顺序过一遍核对 Configuration.h 里的 SERIAL_PORT 与 BAUDRATE确认主机串口工具用同一波特率若开了第二串口或RS485把端口号与128字节的总线缓冲记进硬件笔记换板时不混淆用 M111 打开 MARLIN_DEBUG_ECHO完整观察一轮打印的指令流水再关掉把改好的配置文件归档到版本管理里通信参数有变动随时可回溯参考资料三处串口架构文档docs/Serial.md各主板配置示例config/调试标志位定义Marlin/src/core/serial.h【免费下载链接】MarlinMarlin is a firmware for RepRap 3D printers optimized for both 8 and 32 bit microcontrollers. Marlin supports all common platforms. Many commercial 3D printers come with Marlin installed. Check with your vendor if you need source code for your specific machine.项目地址: https://gitcode.com/GitHub_Trending/ma/Marlin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表