3美分芯片的逆袭:应广单片机 PMS150C 驱动300颗LED自行车灯 + 完整入门教程

整理编辑:逐高电子技术开发部 / 日期:2026-6-29

 

64字节RAM怎么驱动300颗LED?应广PMS150C硬核玩法全解析

 

半导体行业观察 ⏱ 阅读约15分钟 应广MCU · 嵌入式

花3美分能买到什么?一颗泡泡糖?半颗螺丝钉?还是一个能驱动300颗RGB LED的微控制器?

一、缘起:一枚"一次性"芯片的意外走红

2019年,一个叫 Anders Nielsen 的丹麦嵌入式工程师在EEVBlog论坛上闲逛时,注意到了一个奇怪的小东西——应广PMS150C

这颗SOT23-6封装的小芯片,批量价格只要 3美分(约人民币2毛钱)。但代价很大:

1K Word OTP程序存储器
64 字节 RAM
8MHz 主频
79 条指令 RISC

在众多台系 MCU 厂商中,应广的知名度不算最高,但 PMS150C 凭借全球最便宜 MCU 这个标签,硬是在全球极客圈里杀出了一条血路。

二、硬核操作:64字节RAM驱动300颗WS2812B

2.1 不可能的数学题

WS2812B(NeoPixel)每颗灯珠需要 3 个字节。按常规思路:300 颗灯珠需要 900 字节。而 PMS150C 只有 64 字节 RAM。

Anders 的思路:不用 RAM 存数据。WS2812B 的时序窗口误差 ±150ns,每发送完一个灯珠的 24 位数据后,有空闲周期去计算下一个灯珠的颜色值。现算现发,不存储,直接算!

2.2 完整源码

以下是 PMS150C-rainbow 项目的核心代码(应广 Mini-C 语言,混合 C 语法、汇编指令和宏定义):

/* abnielsen.com 2019 */
#include "extern.h"
    .WRITER package 8, 1, 7, 5, 6, 4, 3, 2, 8, 0x3F, 0x3F, 4

byte    red, green, blue;
byte    mode, hueinc, firstinc;
EWORD   rgb;
word    pixels, firstPixelHue;
#define definedPIXELS 300

bit LED : pa.6;
bit BTN : pa.4;

send1 MACRO
    SET1 LED;
    .DELAY 5;
    $ LED low;
ENDM

send0 MACRO
    SET1 LED;
    .DELAY 2;
    $ LED low;
    .DELAY 2;
ENDM

void SendRGB (void) {
    DISGINT;
    .FOR bitno, 23,22,...,0
    if (rgb.bitno == 0) { send0; }
    else { send1; }
    .ENDM
    ENGINT;
}

void show (void) {
    rgb0 = blue;
    rgb1 = red;
    rgb2 = green;
    SendRGB();
}

void clearLED (void) {
    rgb = 0;
    pixels = 300;
    do { SendRGB(); } while (--pixels);
    .delay 2000;
}

2.3 数据类型陷阱

应广 Mini-C 的数据类型和标准 C 差异很大:

类型 大小 说明
bit 1 bit 位变量,可单独寻址
byte 8 bit 等同于 unsigned char
int 8 bit ⚠️ 注意!int 是 8 位,不是 16 位!
word 16 bit 无符号16位
EWORD 24 bit 扩展字
DWORD 32 bit 32位无符号

⚠️ 巨坑: 标准 C 中 int 是 16/32 位,但在应广 Mini-C 中 int 是 8 位。建议始终用 wordbyte 明确表达意图。

三、深度进化:Jay Carlson 的 SPI 桥接器与自行车灯

Anders的WS2812B项目让极客圈对应广MCU刮目相看。但真正把这个生态推向高潮的,是嵌入式大神Jay Carlson

Jay在2019年发表了那篇著名的超深度评测《What is up with these 3-cent microcontrollers?》,对应广MCU的架构、性能、功耗和选型做了迄今最全面的分析。文章光是芯片选型表就有几十行对比数据,从PMS150C到PFS173一网打尽。

但他不满足于只写文章——他亲手做了两个项目来验证这颗芯片的真实能力。

3.1 WS2812-SPI 桥接器

Jay 想了一个巧妙方法:利用 SPI 硬件外设来模拟 WS2812B 协议。SPI 的 MOSI 输出是一串移位数据,设置 SPI 时钟后,发送 0xF0("1"码)和 0x00("0"码),用硬件 SPI 驱动 LED 灯带,几乎不占用 CPU。

3.2 自行车尾灯(产品级 Demo)

Jay 用 PMT251(多核心 FPPA 芯片)做了带多种灯光模式、低功耗待机、振动感应的智能自行车尾灯控制器。

  • FPPA0 核心:检测振动、切换模式、管理休眠
  • FPPA1 核心:PWM 呼吸灯、快闪、SOS 模式
  • 待机功耗:仅 0.5μA,唤醒仅需微秒级

