news 2026/9/27 3:24:57

PMS150C OTP单片机开发实战:仿真、烧录流程与避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PMS150C OTP单片机开发实战:仿真、烧录流程与避坑指南

做小家电、玩具、灯控这类成本敏感的MCU项目,应广PMS150C是个绕不开的选项。一颗OTP单片机做到几毛钱的价位,还把功耗压得很低,这让它在大批量的消费电子产品里非常吃香。但便宜有便宜的代价——PMS150C是OTP芯片,程序烧进去就出不来了,烧错一颗废一颗,不像Flash单片机那样能反复擦写。更麻烦的是,它的仿真器、烧录流程和常见的STM32、51那套玩法完全不同,很多从ARM转过来的工程师第一次上手就翻车。这篇文章我会从OTP芯片自身的特性讲起,把仿真器怎么用、烧录流程怎么走、烧录前后有哪些坑,一条条梳理清楚。

1. 先搞清楚PMS150C到底是个什么样的芯片

1.1 "OTP"这三个字母背后的代价

OTP是One-Time Programmable的缩写,也就是一次性可编程。对单片机来说,最直接的影响就是程序存储器只能写一次,写完就永久固化,不能擦除重写。这个特性决定了整个开发流程都不能照搬Flash MCU的习惯。很多人第一次拿到PMS150C,还是会下意识地"先烧一版看看效果",结果烧完发现IO初始化顺序写反了,只能扔掉芯片,重新拿一颗新的再来。

PMS150C是应广PMS150系列里的一款低成本8位单片机,定位非常明确:引脚少、程序空间小、价格极低、功耗低。常见封装也就是SOP8、SOT23-6这类很小体积,板上占不了多大地方。它的OTP空间一般在K级别,RAM也只有几十个字节,放在今天这个动辄几十K Flash、几十K RAM的单片机圈子里,确实显得很寒酸。但实际产品里,像LED灯控、小夜灯、电子玩具、电动牙刷的简单控制、小家电的定时逻辑,根本用不了那么多资源。相反,几毛钱的成本、足够低的待机电流、上电就跑的启动速度,才是这类项目的核心诉求。

我见过不少工程师第一次评估PMS150C,第一反应是"这玩意儿能干啥"。其实换个角度想,一颗芯片用在几十块钱的产品里和用在几块钱的产品里,对成本的要求完全不是一个量级。PMS150C要解决的就是"功能简单、成本敏感、出货量巨大"那一类场景,它的存在本身就是为了让BOM成本能再压下去几毛钱。搞清楚这个定位,你就明白为什么这么多人一边骂它不顺手,一边又离不开它。

1.2 为什么这么抠门的芯片还一堆人用

抛开技术情结,纯粹从产品角度讲,PMS150C能成为爆款是有原因的,至少有这么几点是实打实的:

  • 成本优势。单价够低,量产几千片、几万片的时候,每颗省下来的钱会直接反映在利润上。这也是OTP芯片最大的生存空间。
  • 功耗优势。小家电和电池供电设备非常看重待机电流,PMS150C这类芯片可以把睡眠功耗做得很低,同时内部RC振荡器可以直接跑,省掉一颗外部晶振,又省了一笔元件费。
  • 启动速度快。上电之后几乎没有等待,代码很快就能跑起来,这对一些需要快速响应的交互逻辑很重要。大系统还在等时钟稳定,它已经把LED点亮了。
  • 供应链和生态成熟。应广这颗料用了很多年,市面上烧录座、仿真器、技术资料都相对好找,就算你是第一次用,也能搜到不少前辈踩坑的帖子。

但这不代表它好用。OTP属性会放大每一个开发阶段的失误,仿真器使用方式又和JLink烧STM32那种"插上就干"的体验完全不同。我见过有人仿真跑得好好的,烧录到真机却当场翻车,还有人一次性烧录一百颗,结果一大半芯片上电没反应,最后发现是烧录软件的配置选了默认值,把代码保护位和校准字处理错了。这些问题都不是芯片本身复杂,而是你还没意识到OTP流程的每一步都不可逆。

2. 开发环境与仿真器:想少烧废芯片,先在这里下功夫

2.1 应广的IDE和mini-c语言

应广的开发工具链是自家一套,IDE、编译器、烧录软件都有专门的工具,不能拿Keil直接编译PMS150C的工程。开发语言支持汇编,也支持一种类C的mini-c。mini-c不是完整的C语言,它为了适配小存储空间的单片机,砍掉了很多标准C特性,比如动态内存分配、递归、浮点运算这些,基本上都不建议在代码里出现。写代码的时候一定要克制,能用查表解决的问题就别写一堆数组,能用一个字节解决的标志位就没必要定义成int。

