先说我为什么会在这颗芯片上栽过跟头去年给一个LED小夜灯项目做方案选型BOM成本卡得很死最后选的就是应广的PMS150C。当时手里同时用着STM32和义隆的片子想着这种几毛钱的OTP单片机应该也就那样结果从仿真器连接到第一次烧录踩了一整周的坑。这颗芯片本身不贵贵的是试错的时间成本。尤其你是从51、STM32这些Flash型MCU转过来习惯了一边烧录一边改代码的节奏碰到OTP芯片会非常不适应。应广PMS150C是一颗8位OTP单片机常见封装是SOP-8和SOT23-6程序空间只有1K×14位工作电压范围大概1.8V到5.5V内部RC振荡器最高可跑16MHz外设也就是GPIO、定时器、看门狗和IO中断这些基本配置。硬件资源可以说是精简到了极致但价格也低到了极致大批量采购折合几毛钱一颗在小家电、玩具、灯控这些赛道上非常能打。这篇内容就围绕我实际用PMS150C做开发的完整流程展开包括为什么选OTP、仿真器和烧录器怎么配合、烧录过程会遇到的坑以及我从失败案例里总结的排查思路。内容偏实操适合正在用或准备用应广PMS150C做方案的工程师也适合从ARM平台转过来想低成本量产的开发者。1. 为什么是PMS150C低价OTP单片机的典型应用与取舍1.1 一颗芯片两毛钱背后是整套流程的代价先说清楚一个底层逻辑OTP芯片能卖这么便宜不是因为它功能缩水而是因为它的存储介质是一次性可编程的结构简单、晶圆面积小、测试成本也低。PMS150C内部是1K×14位的OTP ROM一旦烧录完成程序就永远固定在里面没有擦除重写的可能。这就带来一个很直接的结果你的开发流程必须分成两个明显阶段——仿真调试阶段和量产烧录阶段。仿真调试阶段用的是仿真器代码跑在仿真器的RAM里可以反复下载、打断点、看变量不用担心写坏芯片等到代码全部验证通过才进入烧录阶段把编译好的程序一次性写进OTP芯片。如果这个顺序搞反或者觉得“我小心一点直接拿OTP当Flash用”最多烧三四次就会体会到什么叫“瓶子碎了才知道心疼”。我见过有新手直接把PMS150C当调试芯片用每次改一行代码就扔一颗芯片一晚上扔了十几颗最后算下来比用Flash型MCU还贵。1.2 什么项目适合选它什么项目别碰选PMS150C之前建议先对照一下自己的项目特性。我列几个典型的适配场景功能固定的消费类产品比如LED闪灯、小夜灯、电子玩具发声、电动牙刷控制。控制逻辑简单不需要复杂通信协议一个GPIO翻转加几个延时基本就能搞定。量产后方案基本冻结不需要OTA升级也不会有频繁的功能修改。BOM成本极度敏感单片机能省则省。反过来如果项目还处于原型频繁迭代阶段或者客户随时可能改功能需求OTP芯片会让你痛不欲生。每次改代码都要重新投料烧录芯片本身便宜但换来的物流、焊接、测试工时成本非常高。我个人的建议是如果产品生命周期内的固件修改预期超过两三次或者你团队目前对这套工具链还不熟先用仿真器把硬件和软件完全跑通再考虑量产。PMS150C这颗芯片的设计哲学就是“程序写完就别动了”适合的是成熟方案的批量复制不适合边做边改的敏捷开发。2. 开发工具链与常见误区仿真器和烧录器不是一个东西2.1 应广开发工具的标配组合刚接触应广MCU的人最容易混淆的就是仿真器和烧录器。这两个设备功能完全不同虽然它们长得有点像有的甚至集成在一个盒子里。一套完整的PMS150C开发环境由三部分组成官方IDE开发环境用于编写代码、编译、下载调试程序到仿真器应广的IDE和Mini-C编译器都能从官网下载体积不大。仿真器通常叫ICE通过排线连接目标板仿真器内部有一颗模拟芯片代码在仿真器里运行支持断点、单步、变量观察。它的作用是让你在没有真芯片的情况下把代码逻辑调通。烧录器Writer负责把编译好的程序烧进OTP芯片通过烧录座、烧录夹或ICP引脚连接芯片。仿真器解决“怎么把代码写对”的问题烧录器解决“怎么把程序固化到芯片”的问题。开发阶段反复使用的是仿真器到了量产阶段才用烧录器。2.2 “J-Link能不能烧PMS150C”这类问题的本质我经常在技术群看到有人问“J-Link能烧PMS150C吗”或者拿着ST-Link往应广芯片上怼。这类问题的根源是大家默认所有MCU都支持标准的调试接口但实际情况不是这样。PMS150C使用的调试和烧录协议是应广自己的IO引脚定义、时序、电平标准都和ARM的SWD/JTAG完全不兼容。J-Link、ST-Link这些工具是给ARM Cortex-M系列芯片用的插到PMS150C上根本识别不到。即使你想办法从物理层面接对了引脚协议不通依然白搭。所以别在通用调试器上浪费时间。PMS150C的开发和烧录老老实实用应广官方工具。如果你想用脱机烧录架也要先确认第三方烧录器是否明确支持PMS150C以及它是否保留芯片原厂校准数据这些细节后面细说。2.3 硬件连接的几个基本点不管是仿真器还是烧录器和目标板连接时都需要注意以下几点电源线和地线一定要接牢。仿真器可以通过USB供电也可以用目标板供电但两者之间一定要共地否则信号电平没法判定。信号线尽量短。仿真器和烧录器的下载频率不算高但如果排线拉得太长线间电容和干扰会导致通信不稳定。接触不良是最隐蔽的问题。烧录夹夹在芯片引脚上看起来夹住了实际上某根针没接触好烧录就会莫名其妙失败。我在调试阶段习惯在PCB上预留4到6个排针测试点把仿真器要用到的引脚引出来这样不需要每次都用烧录夹夹芯片引脚稳定性好得多。尤其是SOT23-6这种小封装引脚间距很小烧录夹稍微歪一点就短路。3. 仿真调试阶段把代码跑通再碰OTP3.1 工程建立与型号选择用应广IDE新建工程时第一步就是选择芯片型号。这里有个细节应广的产品型号很多PMS150C是其中一颗仿真器的目标芯片型号和IDE里的工程型号必须一致否则下载时可能报错或者代码行为不对。我用的开发语言是Mini-C也就是应广的C语言编译器。它支持常见的C语法但要注意一点Mini-C对C标准的支持是裁剪过的复杂的指针运算、结构体嵌套、动态内存分配什么的能不用就别用。PMS150C只有1K程序空间代码应该直奔主题把功能跑起来再说。新建工程后IDE一般会生成一个默认的启动文件和main函数框架。不要随便删启动文件里的初始化代码有些寄存器配置编译器已经帮你处理好了删了反而容易出现莫名其妙的问题。3.2 仿真器连接目标板的正确方式仿真器连接目标板时注意引脚映射关系。应广的仿真器通过一根排线接到PCB上的调试接口接口定义通常包括电源、地、数据、时钟、控制线。我第一次接的时候就犯了个低级错误把排线的方向插反了结果IDE提示芯片连接失败排查了半天才发现是插座的方向问题。很多应广的仿真器支持两种供电模式由仿真器供电或者由目标板供电。建议优先使用目标板自己供电仿真器只负责下载和调试信号。这样更贴近真实工作环境因为目标板的电源轨如果纹波大你在仿真阶段就能发现而不是等到烧录完才知道。但要注意仿真器连接到目标板之前先确认目标板的电源是否稳定。如果目标板本身短路或电压异常仿真器很容易被牵连损坏。我同事就烧过一个仿真器原因是目标板的电解电容装反了一上电直接把电量灌进调试接口。3.3 跑一个LED闪烁的实例用一段最简单的代码来演示PMS150C的开发逻辑。以下代码只是示意具体寄存器名称和引脚编号以官方头文件为准。#include PMS150C.h void main(void) { PAC 0b00000001; // 设置PA0为输出 while (1) { PA 0b00000001; // PA0输出高电平 _delay(100000); // 延时 PA 0b00000000; // PA0输出低电平 _delay(100000); } }PA是端口数据寄存器PAC是方向控制寄存器置1对应输出。这个代码实现的就是让PA0口上的LED循环闪烁。在仿真器里跑这个程序你会发现IDE可以设置断点、单步执行、实时查看PA寄存器的值。这个能力在真正调复杂逻辑时非常关键。比如说你用一个GPIO模拟某个时序协议就可以在电平跳变的地方打断点看寄存器状态是否符合预期。3.4 仿真阶段一定不能跳过的事很多人觉得LED闪了就万事大吉直接去烧录了结果烧完发现芯片工作不正常。问题就在于仿真阶段的验证不充分。我在仿真调试阶段至少会做这几件事用示波器或逻辑分析仪看实际信号波形。延时函数的循环次数和实际时间是不是对应肉眼看不出来波形一测就知道。如果发现时间偏长或偏短可以微调延时参数或者在代码里改用定时器实现精准延时。验证所有IO引脚的初始状态。PMS150C的IO在复位后是什么电平直接影响外部电路。比如你控制的是一个MOS管栅极复位瞬间如果IO是高电平负载就会意外开启。在仿真器里设置好IO初始状态能避免很多硬件上的隐患。验证低功耗模式。PMS150C在电池供电产品里经常要用睡眠唤醒功能仿真时用电流表监测整板电流确认睡眠电流在合理范围。这个步骤一旦跳过实际产品电池续航可能会远远达不到预期。3.5 仿真器替代不了真芯片的几个点仿真器虽然好用但它毕竟是模拟的和真实的PMS150C存在差异。最大的差异是IO驱动能力和复位时机。仿真器内部的核心芯片可能比PMS150C更强壮IO驱动电流、翻转速度、上电复位时间都和真芯片有细微差别。所以仿真阶段通过只能说明逻辑对不能代表电气特性没问题。尤其涉及外部负载驱动、电源时序、RC振荡器校准这几个方面最后还是要靠烧录真芯片来验证。我通常的做法是仿真器把逻辑功能全部调通之后烧录3到5颗真芯片在目标板上做信号质量、功耗、电压范围等实测全部通过之后才算这个版本真正可用。4. OTP烧录实操从接线到烧录完成的完整流程4.1 烧录前必须核对的清单OTP芯片烧录只有一次机会所以烧录前的准备一定要做足。我每次烧录前都会过一遍这个检查清单不管项目多急都不跳过IDE里选定的芯片型号是否是PMS150C工程编译是否零错误零警告。代码里关掉了所有调试相关代码比如打印调试信息的函数、多余的测试分支。Code Option配置是否和硬件设计一致包括IO初始电平、看门狗是否开启、复位脚是否复用。是否保留了芯片原厂校准区这个选项如果没勾选烧录软件可能会把整个OTP区域擦除重写导致芯片内部RC振荡器频率校准数据丢失。烧录文件路径和版本是否正确文件名里最好带日期和版本号避免烧错旧固件。烧录完成后是否自动校验没有校验的烧录等于没有烧录。这里面最容易被忽略的就是校准区。应广的芯片出厂前会把内部RC振荡器的频率校准数据存在OTP的特定位置如果你烧录时选择整片覆写这个数据就被抹掉了之后芯片运行频率可能偏差巨大串口波特率只是一个典型表现更麻烦的是硬件定时器计时不准整个程序行为都不对。4.2 烧录步骤与软件设置烧录PMS150C的完整流程并不复杂大体步骤如下第一步把写好的代码在IDE里编译成烧录文件。不同IDE版本生成的文件格式可能不同常见的有bin、hex或者应广自己的烧录格式。烧录软件一般都能直接识别。第二步打开烧录软件先选芯片型号PMS150C再导入刚才生成的烧录文件。如果软件提示型号和文件不匹配不要强行烧录先检查工程配置。第三步配置烧录选项。这一页最容易看花眼我的经验是逐个查看不清楚的选项去翻数据手册不要凭感觉勾选。特别是校准区的保留开关、代码保护位、低压复位电压等级这些直接影响芯片在目标板上的表现。第四步连接烧录器。如果是烧录座直接把芯片放进去注意芯片缺口方向和锁紧座的丝印对齐。如果是烧录夹夹住目标板上的PMS150C。第五步点击烧录观察进度。烧录界面会显示当前操作状态包括检测芯片、擦除、编程、校验等环节。任何一步报错都要停下来排查不要反复点击烧录按钮。第六步烧录完成后把芯片从烧录座上取下来装到目标板上电测试。这里有个细节不要只测一颗OTP芯片烧录成功率不会100%同一批芯片可能要烧录5到10颗确认大部分都能正常工作再进入批量烧录流程。4.3 烧录过程中的实时观察烧录过程中通过烧录软件的界面可以看到芯片当前的供电电流和电压状态。这个信息很多人忽略但它其实是判断芯片和烧录器接触是否良好的一个重要参考。比如某次烧录时我注意到软件显示电流忽大忽小明显不稳定结果发现是烧录夹夹持不稳。重新调整夹子位置后电流恢复正常烧录也顺利通过了。如果不看电流只盯着“烧录失败”的报错可能半天都找不到原因。另外要留意外部电路的影响。如果你的目标板上已经焊好了PMS150C并且通过PCB走线连了LED、电容、电感这类元件它们会参与烧录过程。比如板子上有个大电容上电瞬间会拉低电源电压导致烧录器供电不足烧录中途失败。遇到这种情况要么用烧录器的高精度供电模式要么先把影响大的外围器件隔离掉比如跳线断开或者不焊接。5. 烧录失败与开发期翻车案例排查5.1 现象一烧录器识别不到芯片这是最常见的问题排查思路从物理连接到软件设置逐层推进。先看烧录器有没有供电USB线和电脑接触是否良好再检查烧录座的芯片方向是否放反或者烧录夹是否夹到正确的引脚上。接着测量芯片电源引脚的电压确认芯片已经上电。SOT23-6封装只有6个脚电源和地挨得很近很容易出现焊接桥连。用万用表量一下VDD到GND之间的电阻排除短路问题。如果硬件都正常再看软件设置。烧录器驱动是否安装完整IDE和烧录软件的版本是否匹配芯片型号是否真的选到了PMS150C。我有一次折腾了一下午最后发现是两台电脑装了两个不同版本的烧录驱动设备管理里出现了冲突。5.2 现象二烧录报错但找不到原因烧录开始后没过几秒就报错这种情况下建议先看报错代码和提示信息。烧录器报错一般会给出具体原因比如“写操作超时”“校验失败”“芯片电压异常”等。如果是电压异常先量烧录器输出的VDD是否在芯片工作范围内。PMS150C的工作电压范围较宽但烧录器默认输出可能是5V如果你的PCB上有其他不耐压的元件可能会被拉低或者保护。这时可以把烧录电压调低一档试试。如果是写操作超时多数原因是时钟线或数据线接触不良。把线材换短一点或者重新插拔烧录夹用万用表从烧录器接口到芯片引脚逐段量通断。芯片引脚氧化也可能导致接触不良新片一般不会但如果板子放了很久或者经过回流焊引脚表面可能有残留物。线材也是容易忽略的点。有些排线看起来很新但内部已经隐断了尤其在公司里被反复弯折过的线。备两根排线排查时直接替换能省很多时间。5.3 现象三烧录成功但芯片完全不工作这种情况最打击人。烧录软件显示成功但焊到板子上程序毫无反应。先从硬件上找问题芯片供电是否正常VDD和GND之间有没有虚焊复位脚的电平是否在有效范围。PMS150C的复位脚如果被外部电路拉住了低电平芯片会一直处于复位状态代码根本跑不起来。用示波器看芯片上电瞬间的复位引脚波形确认有正常的复位释放过程。再看IO配置。代码里设定了某个引脚输出高电平但外部电路把这个引脚拉死了也会导致功能异常。比如驱动LED灯如果LED或电阻焊接错误这个引脚电流过大内部保护电路可能限制输出看起来就是程序没跑。最后重新检查Code Option配置。比如看门狗在烧录时被开启但代码里没有喂狗操作芯片每隔几十毫秒就复位一次功能自然不稳定。这种问题仿真时不明显因为仿真器环境里看门狗行为有时和真芯片不完全一致。5.4 现象四程序运行异常、时序和仿真时不一致这个坑我在做PMS150C的呼吸灯时遇到过。仿真时波形完美烧录到真芯片后LED闪烁频率明显变快。原因就是仿真器和真芯片跑用的时钟源不同或者RC振荡器的频率校准数据被覆盖了。排查方法很简单程序里定时翻转某个GPIO引脚用示波器测实际翻转频率再和代码里的预期值比较。如果有偏差检查烧录时是否保留了芯片校准区芯片的振荡器选择与Code Option是否一致内部RC振荡器的工作电压是否在推荐范围内。需要注意的是应广的RC振荡器频率本身会有精度范围加上温度、电压的变化实际频率会有一定偏差。如果产品对时序精度要求高代码设计时要留出余量或者用外部晶振方案但PMS150C本身资源有限外接晶振也不是所有封装都支持最好在设计初期就把精度需求考虑清楚。6. 给新手的几条经验这篇文章写到最后分享几个我实际踩坑之后的经验总结。不算什么教条都是真金白银换来的。第一把仿真调试当成和OTP隔离的独立阶段来对待。代码没在仿真器上完全跑通之前绝不去烧录。每次烧录前问自己一句这次烧进去万一不能改我能不能接受如果答案是否定的那就再回仿真器调一调。第二烧录前花两分钟核对烧录选项。很多翻车都源于一个没留意的勾选项。我习惯把烧录选项截图存档每个版本的代码配一份烧录配置说明跟烧录文件放在同一个文件夹里。第三第一次打样一定要留测试点。就算PCB面积再紧张也尽量留出排针孔或至少是测试焊盘把烧录接口引出来。用烧录夹硬夹小封装芯片偶尔能成功但次数多了总会遇到接触问题。测试点是花最少的钱省最多时间的做法。第四OTP芯片的验证要按批次抽测。不要测一颗没毛病就整批投产芯片出厂批次之间可能存在细微差异建议每个批次的芯片上电做一次电压范围和功耗抽测有问题早点发现。第五烧录文件管理要形成习惯。文件名带上版本号和日期比如PMS150C_夜灯_v1.1_20250510.bin烧录软件里的配置和源文件放在一起。OTP烧录不像Flash可以重来藏一个命名混乱的旧固件到了产线上就是个事故隐患。应广PMS150C这颗芯片给我的最大感触是它逼着你在开发流程里建立纪律。习惯了FlashMCU的随意迭代第一周会很不适应但当你把仿真和烧录彻底分开、把验证步骤严格执行起来它其实是一颗非常顺手的小芯片。希望这篇内容能帮你少走一些弯路把时间花在真正重要的功能调试上。
企业数字化 ERP 产品动态
相关推荐
STM32开源项目:实验室消防预警控制系统设计与实现 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:47:07
CoaXPress工业视觉系统设计避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:47:07
JavaWeb火车售票系统课设:源码+数据库+文档三件套交付指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:47:07
3个坑让你避开html成品模板备案陷阱完整流程揭秘 3个坑让你避开html成品模板备案陷阱完整流程揭秘 刚接手一个客户,对方拿着买好的 html成品模板 急得团团转。他说:“模板挺好的,怎么备案就卡住了?流程一头雾水,客服都答不上来。”这场景太熟悉了。很多老板觉得买个 html成品模板… · 2026/9/27 2:32:31
2026年专业等离子消毒机品牌推荐 精选优质实用靠谱品牌 2026年,室内空气健康需求持续升级——据全球权威健康机构公开数据,室内污染对居民健康的影响仍占空气污染总影响的60%以上,传统臭氧、紫外线消毒技术因存在“人需离场”、辐射超标等痛点,已难以适配当下多场景的“安全便捷康养”需… · 2026/9/27 2:32:25
Agent of Empires配置完全参考:config.toml与Profile关键设置详解 Agent of Empires配置完全参考:config.toml与Profile关键设置详解 【免费下载链接】agent-of-empires Manage multiple Claude Code, OpenCode agents from either TUI or Web for easy access on mobile. Also supports Mistral Vibe, Codex CLI, Gemini CLI, Pi.d… · 2026/9/27 2:32:19
Python手写机器学习算法:从逻辑回归到多分类实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 2:32:13
<数据集>煤矸石识别数据集<目标检测> 一、数据集简介
YOLO与VOC格式的煤矸石数据集,适用于YOLO系列、Faster Rcnn、SSD等模型训练,类别:Coal、Rock,图片数量3091。 文件中包含图片、txt标签、指定类别信息的yaml文件、xml标签,已将图片和txt标签划分为训练… · 2026/9/27 2:32:13
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01