"用了应广的芯片后,我在设计电路时再也不需要心疼 MCU 的预算了。它不工作了?扔了换一颗就是。"

—— Jay Carlson

四、为什么这两个项目如此重要?

  1. 打破偏见:3 美分芯片驱动 RGB 灯带,没有不好的芯片只有不合适的方案
  2. 催生开源生态:推动 Free PDK 工具链,SDCC 支持 PDK14/PDK15
  3. 产品线一览
型号 ROM RAM IO 特色 参考价
PMS150C 1K Word 64B 6 最便宜 OTP $0.03
PMS152 1.25K Word 80B 14 多 IO $0.04
PMS154C 2K Word 128B 14 性价比之选 $0.05
PFS154 2K Word 128B 14 Flash 可重复烧录 $0.07
PFS173 3K Word 256B 14 ADC + Flash $0.10
PMT251 2K Word 128B 14 双核心 FPPA $0.12

五、从零开始入门

5.1 开发环境

  1. 下载 PADAUK IDE(30MB,应广官网)
  2. 安装 Device File
  3. 购买烧录器 PDK5S-P-003 或 Free PDK 开源烧录器
  4. 强烈建议买 ICE 仿真器(开发 OTP 芯片必备)

5.2 点灯 Demo

#include "extern.h"
void FPPA0(void) {
    .ADJUST_IC SYSCLK=IHRC/2
    $ PA4 out, low;
    while (1) {
        $ PA4 high;
        .DELAY 10000;
        $ PA4 low;
        .DELAY 10000;
    }
}

5.3 OTP 开发流程

  1. 先在 ICE 仿真器 上跑通代码
  2. 确认无误后再烧录 OTP
  3. 烧坏只能换新芯片
  4. 量产用自动烧录机

5.4 常见错误排查

现象 可能原因 解决
编译内存不足 RAM/ROM 超限 减少全局变量
烧录芯片未连接 CLK/DATA 接反 检查接线
PWM 无输出 时钟源错误 确认定时器时钟
ADC 采样跳动 参考电压不稳 加 RC 滤波
中断不触发 INTE 未使能 检查中断寄存器
芯片发热 IO 短路 IO 驱动约 5-20mA

5.5 学习路线

阶段 项目 要点
入门 LED 闪烁 + 按键 IO 配置、延时
进阶 PWM 调光 定时器、寄存器
中级 WS2812B 驱动 精确时序、宏
中高级 电池供电设备 低功耗 STOPSYS
高级 多核心 FPPA 并行处理
量产 OTP 方案 烧录流程、BOM

六、给你的启示

Anders Nielsen和Jay Carlson用两颗3美分的芯片,给整个嵌入式社区上了一课。回到我们自己身上,能带走什么?

💰
第一课:重新审视成本

很多项目选型的第一步就是"先上个STM32",默认把20块钱的芯片当起点。但你的产品真的需要那么多资源吗?3美分能做好的事,为什么要花100倍的成本?BOM砍掉5毛钱,量产100万片就是50万的利润差距。

🧠
第二课:方案比芯片更重要

64字节RAM驱动300颗LED——这告诉我们:硬件资源是固定的,但方案是活的。遇到看似不可能的约束,先别放弃,换个思路也许就通了。问题的答案不在芯片手册里,在你的脑子里。

🛠️
第三课:低端不等于低能

OTP只能烧一次、没有硬件SPI、RAM小得可怜——这些限制在高手眼里不是缺陷,是挑战。应广的芯片让你回归到"用最少的资源做最多的事"这种硬核思维。这恰恰是很多ARM工程师正在丢失的能力。

🌍
第四课:不必非盯着ARM

Cortex-M系列确实是主流,但不是唯一答案。台系的OTP MCU、国产的RISC-V、甚至8位的8051——每个架构都有它最适合的战场。工程师的价值不在于"会用最贵的芯片",而在于"用最合适的芯片解决问题"。

具体建议

如果你正在设计一款消费电子产品:

  • 先把功能需求列清楚,算一下你到底需要多少IO、多少RAM、多少运算能力
  • 然后再去看芯片选型——不要反过来
  • 如果一个8毛钱的应广就能搞定,就别上20块的ARM

如果你是嵌入式新手:

  • 去玩一玩应广的芯片。OTP的"一次烧录"会让你养成先想清楚再动手的习惯
  • 64字节RAM会逼你写出更高效的代码——这种能力在ARM上练不出来
  • 当你再回到STM32时,你会发现自己的代码质量上了一个台阶