下面是一个简单到不能再简单的点灯示意代码,方便你理解工程大概长什么样。注意,不同版本的IDE、不同芯片型号,头文件和寄存器名字可能有差异,别直接抄进你的工程,我只是用来演示流程。

// PMS150C 点灯示意代码(具体寄存器以官方头文件为准) #include "extern.h" void main(void) { PAC |= 0x01; // PA0设置成输出 while (1) { PA0 = 1; // 亮 _delay(1000); PA0 = 0; // 灭 _delay(1000); } }

这里的PAC是端口方向控制寄存器,PA是端口数据寄存器,_delay是应广工具链提供的延时写法。你在实际工程里会用到一个官方提供的头文件,里面把各个寄存器和位操作都定义好了。刚开始不建议自己硬记寄存器地址,打开头文件对着看比什么都强。

2.2 先分清"仿真器"和"烧录器"

很多人的第一个坑就是把仿真器和烧录器当成一回事。在STM32的世界里,JLink既能仿真又能烧录,所以大家形成了惯性思维。但PMS150C这类OTP芯片的生态里,仿真和烧录通常是两个设备,或者至少是两种完全不同的操作模式。

仿真器连的是PC和目标板,中间会有一颗仿真专用的芯片。这颗芯片不是量产的OTP版本,而是可以被反复烧写、支持调试功能的芯片。你在仿真器上可以单步、打断点、看变量、观察IO变化,开发阶段的绝大部分调试都靠它。烧录器则完全不同,它是用来把代码写进真实的OTP芯片里的,靠烧录座或者夹具接触到芯片引脚,烧录完成之后,这颗芯片就是产品的一部分,再也不能改。

这两个环节为什么要分得这么清楚?因为仿真器里跑得好的程序,换到真机上不一定表现一致。仿真芯片和真机OTP芯片在电气特性、上电时序、引脚驱动能力上都有细微差别,仿真器本身还可能引入额外的电容和上拉。所以说白了,仿真只是帮你验证逻辑思路,烧录才是决定产品生死的一步,两者千万别混着理解。

顺便提醒一句接线的事:接到目标板之前,先确认仿真接口的电平和电源方向。PMS150C这类小芯片供电范围耐受力有限,接反了轻则仿真器锁死,重则直接把芯片打穿,那就不是废一颗芯片的问题了。

注意:仿真器和烧录器是两个概念,开发调试用仿真,量产编程用烧录,千万不要用烧录器强行连接目标板反复调试,OTP芯片经不起这么折腾。

2.3 仿真时的几个操作习惯

既然仿真可以反复来,那就把能调的都放在仿真阶段解决。我的习惯是,任何代码改动,先在仿真器上把逻辑跑通,确认IO状态和时序都符合预期,才会考虑烧录到真机。仿真阶段的几个细节值得注意:

第一,时钟配置尽量和真机保持一致。PMS150C可以用内部RC振荡器,也可以用外部晶振,仿真器默认的时钟未必和你产品上实际用的时钟一致。如果你最后用的是内部RC,仿真时也把时钟源切到内部RC,避免出现"仿真时串口波特率是对的,烧录到真机就乱码"这种尴尬事。

第二,仿真的时候要模拟接近真机的负载条件。很多IO口直接驱动LED、三极管、蜂鸣器,仿真芯片的驱动能力和真机不完全一样,如果仿真器上带了大电阻上拉,某些下拉不足的IO问题就暴露不出来。所以目标板上的电阻、电容、外部电路尽量都贴上去,仿真才能更接近现实。

第三,仿真通过不代表真机通过,特别是涉及上电复位、低压复位、休眠唤醒这类场景。仿真器是被调试的一方,它的上电过程和你产品实际的上电过程差别很大,很多复位毛刺问题只会在真机上复现,仿真阶段根本看不到。这个后面我会专门展开讲。

3. OTP烧录全流程实战:烧废一片芯片以后,我总结出来的步骤

3.1 烧录前必须检查的几项

