前言说起烙铁，大约在小学的时候就已经开始使用，虽然那时候对电子电路的理解只有正负极，但是也玩的不亦乐乎，不过那时候的烙铁给我的印象就是升温太慢了，每次使用都要等个好几分钟。后来上了大学、工作了接触了白光烙铁，那叫一个香啊，10s内就能到达目标温度，而且回温迅速，大片接地焊盘都不在话下，当然这些烙铁都非常贵，当时没啥钱的我实在买不起。再后来网上掀起了一股白菜白光的DIY热潮，各路大神把白光的价格拉下到2位数，于是2016年我以不到80元入手了一个简易白光烙铁，虽然简陋，没有休眠功能，无法自动关机，温度调节基本靠猜，但是出色的焊接能力还是让我觉得很香。不过这个使用了5年的烙铁最近开始出现了加热异常，接触不良，异响等问题，于是乎我打算结合多年使用烙铁总结的需求，设计一个我的理想烙铁。梳理需求有了想法自然是总结下个人在常年使用烙铁时遇到的痛点，并梳理出如下需求：外观高颜值小巧、便携支持更换烙铁头支持PD供电实时温度显示的界面支持相关参数设置（温度校准、加热策略自定义等）支持快速调整温度支持休眠与自动关机支持提示音框架设计需求锁定了，接下来则是大致框架的设计，整个烙铁的制作涉及到机械设计，硬件设计以及软件开发，因此整体过程大致如下：根据对市面上已有烙铁的外观结构分析，结合烙铁头的长度以及自己的审美，确定了烙铁手动的总体尺寸在直径17mm*170mm。外观尺寸确定了，则内部PCB大小也基本确定，约为13mm*60mm，同时确定烙铁头保持架的尺寸约为13mm*110mm。最后则是漫长的软件开发过程。机械框架硬件框架软件框架硬件设计根据之前的评估，可以确定PCB的尺寸，因此先根据这个尺寸设计硬件，然后通过AD输出3D结构图至机械设计软件后进行更加细致的机械设计。原理图设计根据硬件框架进行原理图设计基本不会遗漏，整个过程还是相对简单顺利的。PCB布局与Layout由于PCB尺寸仅有13mm*60mm，同时还需要保障20V3A的过流能力，因此对布局与走线要求还是比较高的，原本打算采用4层板降低布线难度，可是考虑到打板成本，最后还是经过4次的重新布局布线在2层板上实现了所有走线。（感谢嘉立创给我白嫖打样）使用Keyshot 8进行渲染，看看PCB颜值。完成硬件设计则可以到处所需的3D STP数模了，后续机械设计则会根据该数模进行内部设计。机械设计根据硬件设计阶段导出的数模，我们就可以知道PCB上的元器件所占的高度了，这就使得我们在机械设计时能充分考虑他们的干涉问题。零件绘制首先绘制一个T12烙铁头绘制T12保持架绘制手柄底壳绘制手柄顶壳其他零件装配将PCB装入手柄底壳装配保持架安装螺柱安装T12烙铁头安装固定套筒拧上螺帽安装上盖至此机械部分设计基本结束，当然目前的设计还有许多细节须要修改，待软件开发完成后会进行3D打印实验安装（我那落灰的3D打印机机不知道还能工作不），进一步优化手柄设计。当然先使用Keyshot 8进行渲染，看看手柄颜值。软件开发软件开发主要包含GUI的移植与页面设计，按键框架的开发，其他BSP驱动的实现，温度控制PID的开发等。GUI设计GUI这里考虑了资源的占用，选择了lvgl，目前已经移植成功，核心骨架资源占用为80K ROM与13K RAM，由于页面代码还未全部开发完，资源还是非常紧张的。考虑到人机交互的舒适性，当前界面设计如下：主页显示采用横屏模式，适合在焊接作业时的观看角度。菜单页面采用竖屏显示，方便大拇指进行菜单选择时的观看角度。按键框架按键输入采用拨轮按键（早些年MP3中常常使用），按键支持上拨（CCW）、下拨（CW）、按压（PUSH）三种操作，由于按键较少，因此须要实现单击、双击、长按保持、长按连击等功能，以满足丰富的图形操作。主页显示的情况下，单击上下拨单步调整整目标温度，长按上下拨快速调整目标温度。主页显示的情况下，双击PUSH进入菜单界面。菜单显示的情况下，单击上下拨单步选择不同菜单项，长按上下拨快速切换菜单项。菜单显示的情况下，单击PUSH进入所选菜单项，长按PUSH退出。其他界面情况下，均支持单击PUSH确定，长按PUSH退出。BSP驱动BSP相关主要包含GPIO、SPI、DMA、UART、ADC、TIMER、PWM等。进度目前硬件调试基本结束，相关BSP驱动基本调通，后期大量工作在软件逻辑上。完成PCB打样PD 20V诱骗成功DC-DC 3.3V正常MCU正常拨轮按键---封装画反了震动开关正常蜂鸣器正常T12热电偶测温正常T12PWM加热正常lvgl移植成功后续内容[ ] 完成按键框架[ ] 完成页面设计[ ] 完成参数读取保存功能[ ] 完成PID温度控制[ ] 完成温度校准功能[ ] 完成休眠、关机机制
由于我在项目中将该芯片作为PHY和SERDES使用，因此本文内容主要还是围绕PHY和SERDES的相关功能，至于其他功能则没有进行深入研究。工作模式在之前的硬件篇中有提到，该芯片有两种寻址模式：单芯片寻址和多芯片寻址。多芯片寻址 对于多芯片寻址，需要给芯片设置一个非零的SMI地址（ADDR[4:0]的反码）。在多芯片寻址模式下，仅有两个寄存器（0x00:SMI Command Register 0x01:SMI Data Register）能够使用，内部各PORT的寄存器均由这两个寄存器间接访问。[...]
年前比较闲，在x宝捡垃圾时看到“微型步进丝杆电机”才2元一个，想想一直想DIY一个微型激光雕刻机，顺便学习运动控制相关的知识，于是果断下单买了10个，开始了激光雕刻机的爬坑之路。本着低成本，低难度，高效率的态度，打算先尽可能使用模块搭建硬件，后期有必要的话再考虑画PCB。设计目标实现一个55mm*55mm（丝杆最长58mm）雕刻面积的激光雕刻机，其中激光模块可以更换为“笔”成为一个画图机。材料选型1.框架结构：采用亚克力拼装，配合螺钉、螺帽加固；2.电机：丝杆电机、舵机；[...]
芯片特性Marvell 88E6321/88E6320 是一个7-Port千兆以太网交换芯片。支持最新的IEEEE802.1 Audio Video Bridging标准。芯片包含两个10、100、1000三速以太网收发器（PHYs），两个千兆SERDES，三个数字接口（GMIIRGMIIMII组合）。芯片采用Marvell动态队列限制（Dynamic Queue Limit ），实现高速无阻塞4级QOS交换结构。包含一个高性能地址查询引擎，多达支持8K个节点和1Mbit的帧缓存。内部MAC单元符合标准的IEEE802.3，最大支持10KByte帧长。包含一个TCAM-based策略控制列表（TCAM-based Policy Control List）引擎，支持256条规则（仅88E6321支持）。芯片的RGMII（或MII/RMII）接口支持直接连接管理器件或者路由器CPU作为MAC使用。2、6Port可以设置支持完整GMII接口。千兆SERDES接口支持SGMII、1000BASE-X、100BASE-FX。PHY单元支持802.3az 节能以太网（Energy Efficient Ethernet）。内部PHY单元、MAC单元均支持完整IEEE802.3标准。支持帧唤醒和帧时间侦测唤醒功能，允许在连接cpu是进入睡眠模式，以达到降低系统功耗目的。多达6个LED，可以通过寄存器配置相应功能。可以使用SMI接口和以太网帧对芯片进行配置，也可以使用EEPROM进行配置。支持8K条MAC地址自动学习和老化功能。支持25MhzXTAL时钟源。[...]
对于HardFault错误，之前也遇到过，无非是以下几种原因：数组越界内存溢出，访问越界堆栈溢出，程序跑飞中断处理错误一般通过打断点就能找到何时发生硬件错误。[...]