如果你是产品经理或创业者:

  • 下次算BOM的时候,把MCU那一栏的价格除以10,看看能做些什么
  • 很多"智能硬件"其实不需要"智能",只需要"控制"——而控制,3美分就够了
  • 把省下来的钱花在传感器、外壳、用户体验上,可能更有竞争力

💡 最后一句话:

Jay Carlson在文章里写过一句话,我把它放在这里作为收尾——

"一个8位的PIC要20倍的价格,而应广做得一样好。用了应广的芯片后,我在设计电路时再也不需要心疼MCU的预算了。"

限制你的从来不是芯片本身,而是你的想象力。

七、参考资料与延伸阅读

本文内容基于以下公开资料整理,感谢各位开发者和社区贡献者的工作:

  1. Jay Carlson, "What is up with these 3-cent microcontrollers?", 2019
  2. Anders Nielsen, "3 cent PMS150C MCU driving 300 WS2812B LEDs", 2019
  3. West Side Electronics, "Padauk Microcontrollers: Exploration and Usage", 2019
  4. Free PDK 官方文档, free-pdk.github.io
  5. 逐高电子, zicoic.com
  6. EEVBlog 论坛, eevblog.com

应广单片机技术资料

  • 台湾应广单片机官网
  • 应广单片机例程
  • 应广单片机编程指南
  • 应广单片机定时器
  • 技术开发工具
  • 应广单片机IDE&仿真器
  • 应广单片机烧录器
  • 代码生成器
应广单片机比较器测电压代码详解:不用ADC检测VDD电池低压(PMS150C/PFS154)

应广单片机比较器测电压代码详解:不用ADC检测VDD电池低压(PMS150C/PFS154)


5S-P-005 应广烧录器使用指南:通用型单片机编程器 | 自动检测封装引脚 | PADAUK

5S-P-005 应广烧录器使用指南:通用型单片机编程器 | 自动检测封装引脚 | PADAUK


应广单片机PMS150C温控PWM风扇控制器开发案例:电路、BOM、代码与量产参数|逐高电子

应广单片机PMS150C温控PWM风扇控制器开发案例:电路、BOM、代码与量产参数|逐高电子


应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南

应广单片机OTP能不能反复烧?PMS150C/PFS154烧录区别与量产避坑指南


PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子

PMD040B 24位称重ADC内置温度传感器_应广科技授权代理商_逐高电子


应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑

应广PADAUK单片机Mini-C IDE搭建与点灯实战 | 从零到LED闪烁附OTP避坑


PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案

PMD040B体重秤完整开发案例:硬件设计/固件代码/产线校准_量产级24位ADC低功耗方案


应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持

应广单片机程序可以不加看门狗吗?3种情况决定关闭还是开启WDT,逐高电子方案支持


应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享

应广单片机采集数据总“飘”?5个设置技巧,从根源解决问题 | 逐高电子技术分享


应广单片机热点问题实战解决方案 - 开发/烧录/选型/PWM/低功耗/滚码 | 逐高电子·应广技术方案

应广单片机热点问题实战解决方案 - 开发/烧录/选型/PWM/低功耗/滚码 | 逐高电子·应广技术方案


应广单片机入门实战:基于PMS150G与5S-I-S02B仿真器的LED闪烁完整教程

应广单片机入门实战:基于PMS150G与5S-I-S02B仿真器的LED闪烁完整教程


STM32太贵?试试应广单片机:成本低至9毛钱,功耗0.5μA,抗干扰±4kV | 逐高电子

STM32太贵?试试应广单片机:成本低至9毛钱,功耗0.5μA,抗干扰±4kV | 逐高电子


PMD040B 24位Δ-Σ ADC | 内置PGA/温度传感器/电源开关 | 应广科技高精度模数转换器

PMD040B 24位Δ-Σ ADC | 内置PGA/温度传感器/电源开关 | 应广科技高精度模数转换器


PMS150C LED球泡灯方案:原理图+代码+过零检测(PA0)与可控硅调光(MOC3052) | BOM成本¥1.2

PMS150C LED球泡灯方案:原理图+代码+过零检测(PA0)与可控硅调光(MOC3052) | BOM成本¥1.2


单片机选型指南:PMS150C、PMS152、PMS154C、PMS133 - 申请样品

单片机选型指南:PMS150C、PMS152、PMS154C、PMS133 - 申请样品


开发实力

专业资深的软硬件开发工程师团队,熟悉行业客户产品硬件技术平台解决方案

全球渠道

为客户提供高性价比的产品和服务,满足客户及时快速的电子生产制造需求

品质保证

专业的测试保证团队,保证每批方案的稳定性,兼容性,和抗干扰性

售后服务

专业的技术服务团队,24小时为客户提供各种软硬件的技术支持和售后服务

服务热线

0755-88364040
18902464556

义隆代理

烧录开发

技术支持

申请样品

扫描微信二维码