有一次我心急,编译完直接打开Writer烧录,结果芯片放进去烧完,上电测试完全没反应。查了半天发现工程里用的是PMS150C,烧录软件里选的却是另外一款型号,程序写入的配置完全不匹配。那次之后我给自己定了个规矩,烧录之前必须把下面几项逐个过一遍:

  • 芯片型号和封装。烧录软件里选型一定要和实物一致,烧录座的规格也要匹配。封装不同,引脚间距、1脚位置都不一样,硬塞进去很容易烧错位置。
  • 程序空间占用。编译报告会显示OTP占用比例,烧录文件大小一定要小于芯片的OTP容量。有人以为编译器会拦截超容量的代码,实际上有些配置下它只是警告,生成的文件却是截断的,烧进去就是一段残缺程序。
  • 代码保护位。PMS150C这类芯片一般都有代码保护选项,量产时一定要打开,防止程序被读走。但要明白,开启保护之后,芯片里就读不出原始代码了,这个不是故障,是正常现象。
  • 校准字设置。内部RC振荡器在不同芯片之间存在频率偏差,如果产品里用了串口、PWM这类对时间精度有要求的逻辑,就得在烧录流程里写入校准字。有些烧录软件会自动读取并写入校准值,有些需要手动指定,具体看界面提示。
  • 文件版本管理。烧录软件里加载的文件名一定要包含版本号或日期,比如app_v1.2_20250101.bin,千万不要用那种普普通通的build.bin,不然隔两天你自己都分不清烧的是哪一版。

3.2 Writer软件烧录的完整流程

应广的烧录软件一般叫Writer,界面不会太复杂,但操作顺序很有讲究。下面是一套比较稳妥的流程:

  1. 安装好烧录器驱动,把烧录器通过USB连到电脑,确认设备能被识别。
  2. 打开Writer,在芯片型号里选PMS150C,这一步不要凭记忆,对着芯片丝印确认一遍。
  3. 加载编译生成的烧录文件。留意软件提示的文件大小和芯片容量,报错就别继续。
  4. 配置烧录选项。打开代码保护,打开烧录后校验,校准字按需设置。
  5. 把芯片放进烧录座,1脚对准烧录座上的标记,轻轻压下压杆,确保芯片引脚和触点完全贴合。
  6. 点击烧录按钮,观察进度。烧录过程可能几秒,也可能十几秒,取决于文件大小和烧录器速度。
  7. 烧录完成之后看日志。正常会显示PASS或者校验通过,如果出现FAIL就停下来,别急着取片,先看错误代码。
  8. 取片,戴好防静电手环,把烧录好的芯片放进标记为"已烧录"的容器里。

这套流程看起来简单,但每一步都有用意。比如"打开烧录后校验",OTP芯片不支持擦除重写,烧完读一遍,确认写入内容和源文件一致,是最后一道防线。再比如"1脚对准",很多烧录座上有明显的圆点或缺口标记,但作业人员一忙起来就容易忽略,最好的办法是在烧录座旁边贴一个方向指示图。

3.3 烧录完成后别急着贴板,先验证

烧录软件提示PASS,只是说明写入和校验没问题,不代表这颗芯片在你的电路板上一定能正常工作。我见过烧录校验全过、上电后完全没反应的案例,原因是芯片的某个IO口默认状态和外部电路冲突,代码一启动就把自己拉死了。这种问题在烧录座上是发现不了的,因为烧录座没有连接你的目标电路。

所以,批量烧录之前,至少要抽出一颗烧录好的芯片,装到实际PCB上做一轮完整测试。测试内容不用多复杂,但一定要覆盖这几个方向:

  • 上电后测量整板电流,确认程序跑起来,没有异常短路;
  • 用示波器看关键信号波形,比如LED驱动脚、PWM输出脚、蜂鸣器驱动脚,确认频率和占空比正常;
  • 测试供电电压边界。把电源从标称电压往下拉,看看芯片在低压时是否出现复位或不稳定的情况;
  • 做几次快速通断电测试,确认每次上电都能正常启动,没有偶发死机。

OTP芯片一旦烧录,就无法回到裸片状态,所以"烧录成功后测试"不是可选项,是必选项。你可以在开发阶段省掉很多不必要的流程,但这个环节绝对不能跳。

4. 仿真正常但一烧录就翻车:常见问题排查实录

4.1 为什么仿真和真机是两回事

这是OTP开发最折磨人的地方。你辛辛苦苦在仿真器上把逻辑调到完美,烧录到真机却出现各种奇怪现象,这时候要做的第一件事不是怀疑芯片坏了,而是列出"仿真环境和真机环境之间的差异"。

最核心的差异就是存储介质。仿真时程序跑在仿真器的RAM里,或者仿真专用芯片里,而真机程序是从OTP里读出来的。OTP的读取时序、供电需求和仿真环境是不一样的,某些只在OTP读取时才会出现的边界问题,仿真根本复现不了。其次是电气环境差异,仿真器连在目标板上,本身就是一个额外的电气节点,它可能掩盖信号的毛刺、改变IO的上升沿速率、甚至给IO口提供了一个意外的上拉路径。这些差异在低频逻辑电路里问题不大,但一旦涉及串口通信、PWM调光、触摸检测这类对时序敏感的模块,就可能放大成肉眼可见的故障。

