在低成本温控器中,ADC 采样、PWM 调速、LCD 刷新和按键处理往往挤在同一条主循环里。显示刷新稍有延迟,采样周期就可能漂移;界面代码直接改写 PWM,又可能绕开软启动和保护。本案例以一台 12V 两线直流风扇温控显示器为对象,把 PFC232 的两个 FPPA 划分为实时控制域与人机交互域,并用一套可核对的 14 路 IO 预算、电路结构和共享数据代码把方案闭合起来。
直接答案:PFC232 双 FPPA 的推荐分工是:FPPA0 独占 ADC 与 PWM,以固定 1ms 节拍完成 NTC/按键采样、温度计算、软启动和占空比更新;FPPA1 独占 LCD,以 10ms 节拍处理按键语义、温度显示和故障提示。两者只通过带版本号的共享邮箱传递快照,避免共同改写同一个外设。
真实性边界:PFC232 的双 FPPA、MTP、ADC、IO、LCD 和 PWM 参数来自应广公开资料;温控器硬件、程序和配图是本文原创的工程参考实现,不是应广原厂量产板或原厂源码。应广官网已于 2026 年 8 月 21 日公告 PFC232 规格书更新至 v0.07,正式设计应以取得的最新版规格书和所选封装引脚表为准。
图 1:原创工程封面。画面呈现 PFC232、三位显示器、NTC 探头、三键输入、外置 MOSFET 和直流风扇,功能关系与本文案例一致;该图不是原厂开发板照片。1. 为什么选择 PFC232 做多任务温控器
应广官方产品资料将 PFC232 列为双 FPPA、12 位 ADC 型 MTP MCU。公开参数包括 2KW MTP 程序空间、128 Bytes SRAM、最多 14 个 IO、最多 12 路 12 位 ADC、两个 8 位 PWM 与三路 11 位 PWM,并支持 VDD/2 LCD。器件页还列出单/双处理单元运行模式、比较器、OPA 与可配置时钟等资源。
这些资源并不意味着功能可以不受约束地全部打开。PFC232 的 RAM 和 IO 都很紧,因此本案例遵循三条原则:不用浮点数、不让两个 FPPA 抢同一外设、先做引脚预算再画板。若需要先了解 FPPA 架构、IDE 与烧录流程,可同时阅读逐高电子的应广 PADAUK 微控制器开发解析。
| 官方公开能力 | 本案例的使用方法 | 工程注意点 |
|---|---|---|
| 2 个 FPPA | FPPA0 负责实时控制;FPPA1 负责显示和界面。 | 它不是可以任意共享外设的通用 SMP 双核结构,必须定义资源所有权。 |
| 12 位 ADC,最多 12 通道 | 使用两路:NTC 温度和三键电阻梯。 | 信号源阻抗、采样时间、VDD 波动和 RC 滤波会影响结果。 |
| 14 个 IO | LCD 11 路、NTC 1 路、按键 1 路、PWM 1 路。 | 逻辑数量正好等于 14;实际复用组合必须查封装引脚表。 |
| 8 位/11 位 PWM | 输出到外置 MOSFET,控制两线 12V 风扇。 | MCU 不能直接承受风扇电流。 |
| MTP 可重复烧录 | 用于开发阶段调整 NTC 表、温控曲线和显示逻辑。 | 量产参数持久化方式应按存储规范另行设计。 |
2. 案例需求:12V 风扇温控显示器
控制器从受保护的 12V 直流电源取电,经过稳压后给 PFC232 供电。NTC 探头检测环境或散热器温度,三位段码 LCD 显示当前温度或设定值;三个按键通过电阻梯共用一个 ADC 通道;PWM 经栅极电阻驱动外置 N 沟道 MOSFET,再由 MOSFET控制两线风扇电流。
- 温度范围:软件示例按 5.0℃~60.0℃设定,实际由 NTC 和目标产品限定。
- 显示:3COM × 8SEG,共 24 个可控段,可组织三位数字、小数点及必要状态符号。
- 按键:SET、加、减三键共用一条 ADC_KEY,另外保留开路和非法区间。
- 控制:温差决定 PWM;由停止进入运行时,先以高占空比启动 350ms,再回到调节值。
- 保护:NTC 开路或短路时关闭 PWM并显示故障。两线风扇没有转速反馈,因此不能宣称具备闭环堵转诊断。
3. 电路结构与 14 路 IO 预算
图 2:原创工程电路结构。它给出正确的供电、采样、显示和功率路径,但不替代 v0.07 数据手册、封装引脚表和带元件定值的生产原理图。| 功能 | IO 数量 | 实现 |
|---|---|---|
| 段码 LCD | 11 | 3 个 COM + 8 个 SEG,直接显示三位数字和小数点。 |
| NTC 温度 | 1 | 独立 ADC_NTC,偏置电阻、NTC 和 RC 滤波。 |
| 三键输入 | 1 | SET/+/-通过不同电阻形成 ADC 电压窗口。 |
| 风扇 PWM | 1 | PWM 输出经 RG 驱动 Q1,门极设置下拉电阻。 |
| 合计 | 14 | 达到官方公开的最大 IO 数量,不能再默认增加蜂鸣器或测速输入。 |
3.1 为什么按键也交给 FPPA0 采样
按键属于界面,但按键电阻梯占用 ADC。为了避免两个 FPPA 同时切换 ADC 通道和采样时钟,本设计仍由 FPPA0 每 10ms 采一次 ADC_KEY,然后把按键事件编号写入共享邮箱;FPPA1 只解释“加、减、设置”的业务含义。
3.2 PFC232 能不能直接驱动风扇
不能。PFC232 的 PWM 引脚只负责逻辑控制。12V 风扇电流由外置逻辑级 N 沟道 MOSFET承担:风扇正端接受保护的 12V,负端接 Q1 Drain,Q1 Source 回到功率地。栅极需要串联电阻和下拉电阻;钳位二极管或 TVS 应按风扇内部结构、关断过冲和器件额定值选取。
3.3 封装与复用关系必须在画板前锁定
本案例的逻辑预算为 14 路 IO,因此应优先核对能够提供足够可用引脚的 PFC232 封装;从引脚数量看,SOP16 可作为候选起点,但这不等于已经完成选型。工程师仍需依据 v0.07 引脚表逐项确认 3COM、8SEG、两路 ADC 与一路 PWM 能否在同一封装中同时映射,并检查电源脚、烧录脚及复用冲突。只有复用表闭合后,图 2 的功能网络才能转换成可生产原理图。
图 3:原创 PCB 实物风格示意。模拟采样和 MCU 位于左/中部,MOSFET 与风扇大电流路径位于右侧,显示器与按键按功能分区。该图用于文章说明,不是 Gerber、BOM 或原厂板照片。4. 双 FPPA 的正确分工:外设只能有一个主人
双 FPPA 最容易出现的问题不是算力不足,而是资源竞争。例如 FPPA0 正在切换 ADC 到 NTC 通道,FPPA1 又为按键切换 ADC 通道;或者控制域刚执行故障关断,界面域根据用户命令重新写入 PWM。解决方法是为每个外设规定唯一拥有者。
图 4:双 FPPA 任务与数据流。FPPA0 发布状态快照;FPPA1 通过独立命令邮箱提交目标温度。两个方向分别使用版本号,避免 8 位处理单元读取到被拆开的 16 位数据。| 执行单元 | 周期 | 拥有的硬件 | 任务 |
|---|---|---|---|
| FPPA0 | 1ms | ADC、PWM、控制定时基准 | NTC 滤波、按键采样、查表换算、软启动、PWM限幅和故障关断。 |
| FPPA1 | 10ms | LCD、界面状态 | 读取一致快照、解释按键事件、更新目标温度和刷新显示。 |
| 状态邮箱 | FPPA0 写 | 共享 SRAM | 温度、实际目标、PWM、按键事件编号和故障码。 |
| 命令邮箱 | FPPA1 写 | 共享 SRAM | 新的目标温度;FPPA0验证后用于下一次控制。 |
共享邮箱为什么要拆成两个方向
状态邮箱只允许 FPPA0 写、FPPA1 读;命令邮箱只允许 FPPA1 写、FPPA0 读。若把状态和命令混在同一个结构体中,FPPA0 发布温度快照时可能覆盖 FPPA1 刚写入的目标值。双向各自单写者的结构更容易证明数据一致性,也更适合 8 位 MCU 的 16 位变量同步。
5. 核心代码:共享数据同步、NTC 采样与 PWM 软启动
PFC232 是 8 位架构,16 位温度或占空比变量通常不能假定一次读写完成。如果 FPPA1 恰好在 FPPA0 写入两个字节之间读取,就可能得到一个混合值。下面采用版本号保护:写入前把序号变为奇数,全部写完后变为偶数;读取方只有在前后序号相同且为偶数时才接受数据。
static bool read_snapshot(control_snapshot_t *out)
{
uint8_t before = g_mail.seq;
if (before & 1u) return false; /* FPPA0 正在写 */
out->temperature_x10 = g_mail.temperature_x10;
out->target_x10 = g_mail.target_x10;
out->pwm_permille = g_mail.pwm_permille;
out->key_event = g_mail.key_event;
out->key_event_id = g_mail.key_event_id;
out->fault_code = g_mail.fault_code;
return before == g_mail.seq && !(g_mail.seq & 1u);
}
控制任务使用整数滤波和 NTC 查表,避免浮点库占用有限的程序空间和 SRAM。由停止切换到运行时,代码先执行 350ms 高占空比启动,再进入最小 35% 占空比以上的温控曲线,防止两线风扇在低占空比下只抖动而不能起转。
void fppa0_control_task_1ms(void)
{
uint16_t adc = PFC232_ADC_ReadNtc();
if (!g_ntc_filter_ready) {
g_ntc_filter = adc; /* 避免上电误判短路 */
g_ntc_filter_ready = true;
} else {
g_ntc_filter += (int16_t)(adc - g_ntc_filter) >> 3;
}
if (g_ntc_filter < 40u || g_ntc_filter > 4050u) {
PFC232_PWM_Disable();
publish_fault();
return;
}
temp_x10 = ntc_lookup_x10(g_ntc_filter);
pwm = fan_command(target_x10, temp_x10);
if (pwm && previous_pwm == 0u) kick_ms = 350u;
if (kick_ms) { pwm = 1000u; --kick_ms; }
PFC232_PWM_SetPermille(pwm);
publish_status(temp_x10, target_x10, pwm);
}
完整参考代码文件:pfc232-dual-fppa-core.c。其中硬件访问函数保留为封装接口,是因为实际寄存器、引脚和启动代码必须由 PFC232 v0.07 Device Pack 与所选封装决定;本文不会把通用函数名冒充原厂 API。
6. ADC 精度与 PCB 抗干扰要点
6.1 NTC 分压的阻抗必须与采样时间一起设计
应广 APN001 指出,ADC 输入前端存在采样电容,外部信号源阻抗过高时,采样点在规定时间内无法充到目标电压。应用说明以 2µs 采样、10 位精度举例,给出的外部输入阻抗参考值最好在约 10kΩ 以内。PFC232 使用 12 位 ADC,精度要求更高,因此不能直接把 10kΩ 当成通用结论,而应依据 v0.07 的采样条件、内部阻抗、NTC 分压和滤波电容重新计算并实测。
6.2 模拟地与风扇电流回路需要分开
- NTC 分压、ADC RC 和 MCU 去耦放在同一个安静区域,模拟走线远离 MOSFET Drain 和 PWM Gate。
- 风扇电流从 12V 输入、风扇连接器、Q1 到功率地形成短回路,不能穿过 ADC 地。
- MCU VDD 旁的 100nF 去耦必须贴近供电脚;12V 输入和稳压输出另设合适的储能电容。
- ADC 按键窗口要同时覆盖电阻误差、VDD 变化、按键接触电阻和噪声,并保留非法区间。
- 电源插拔和 EFT 测试需要结合 TVS、复位门限、布线与整机结构验证,不能只依赖芯片系列标签。
6.3 首版样机的元件与控制参数从哪里起步
下面的值用于建立首版样机和实验矩阵,不是 PFC232 官方推荐值,也不是可以直接复制到量产 BOM 的固定答案。最终参数必须结合风扇数据、MOSFET 栅电荷、供电瞬态、温度范围和实测波形收敛。
| 设计项 | 首版调试起点 | 必须验证的条件 |
|---|---|---|
| MCU 去耦 | VDD 旁 100nF,电源支路再放 4.7µF | 上电、风扇启动和 PWM 边沿下的 VDD 跌落与复位裕量。 |
| NTC 网络 | 可用 10kΩ、B3950 NTC 配 10kΩ 偏置;ADC 前以 1kΩ + 10nF 作为实验起点 | 依据实际参考电压、采样时间、温区和查表误差重新计算;确认 ADC 建立时间。 |
| MOSFET Gate | 串联 33Ω~100Ω,下拉 47kΩ~100kΩ | 上升/下降沿、开关损耗、EMI、上电误导通和最高结温。 |
| 输入保护 | 保险或限流器件的初筛额定值可从风扇稳态电流的 1.25 倍以上开始 | 必须同时通过启动浪涌、堵转、反接和短路测试,不能仅按稳态电流定值。 |
| TVS/钳位 | 钳位电压低于下游最弱器件绝对最大额定值并留裕量 | 核对 12V 电源等级、线束脉冲、TVS 动态钳位和耗散能力。 |
| PWM 频率 | 由所选两线风扇允许的供电调制频率确定 | 验证启动率、噪声、电流纹波和 MOSFET 温升;不可直接套用四线风扇控制端频率。 |
6.4 样机验收要用可复现的判据
工程验收应覆盖正常控制、边界输入和故障注入。下表给出适合 EVT 阶段的项目目标示例;开发人员需要按照实际产品规范调整温度、供电范围、EMC 等级和循环次数。
| 验证项目 | 建议记录方法 | EVT 判据示例 |
|---|---|---|
| 风扇启动 | 在最低/最高工作电压及温度角点各执行启停循环 | 项目起始目标可设为累计 100 次均成功起转,无持续抖动。 |
| NTC 故障 | 分别注入开路、短路和临界 ADC 值 | 在不超过两个控制周期内关闭 PWM,并保持故障显示。 |
| 按键窗口 | 叠加电阻误差、VDD 变化、接触电阻和噪声 | SET、加、减、开路与非法区间互不重叠,无连跳。 |
| 温度精度 | 用多点恒温源对照并保存校准前后误差 | 按产品要求定义;普通显示控制器可先以校准后 ±1℃作为评估目标。 |
| LCD 显示 | 覆盖全段、数字切换、低温和高温供电角点 | 无缺段、重影或可见直流偏置现象。 |
| 电源与抗扰 | 执行反接、插拔、风扇堵转及目标等级 EFT/脉冲测试 | 无器件损坏和危险误启动;复位后进入定义好的安全状态。 |
7. 方案限制:哪些功能不能在原预算上继续硬加
当前 14 个 IO 已全部分配。如果产品还需要蜂鸣器、风扇测速、通信口或第二路温度传感器,应重新选择方案,而不是假设还能“挤出”引脚。可选方向包括缩减 LCD 段数、改用外置串行显示驱动器,或改选 IO 更多的器件。
此外,两线风扇只有供电和 PWM 调制,没有独立测速反馈。本案例可以检测 NTC 故障,却无法严格判断风扇是否堵转。如果堵转检测是安全要求,应改用带 FG 的三线/四线风扇,并为测速输入重新规划 IO。
8. 常见问题
PFC232 的双 FPPA 应该怎样分工?
让 FPPA0 独占 ADC 与 PWM,负责固定周期采样和控制;让 FPPA1 独占 LCD 与界面。两者通过带版本号的共享邮箱交换数据,不共同写同一个硬件外设。
PFC232 可以直接驱动 12V 风扇吗?
不可以。PWM 只提供逻辑信号,风扇电流必须由外置 MOSFET 承担,并配置栅极电阻、下拉电阻和按风扇规范选择的钳位器件。
为什么按键由控制 FPPA 采样?
三键使用 ADC 电阻梯。如果交给另一个 FPPA 操作,会出现两个执行单元争用 ADC 的风险。因此 FPPA0 完成 ADC 采样,再把按键事件交给 FPPA1解释。
14 个 IO 是否真的够用?
逻辑预算刚好是 14 路,但还必须检查所选封装能否同时映射 3COM×8SEG、两个 ADC 输入和一个 PWM 输出。若复用关系不允许,就应调整显示方案或型号。
文章里的代码能直接用于量产吗?
不能直接量产。代码展示双 FPPA 所有权、共享数据同步、滤波和软启动的核心方法;寄存器映射、NTC 表、PWM 频率、MOSFET、EMC 与热设计必须在实际样机上完成。
9. 工程结论
PFC232 的双 FPPA 价值,不是把普通主循环机械拆成两份,而是把“必须准时的采样与控制”同“允许稍慢的显示与交互”建立硬边界。对这台 12V 风扇温控显示器而言,FPPA0 负责 ADC 和 PWM,FPPA1 负责 LCD 和界面,两个方向分别使用版本号邮箱传递 16 位数据,既符合 8 位 MCU 的实际限制,也能让故障关断、软启动和显示刷新各自可测试。
本文 canonical、作者与发布机构已按逐高电子官网配置。文中四张配图均为 JPG;配图用于解释本案例的功能关系,不代表应广原厂 PCB、Gerber 或量产原理图。
10. PFC232 选型、样片与技术支持
如需 PFC232 v0.07 规格书、封装选型、样片或项目评估,可通过逐高电子官网联系技术开发部。提交需求时建议同时说明 LCD 段数、传感器类型、风扇电压/电流、目标温区及通信需求,以便先完成 IO 与外设复用核对。
访问逐高电子官网参考与核验来源
- 应广科技:PFC232 产品页——双/单处理单元模式、MTP、ADC、PWM、OPA、比较器、IO 与 LCD 等公开能力。
- Padauk F Series MTP MCU Selection(英文官网)——PFC232 的 FPPA、ADC、IO、ROM、RAM、LCD 与 PWM 选型参数。
- Padauk Product News——2026 年 8 月 21 日 PFC232 v0.07 规格书更新公告。
- 应广 APN001:ADC 模拟信号源输出阻抗应用需知——采样电容、采样周期和外部阻抗的设计关系。
- 逐高电子:应广科技单片机 PADAUK 微控制器开发解析——FPPA 架构、开发工具与应用方向的延伸阅读。
