做温度采集这行当久了手头攒了不少“老搭档”组合。去年给一套工业风管和冷水机组做多点温度监测时我重新捋了一遍信号链最终定下来ADS122U04IPWR PIC18F66K40这套方案把 PT100/NTC 的温度信号变成 24 位数字量再走 UART 送到主控。项目做完以后整条链路稳定得让人省心也有不少值得记录的坑。这篇文章就把这套东西从选型、硬件、固件到调试的过程完整拆开讲目标读者是正在做工业测温、HVAC 控制系统或者准备把“传感器 ADC MCU”玩明白的工程师。ADS122U04IPWR 这颗芯片最吸引我的地方是它在测温场景下几乎把“外围模拟电路”压缩到了极致内部集成了可编程增益放大器PGA、两个用于 RTD 激励的 IDAC 电流源、温度传感器接口还是 UART。PIC18F66K40 则是 Microchip 8 位家族里外设相当齐全的一颗料带多路 UART、12 位 ADCC、EEPROM在成本敏感、又要长期稳定运行的 HVAC 控制板上非常合适。这两颗配合起来不是简单堆料而是把“模拟小信号处理”和“数字控制逻辑”这两件事彻底分开各自干各自擅长的活。1. 项目概述与选型思路1.1 这颗 ADC 解决的核心问题做工业温度测量第一个绕不开的难点就是信号太小、噪声太大。PT100 在 0°C 时只有 100Ω温度每升高 1°C 阻值才增加约 0.385Ω用 1mA 恒流源激励的话1°C 对应的电压变化不过是 0.385mV。这么小的信号如果用普通 MCU 内置 ADC 直接采参考电压稍微抖一下、PCB 上窜一点噪声结果就是温度值像心电图。ADS122U04IPWR 是 TI 推出的 24 位 delta-sigma ADC采样率最高 2kSPS内部带低噪声 PGA、精密参考源、两个可编程 IDAC。最关键的是它用 UART 输出数字量不是传统的 SPI 或 I2C。这意味着 ADC 可以离传感器很近把模拟量就地数字化再通过几根数字线传回主控对于工业现场那种传感器分布在几十米范围内的场景这比“模拟长线传输”不知道稳了多少倍。另外24 位分辨率不是噱头。在 20SPS 这种低速采样下器件手册里的无噪声有效位数能做到 18~19 位左右换算到温度上就是 0.001°C 量级的分辨能力。实际系统受传感器精度、激励电流自热、PCB 热电势影响未必能摸到那么极限但至少你不用再担心“ADC 位数不够导致温度末位乱跳”这种问题了。1.2 为什么是 PIC18F66K40 而不是 ARM可能有人会问都 2025 年了怎么还用 8 位单片机我在这个项目里选 PIC18F66K40不是因为它性能强而是它的“够用”和“皮实”太符合 HVAC 场景了。这类控制器通常待在配电柜里环境温度可能到 70°C电源还未必干净。PIC18F66K40 工作电压 2.3V~5.5V宽温型号能扛 -40°C 到 125°C抗干扰能力经过几十年验证。它的外设也很有意思内部有 EEPROM 存校准参数有可编程引脚映射PPS可以把 UART、定时器这些外设灵活分配到不同引脚画 PCB 时走线压力小很多。还有一个现实因素成本。工业温控面板里一颗 8 位 MCU 加一颗 24 位 ADC物料成本远低于上一颗带高精度模拟采集功能的 32 位 MCU。而且这种方案把模拟采集模块化后面想换 MCU 平台只要 UART 协议不变固件迁移成本非常低。如果只是做单点测温PIC18F66K40 自带的 12 位 ADCC 也不是不能用但要同时测四路、还要做传感器线性化和故障诊断外挂 ADC 的优势就明显了。2. 硬件设计从 PT100 到 24 位数字量2.1 三线制 RTD 测量原理与接线PT100 最常用的接法是三线制。为什么要三根线因为 RTD 传感器到采集板之间可能有几十米导线铜线的阻值大约是 0.1Ω/m 量级0.5mm² 线径两线制测量时导线电阻直接叠加到传感器电阻上误差非常可观。三线制的思路是让激励电流流经一根导线再用另外两根导线分别采集 RTD 两端的电压然后做差分测量把等长的两根导线电阻误差抵消掉。ADS122U04IPWR 内部有两个 IDAC正好可以做完整的比例式三线制测量。我的接法是这样的IDAC1 输出接到 RTD 的一端激励电流经过 RTD 后从另一端流出分两路走一路到 AIN0另一路到 AIN1。这两路导线的电阻分别记为 R_lead1 和 R_lead2因为用同一根电缆两者几乎相等。测量 AIN0 和 AIN1 之间的差分电压时RTD 压降和 R_lead1 的压降都在里面但 R_lead2 上没有电流只有检测电流可以忽略。差分电压近似等于 RTD 压降因为 R_lead1 和 R_lead2 的电压在算差分时互相抵消了一半。再配合第二个 IDAC2 和精密参考电阻 RREF把 ADC 的参考电压设成 RREF 上的压降。这样最终测量结果只和 RTD 与 RREF 的阻值比值有关激励电流本身的温漂和噪声就被一阶抵消了。接线细节上AIN0 和 AIN1 两个通道的滤波电阻、电容参数要保持完全一致否则会引入测量偏差。我实际用的是 1kΩ 串联电阻加 100nF 电容到地构成低通滤波器截止频率大约 1.6kHz既能滤掉大部分射频干扰又不会影响 ADC 内部输入采样建立时间。2.2 周边器件、电源与布局要点比例式测量中RREF 的选值很重要。我量程设计到 300°CPT100 对应最大电阻约 212Ω。RREF 太小参考电压太低满量程接近 PGA 输出上限容易削顶RREF 太大测量分辨率被浪费。工程上我选 2kΩ 的精密电阻25ppm/°C 温漂以下配合 1mA 激励电流参考电压为 2VPGA 增益设为 8 时212Ω 对应的输入电压是 0.212V放大后 1.7V离 2V 参考上限还有余量线性度很好。电源和地去耦是容易踩坑的地方。ADS122U04 的模拟电源 AVDD 和数字电源 DVDD 我建议都从同一个 3.3V LDO 出来但 AVDD 前加一个 10Ω 电阻和 10µF0.1µF 电容组成 π 型滤波。模拟地与数字地在 ADC 芯片下方单点连接不要大面积铺铜直接连在一起否则开关噪声会通过地平面灌进模拟前端。布局上还有两个教训。第一ADC 的参考电容一定要靠近 REFP/REFN 引脚走线短而粗因为 delta-sigma ADC 的参考输入会周期性抽取电流这个电流路径上的任何电感都会造成参考电压毛刺。第二尽量把 ADC 放在传感器端子附近用 UART 的长线能力把数字信号送出去而不是把 PT100 的模拟线拉十米再进 ADC那样神仙芯片也救不了。另外这个项目里我还顺带留了一路 NTC 接口。NTC 热敏电阻不需要恒流源一个上拉电阻加 ADC 通道就能测成本比 PT100 低不少。固件里用 B 值公式换算温度精度虽然一般但用于风管表面温度这类非关键点位绰绰有余。这部分参数我在第 3 章里一并给出。3. 固件实现UART 通信与温度换算3.1 PIC 端 UART 驱动与 ADS122U04 协议框架PIC18F66K40 和 ADS122U04 之间就是一路 UART波特率我配置成 96008 数据位偶校验1 停止位。为什么不用更高的波特率温度采集本身是慢变量20SPS 的采样率下每秒只需要传输 80 字节左右9600 波特率完全够用而且长线远距离传输时低波特率误码率更低。PIC18F66K40 的 UART 初始化代码我用的是 EUSART1引脚通过 PPS 映射到 RC6/RC7// Fosc 16MHz, BRGH 1, BRG16 1, 目标波特率 9600 // SPBRG Fosc / (4 * 16 * Baud) - 1 25 void UART1_Init(void) { TRISCbits.TRISC6 0; // TX 输出 TRISCbits.TRISC7 1; // RX 输入 BAUD1CON 0x08; // BRG16 1 TX1STA 0x20; // 8位数据, BRGH1, 使能发送 RC1STA 0x90; // 8位数据, 使能串口, 使能连续接收 SPBRGH1 0; SPBRGL1 25; // 计算值 // 使能发送、接收中断可选 PIE1bits.TX1IE 0; PIE1bits.RC1IE 1; }ADS122U04 的命令协议本质上和 SPI 版本的 ADS1220 很像只是物理层换成了 UART 帧。上电后我先发复位命令再依次写寄存器配置输入多路选择器选 AIN0/AIN1 差分对、PGA 增益为 8、数据速率设为 20SPS、IDAC 电流设为 1mA、参考源选择外部 RREF。写完后会读一遍寄存器回来校验防止通信异常导致配置没生效。读转换结果时发送读数据命令然后从 UART 接收 4 个字节第 1 字节是状态字节包含了 DRDY 标志和数据报警位后面 3 字节是 24 位转换结果按二进制补码格式。PIC 端接收代码大致是这样uint8_t ads_read_raw(int32_t *value) { uint8_t status; uint32_t tmp; uart1_send_byte(ADS_CMD_RDATA); // 读数据命令 status uart1_receive_byte(); // 状态字节 tmp ((uint32_t)uart1_receive_byte()) 16; tmp | ((uint32_t)uart1_receive_byte()) 8; tmp | ((uint32_t)uart1_receive_byte()) 0; if (tmp 0x800000U) { *value (int32_t)tmp | 0xFF000000U; // 符号扩展 } else { *value (int32_t)tmp; } return status; }这里有个细节每次读完数据后最好检查一下状态字节里的 DRDY 位是不是正确处理。如果在两次读数据命令之间 ADC 还没有完成一次新的转换读回来的值可能和上次一样主控拿到重复数据容易误判。我的做法是在 UART 读数据前先用 GPIO 轮询 ADS122U04 的 DRDY 引脚拉低后再发命令保证每次拿到的都是新样本。3.2 PT100/NTC 温度换算算法拿到 24 位原始码后先算 RTD 的电阻值。比例式测量下计算公式是这样的[ R_{RTD} \frac{code}{0x7FFFFF} \times \frac{V_{REF}}{PGA \times I_{IDAC}} ]因为我用外部 RREF 做参考(V_{REF} I_{IDAC2} \times R_{REF})在 IDAC1 和 IDAC2 电流匹配良好的前提下电阻计算直接变成[ R_{RTD} \frac{code}{0x7FFFFF} \times \frac{R_{REF}}{PGA} ]这省掉了对激励电流绝对精度的依赖电流源漂移的影响降到最小。C 语言实现float rtd_resistance(int32_t code, float rref, float pga) { return ((float)code / 8388607.0f) * rref / pga; }接下来做 PT100 的阻值到温度换算。工业上常用 ITS-90 标准查表但工程上用 Callendar-Van Dusen 多项式就足够了0°C 以上范围精度可以做到 0.01°C 量级[ R_t R_0 \times (1 A \times t B \times t^2) ]其中 (A 3.9083 \times 10^{-3})(B -5.775 \times 10^{-7})(R_0 100\Omega)。反解二次方程求温度 tfloat pt100_temp(float r) { const float R0 100.0f; const float A 3.9083e-3f; const float B -5.775e-7f; float a B; float b A; float c 1.0f - r / R0; return (-b sqrtf(b * b - 4.0f * a * c)) / (2.0f * a); }用 138.51Ω 代进去算出来约 100.1°C符合 PT100 在 100°C 时的标准值。负数温度范围这个公式误差会稍大如果需要测 -50°C 以下建议直接用查表法或者更高阶多项式这里不再展开。NTC 那边我用的是 B 值公式。以 10kΩ25°C 的 NTC 为例B 值通常取 3950[ T \frac{1}{\frac{1}{T_0} \frac{1}{B} \times \ln\left(\frac{R_T}{R_0}\right)} - 273.15 ]其中 (T_0 298.15K)(R_0 10k\Omega)。这里的温度单位是摄氏度注意先转开尔文再算别把 25°C 直接带进去。3.3 多点扩展与数据上报单一的 ADS122U04 有 4 路模拟输入可以配置成 4 路单端或者 2 路差分。我在项目里用了 3 路AIN0/AIN1 接 PT100 三线制AIN2/AIN3 分别接两个 NTC 做风管温度和回风温度监测。这样一颗 ADC 就能覆盖一个小型 AHU空气处理机组的核心测点。如果测点超过 4 路还可以用多颗 ADS122U04 挂到同一条 UART 总线上吗严格说不行ADS122U04 不是多地址总线架构一个 UART 口只能挂一颗。扩展方式有两种一是 PIC18F66K40 有多路 UART每路挂一颗二是用 GPIO 模拟片选逻辑来控制不同 ADC 的供电或复位分时读取。不过这种方式时序麻烦我一般推荐前者。主控端的数据上报我按 Modbus RTU 的帧格式封装。每 500ms 主动上报一帧地址码、功能码、4 个通道的温度值每个 2 字节0.01°C 分辨率、CRC16 校验。上位机或者 PLC 收到帧直接解析不用关心底层模拟链路这对后面接楼宇自控系统非常友好。4. 工业与 HVAC 场景的工程细节4.1 长线传输与抗干扰设计HVAC 项目里风管温度传感器经常装在几十米外的管路上采集板和主控又可能跨电控柜。这种场景下UART 的 TTL 电平直接拉长线是行不通的。我的做法是在采集板上加一颗 RS-485 收发器比如 ISL3170E把 UART 转成 485 差分信号双绞线到主控端再接一颗 485 转 UART。RS-485 在 9600 波特率下传输几百米毫无压力而且共模抑制能力远强于单端信号。抗干扰不只是换电平标准。工程现场最头疼的是传感器电缆和动力电缆走同一个桥架变频器一启动温度读值就开始跳舞。预防措施有三条传感器信号线用屏蔽双绞线屏蔽层单端接地接在采集板的地上不要两端都接地避免构成地环路。采集板的供电用 DC-DC 隔离模块把模拟电源地、数字电源地、485 通信地三者隔离开。PCB 入口处加 TVS 管和共模电感防止雷击浪涌和传导骚扰直接打坏 ADC 输入引脚。关于屏蔽层接地我特意提一下很多新手在这里翻车如果屏蔽层两端都接地工频地电位差会在屏蔽层上形成电流反而感应出噪声。单端接地的效果实测下来比双端接地好一个数量级。4.2 与 PID 控制器联调的经验做 HVAC 和工业温控ADC 采集只是前端真正让系统稳定运行的是后级的 PID 调节。很多朋友问“温度 PID 波动、温差大到底怎么调”我结合这次项目聊几个实际经验。第一个问题是采样噪声造成 PID 输出抖动。处理办法是分层滤波硬件端靠 ADS122U04 内置的 delta-sigma 数字滤波器和我的 RC 低通软件端再做一次一阶低通滤波。一阶低通系数不用太激进比如采样周期 500ms 时alpha 取 0.1 就足够把末位抖动磨平。注意滤波会引入滞后所以滤波时间常数不要超过系统纯滞后时间的十分之一否则温度响应会变得迟钝。第二个问题是温度系统的大惯性。风管、水温和房间温度都是大时间常数对象温度从设定点偏离后要几十秒甚至几分钟才能看到反馈。这类系统 PID 参数的经验是比例增益不要太大积分时间要长微分作用能不用就不用或者只在设定值变化时用微分先行。我调试时常用“临界比例度法”先把积分和微分关掉调大 P 让系统出现等幅振荡记下振荡周期和临界增益再按 Ziegler-Nichols 经验公式整定比瞎试参数快得多。第三是温差大的快速修正。如果实际温度和设定温度差很大比如启动阶段差 20°C 以上PID 输出很容易饱和导致温度过冲。我的处理方法是加入积分分离偏差绝对值大于 5°C 时积分项暂时冻结只用比例和微分偏差进入 5°C 以内再恢复积分作用。这样既保留了快速升温能力又避免了积分饱和引起的过冲。数据采集端还有一个容易忽略的点ADC 的更新速率要和 PID 控制周期匹配。ADS122U04 在 20SPS 下一个完整转换周期是 50ms而我 PID 控制周期是 500ms等于每个控制周期内有 10 个采样点可以做平均冗余感很强。如果反过来控制周期比采样周期还短PID 拿到的是陈旧数据参数再准也没意义。5. 调试实录故障排查与校准5.1 常见问题速查表这套系统我在实验室和现场调试时遇到过一些典型问题整理成一张速查表方便同行直接对号入座故障现象可能原因排查与解决办法读数始终接近满量程0x7FFFFFPGA 增益过高输入超出参考电压范围检查 PT100 阻值、激励电流和 RREF 比值降低 PGA 或增大 RREF读数保持为零或负满量程AIN0/AIN1 接反、传感器断路交换差分输入用万用表量传感器阻值确认通断温度值漂移慢几个小时后仍在变化电路自热、LDO 热漂移、参考电阻温漂上电预热 15 分钟再校准检查 PCB 散热路径RREF 换低温漂型号数值在某个范围内来回跳电源去耦不足、屏蔽层接地错误增强 AVDD 滤波检查屏蔽层是否单端接地RC 滤波是否对称485 通信偶发错误帧波特率偏差、终端电阻缺失测量两主从机波特率误差在链路两端各加 120Ω 终端电阻低位持续跳动 2~3 个码参考电容离 REP/REFN 引脚太远把 1µF 参考电容移到 ADC 引脚 5mm 范围内加 0.1µF 高频去耦NTC 通道读数偏高上拉电阻精度不足、B 值参数不匹配换 0.1% 精密上拉电阻按厂家手册核 B 值范围里面第 6 条最容易被忽视。delta-sigma ADC 的参考输入不是一个纯直流负载它会以采样频率抽取电荷如果参考电容离引脚太远回路电感一大会让参考电压出现微小跌落反映到输出就是低位数跳动。这种问题示波器都未必能一眼看出来用精密电阻箱做标准输入后一看码值跳动就明白了。5.2 精度校准与自检流程ADS122U04 出厂精度已经不错但系统级误差来自传感器精度、RREF 精度、PCB 热电势和 ADC 失调。我的做法是上电后做两点校准然后把这些修正系数存进 PIC 的 EEPROM。校准工具只需要一个精密电阻箱0.01% 精度或者更低成本的精密电阻组件。把 PT100 端子断开接上电阻箱设置电阻箱为 100.00Ω对应 0°C记录 ADC 计算电阻值 R_cal1得到零位偏移。设置电阻箱为 138.51Ω对应 100°C记录 R_cal2得到增益斜率。固件里保存两个修正系数offset R_cal1 - 100.0gain_corr (138.51 - 100.0) / (R_cal2 - R_cal1)。实际运行时先算出原始电阻 R_raw再用 (R_{corr} (R_{raw} - offset) \times gain_{corr}) 修正然后才做温度换算。校准操作要等设备在恒温环境里预热 15 分钟再进行否则 LDO 和电阻的温漂会让校准点偏离。更进一步的验证是用 ADS122U04 内置的温度传感器做自检。每次上电后读一次内部温度如果读值和环境温度相差超过 5°C说明 PCB 板温异常或者 ADC 内部基准有问题固件里可以触发报警。这个自检不额外占硬件成本我强烈建议加上。我个人在实际项目中的体会是ADS122U04IPWR 和 PIC18F66K40 这套组合真正把“模拟测量”和“逻辑控制”解耦了。ADC 靠近传感器数字线远距离传回MCU 专注协议和逻辑整个过程每一步都能被观测和校准。调试时最让我省心的是所有模拟链路的细节都被芯片内部消化了大半工程师可以把精力花在系统级的滤波、校准和 PID 整定上。最后再分享一个小技巧给每块 PCB 板上留一个 6 针的 ISP 烧录座同时把 UART 的 TX/RX/GND 引到同一个端子。样机阶段这六根针能救命烧录、调试、抓日志全走它等量产做成治具接口效率能提升一大截。这套架构我已经做了变体用到蒸汽流量补偿和电机绕组测温上后续有空再单独写一篇讲讲热电偶冷端补偿的坑。
企业数字化 ERP 产品动态
相关推荐
Figma设计稿转LVGL嵌入式UI:自动化链路与工程实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44
ADS122U04IPWR+PIC18F56K42实现0.1℃工业温度测量 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44
工业温度测量信号链设计:ADS122U04与PIC18F57Q43实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:35:44
否定之否定规律的底层本质| 赵杰 | 量子哲学 作者:赵杰清华大学硕士、微美全息云科技(NASDAQ:WIMI)董事长、微算法科技(NASDAQ:MLGO)董事长、育杰奖学金创始人一、爱子论核心公理(一切“肯定、否定、否定之否定”的量子本体根基… · 2026/11/5 7:57:53
jvm中的强软弱虚4种引用类型与gc的关系 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 7:57:53
小白程序员轻松入门大模型,AI大数据开发工程师进阶指南 本文深入剖析AI大数据开发工程师的核心能力与岗位需求,对比传统大数据工程师,指出Spark/Flink等基础技能已不再是优势。文章详细解析了三类典型岗位(业务型、模型导向型、AI数据基础设施工程师)的选拔逻辑,并总结了企业… · 2026/11/5 7:57:53
FHE层级 全同态加密的概念同态:密文计算的结果解密后,等于明文计算的结果。即 Dec(Enc(a)⊕Enc(b))ab全同态:支持任意深度的加法和乘法运算(不仅是单一操作,而且可以无限次组合)。第一层:密码学基础与底… · 2026/11/5 7:57:53
Spring系列02:BeanFactory 与 ApplicationContext 这题你大概率只答了一半
面试八成会被问:「BeanFactory 和 ApplicationContext 有什么区别?」
多数人的回答停在「ApplicationContext 更高级、功能更多」,再往下问「多在哪」「为什么 Boot 默认用它」「两者启动行为有啥不同」,就… · 2026/11/5 7:56:53
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
多智能体协作系统架构设计与实践优化 1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39
大模型系统性入门实战指南:从原理到部署微调的全链路路线 提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39
鸿蒙文件系统沙箱机制解析与开发实践 1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38