所以我的态度是:仿真解决"逻辑对不对"的问题,真机解决"物理上行不行"的问题。仿真通过之后,第一次烧录真机一定要当成一次正式测试来做,别抱着"肯定没问题"的心态。

4.2 烧录过程报错的排查表

烧录失败是最常见的翻车现场,而且往往不是芯片坏了,是操作或环境问题。我整理了一个排查表,按这个思路去查,大部分问题几分钟内就能定位。

现象可能原因处理方法
芯片识别不到芯片方向放反、引脚接触不良、驱动未安装检查1脚方向,清洁烧录座触点,重新安装驱动
烧录中途失败供电电压不稳、USB线接触不良、烧录器线材老化换一根质量好一点的USB线,检查电源,换烧录座试
校验失败接触电阻过大、芯片已烧录过、代码保护已开启清洁触点重新烧录,换一颗新芯片确认
芯片能烧录但不启动复位脚悬空、电源没有去耦电容、校准字缺失检查硬件电路,检查烧录选项中校准字配置
同一批芯片部分失败烧录座弹片磨损、芯片来料批次问题清洁烧录座,抽样测量芯片VDD/GND阻值

这里面最容易忽略的是烧录座弹片磨损。烧录座本质上是一个反复使用的机械夹具,压了几百次之后,弹片接触力和接触面积都会下降。接触电阻一大,烧录信号就会衰减,现象可能是"时而成功时而失败",或者"同一颗芯片第一次校验失败,重新压一次又成功了"。遇到这种飘忽不定的问题,先换一个烧录座排除机械因素,不要死磕芯片。

4.3 烧录后芯片上电就复位的坑

还有一个很隐蔽的坑和低压复位有关。PMS150C内部有LVR电路,用来检测电源电压,电压低到阈值以下就触发复位。这个阈值一般可以通过烧录选项配置,但如果配置和你的实际供电环境不匹配,就会出现"上电正常,一跑起来就复位"的问题。

举个例子,电池供电的产品,新电池电压可能4.2V,用到一半降到3.6V,接近LVR阈值时,芯片可能会因为电压抖动反复复位,表现为LED闪烁异常或者程序逻辑混乱。如果你把LVR阈值配得太低,电压跌到很低的时候芯片可能已经处于不确定状态,同样有风险。正确的做法是根据产品的实际供电范围,在仿真阶段就把几种LVR档位都测一遍,烧录时选择最稳定的一档。

这个坑在仿真器上极难发现,因为仿真器有稳定的供电,不会模拟出电池电压缓慢下降的场景。必须拿真机实测,把电源从高到低慢慢拉,观察芯片是否存在没到设定电压就复位的现象。

4.4 校准字缺失导致的功能异常

内部RC振荡器有着天生的频率离散性,同一批芯片,有些内部时钟偏快,有些偏慢,PMS150C也一样。芯片出厂时一般会带一个校准值,烧录软件可以在烧录过程中把校准值写入芯片指定位置,程序启动后读到这个值,用它来修正内部RC频率。

如果你没用串口、没用PWM,只是简单点灯,校准字缺不缺失可能看不出来。但一旦涉及通信波特率或者精确延时,问题就暴露了:一颗芯片串口收发正常,另一颗同型号芯片却乱码,拿示波器一看,时钟频率差了百分之几。这种问题排查起来特别费劲,因为代码、硬件看起来都没有问题,换一颗芯片又好了。

解决办法是在烧录流程里明确加上校准字操作。不同版本的Writer界面不一样,有的在烧录配置项里勾选"自动校准",有的需要单独执行一次"读取校准值再烧录"的操作。批量生产之前,建议随机抽几颗芯片,烧录后实测输出频率,确认校准字真正生效了再放量。

5. 批量烧录与生产环节的实战经验

5.1 先做"烧录验证程序"

很多人量产时直接烧正式程序,发现一批芯片有问题,又说不清是芯片问题还是烧录问题。我自己的做法是,进入批量生产之前,先准备一个非常简单、功能极其明确的"烧录验证程序"。

这个程序不需要实现产品功能,只要做到三件事:上电后点亮一颗LED、按照固定频率闪烁、把程序版本号通过IO口脉冲输出出来。烧录完验证程序之后,拿示波器确认LED闪烁频率符合预期,基本上就能判断芯片、烧录座、烧录参数这三者有没有问题。确认没问题,再批量烧录正式程序。整个过程也就几分钟,但能帮你把"芯片来料坏"和"烧录设置错"这两类问题快速区分开。

