当前位置:首页 > 嵌入式 > 嵌入式云IOT技术圈
[导读]击上方“嵌入式云IOT技术圈”,选择“置顶/星标公众号”干货福利,第一时间送达!1、Marlin2.0参数存储M命令Marlin2.0的存储功能主要依靠EEPROM来进行,Marlin也提供了相应的M代码来协助3D打印爱好者进行调试,这些参数配置完毕以后可以存储在单片机的EEPR...

击上方“嵌入式云IOT技术圈”,选择“置顶/星标公众号

干货福利,第一时间送达!

1、Marlin2.0 参数存储M命令

Marlin2.0 的存储功能主要依靠 EEPROM 来进行,Marlin也提供了相应的M代码来协助 3D 打印爱好者 进行调试,这些参数配置完毕以后可以存储在单片机的 EEPROM 中,关于 EEPROM 的操作,主要有如下 指令:

比如我们可以通过串口来更改 PID 值、步进电机运行的加速度和最大速度的设置,设置完毕以后输入以 上对应的存储指令 M500 即可完成参数的保存,如下所示:

以上这些参数都可以通过串口进行修改,有一些支持LCD的机器,也可以通过LCD进行修改,修改参数 后可以调用 M503 获取设置的结果:

但是这个结果是当前生效,当设备断电重启后,设置的参数也就消失了,如果想要断电保存,则需要设 置完参数以后调用 M500 命令进行保存,然后通过 M501 读取保存的结果,如果想恢复成原来的参数,也 可以通过 M502 命令将参数恢复到出厂前。

2、Marlin2.0 参数存储方式代码分析

当我们在串口输入M代码的时候,程序会执行到Gcode.cpp中对应的 case 分支:

case 'M':
switch (parser.codenum)
{
  //....
  case 500: M500(); break;  // M500: 将设置好的参数保存到EEPROM中
  case 501: M501(); break;  // M501: 从EEPROM中读取设置参数
  case 502: M502(); break;  // M502: 恢复参数为出厂前的状态
  #if DISABLED(DISABLE_M503)
  case 503: M503(); break;  // M503: 打印当前设置的参数(不是从EEPROM中读取)
  #endif
  //...
 ...
}
可左右滑动查看
对应的M代码实现位于Marlin/src/gcode/eeprom/M500-M504.cpp中:

//M500:将设置好的参数保存到EEPROM中
void GcodeSuite::M500() {
  (void)settings.save(); //MarlinSettings settings;
}
//M501:从EEPROM中读取设置参数
void GcodeSuite::M501() {
  (void)settings.load(); //MarlinSettings settings;
}
//M502:恢复参数为出厂前的状态
void GcodeSuite::M502() {
  (void)settings.reset(); //MarlinSettings settings;
}
#if DISABLED(DISABLE_M503)
 //M503:打印当前设置的参数(不是从EEPROM中读取)
 void GcodeSuite::M503() {
 (void)settings.report(!parser.boolval('S'true)); //MarlinSettings
settings;
}
#endif // !DISABLE_M503
可左右滑动查看
Marlin的参数存储主要是依靠 MarlinSettings 类来实现,位于Marlin/src/module/Settings.h以 及Marlin/src/module/Settings.cpp中,最终会调用到具体的存储硬件的读写函数。

往期精彩

开源Marlin2.x源代码架构学习笔记

步进电机驱动在3D打印应用的学习笔记(一)

光固化3D打印悬空和支撑讲解

3D打印过程与最近的学习成果

两个最常用的3D打印机切片软件

3D打印机marlin固件框架与GCode命令总结

3D打印机Marlin固件串口功能解析和程序移植

让野火F103开发板支持Marlin2.0固件是什么体验?3D打印主控板成员 1

C语言映射表在嵌入式串口解析、UI设计中的应用(值得收藏并实践的精华帖)

觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