有一次我发现某一批芯片烧验证程序时,有大约5%的芯片没有正常闪烁。换了一个烧录座之后,坏片率直接降到零。如果没有验证程序这一步,我大概会以为是正式程序的问题,然后陷入无休止的调试循环。

5.2 生产流程里的防呆设计

批量烧录最怕两个问题:混料和漏烧。OTP芯片不能擦除重写,一旦烧错版本,整批芯片可能全部报废,这个损失比Flash芯片严重得多。所以生产现场一定要有防呆设计。

我建议至少做到以下几点:一是烧录软件固定参数后,把配置界面截图贴在工位上,作业员每换一个型号都要对照确认;二是未烧录芯片和已烧录芯片分区域存放,用不同颜色物料盒区分,避免拿错;三是烧录座旁边画一个1脚方向图,越直观越好;四是大批量生产时,安排首件确认环节,烧录完首件先做功能测试,再放量继续。另外防静电措施不能省,OTP芯片引脚很细,静电打一下很可能造成隐性损伤,表面上看烧录正常,实际到客户端用一阵子就出问题。

5.3 烧录座和线材维护

烧录座属于易损件,这个很多人一开始没概念。它的弹片结构决定了它会在一次次压接中逐渐磨损,接触电阻会变大,最后表现为烧录成功率下降。我一般建议一个烧录座压接几千次之后就定期更换,不要等烧录大量失败才去怀疑它。

平时维护也很简单:定期用无水酒精清洁烧录座触点,去除氧化层和灰尘;不使用时用盖子或防尘罩盖住;不要把烧录座放在潮湿或粉尘大的环境里。另外烧录器到电脑之间的USB线、目标板到烧录器之间的线材也会老化,遇到"烧录速度突然变慢""烧录经常失败"这类问题,换一根线试试,成本最低但经常能解决问题。

最后分享一个我自己的真实经历。第一次用PMS150C做项目时,我图快跳过了仿真,直接拿真机烧录测试,结果在IO口初始化顺序上连续废掉了四颗芯片。从那时候起我养成了一个非常死板的习惯:任何代码改动,先仿真,再烧录,烧录之前把烧录软件里的每一项配置通读一遍,量产之前再做十片小批验证。OTP开发的难度不在于技术复杂,而在于它要求你每一步都不能犯低级错误。这个习惯后来帮我省下了非常多的时间和芯片,也希望你看完这篇文章之后,能少走我当年走过的弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 3:24:47

5个真实案例对比评测:一号网站建设网站制作为何成中小企业首选

5个真实案例对比评测:一号网站建设网站制作为何成中小企业首选 模板网站太丑不够用,这是很多老板找建站公司时最头疼的坑。市面上那些99元、299元的模板站,看着便宜,其实改个配色都得加钱,更别提做个性化功能了。 做过 一号网站建设网站制作 的老手都知道,真正能落地的方案,得靠 对比评测…

作者头像 李华
网站建设 2026/9/27 3:24:21

OrCAD Capture CIS入门教程:从原理图绘制到网表导出全流程

/* 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 3:24:18

中兴F50无线调试全攻略:解锁ADB调试与高级玩法

/* 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 3:24:11

2026最新做网站都需要什么工具?防坑指南与实战清单

2026最新做网站都需要什么工具?防坑指南与实战清单 找建站公司最怕什么?怕报价单上藏着坑,怕几千块的项目最后变成几万的无底洞,更怕网站上线三天就被挂马,SEO全废。很多SEO从业者接了单子才发现,自己根本不懂底层逻辑,客户一问服务器配置、SSL证书、数据库优化,只能含糊其辞,信任感瞬间崩塌。…

作者头像 李华
网站建设 2026/9/27 3:24:08

2026最新网站搭建招标方案避坑指南:3招搞定拖延症

2026最新网站搭建招标方案避坑指南:3招搞定拖延症 改个按钮颜色,建站公司拖一周才给回话?这种“需求黑洞”在河南的中小企业圈子里太常见了。别怪你脾气急,是传统的 网站搭建招标方案…

作者头像 李华
网站建设 2026/9/27 3:24:02

公司电商网站开发避坑指南:3步搞定不拖期

公司电商网站开发避坑指南:3步搞定不拖期 改个需求建站公司拖一周,这种憋屈感创业团队负责人太熟悉了。别急着换供应商,先看看这篇保姆级建站教程。我们拆解从0到1的完整链路,帮你把工期压缩一半。 运营目标与指标:别只盯着上线日期…

作者头像 李华