← 返回作品区 JonTan

OUT / 02 · 移植差异表 · 样张

移植差异表 · 样张:迁到 STM32C531,目标芯片这一侧必须重新设计的 11 处

一个电源类控制板从某国产 Cortex-M4 MCU 迁到 STM32C531。动代码之前,先把两颗芯片逐项比对:哪些能直接搬、哪些要重写、哪些会卡住。这份样张列出 STM32C531 这一侧必须重新设计的 11 处,每条附手册页码或设备头文件、迁移动作和客户要验证的内容。其中 2 处最初的差异分析漏掉了,是上板验证时才抓到的,照实写出。

这份差异表解决什么问题

差异表的起点是工程资源基线:老工程实际用了哪些外设、在新芯片上各落到哪里,见 OUT/01 样张。

一条差异写成什么样

以「LQFP48 第 22 脚」为例,完整格式如下:

现象源芯片上这个脚位是普通 IO,原设计在这里接了一路输入捕获信号;STM32C531 的 LQFP48 第 22 脚是 VCAP(内部稳压器的外接电容脚),不能当 IO 用
依据DS15125 Rev 2 引脚表,第 41 页
影响这路信号在新芯片上没有地方接,属于硬件阻断
迁移动作硬件把信号改接到相邻一个有同一定时器通道的脚;软件的捕获通道随之从 CH4 改为 CH3,捕获寄存器、通道配置一起改
客户验证项PCB 是否确已改线;新通道能否复现原来的测量逻辑
严重度高

目标芯片这一侧的 11 处差异

#差异依据迁移动作严重度
1没有 PLL。系统时钟只有四个来源:HSIS、HSIDIV3、PSIS、HSERM0522 Rev 1 §9.4,第 254 页时钟初始化整段重写,144 MHz 改由 PSIS 以外部 8 MHz 晶振为参考生成高
2所有定时器(LPTIM 除外)都走 HCLK,与各自的 APB 分频无关同上,第 254 页注释全部定时器的预分频、重装值按 144 MHz 重新计算,不能照搬源芯片按 APB 时钟算出来的常数中
3144 MHz 需要 4 个等待周期,外加编程延迟参数 WRHIGHFREQ = 10RM0522 §6(FLASH)Table 20,第 132 页提频前先写 FLASH 等待周期并读回确认,再切时钟中
4只有一个 ADC。源芯片有两个 ADC,原设计用的是双 ADC 同步采样设备头文件 stm32c531xx.h:只定义 ADC1改为单 ADC 多通道扫描(6 通道),数据布局和中断里的取数逻辑一起改高
5只有 LPDMA,没有传统 DMA;LPDMA 按链表方式组织传输同一头文件:只定义 LPDMA1 / LPDMA2;RM0522 §14.1,第 382 页ADC 搬运、串口收发的 DMA 全部重写,用 LL 库配置高
6没有 TIM3 / TIM4 / TIM5,只有 TIM1、2、6、7、8、12、15同一头文件的定时器实例定义1 ms、2 ms 两个周期任务改用 TIM6、TIM12中
7LQFP48 第 22 脚是 VCAPDS15125 Rev 2,第 41 页见上一节的完整示例高
8SWD 脚不能复用成串口。PA13 / PA14 除调试功能外,只有 COMP1_OUT、EVENTOUT;源芯片允许把这两个脚重映射成串口DS15125 Rev 2 Table 12,第 46 页改用 USART1 的一对空闲引脚;删掉源工程里把 SWD 脚改成串口的那段代码高
9ADC1_IN7 由两个引脚共用,复位默认接 PA7RM0522 §12.5.4,第 363 页初始化时置 SBS_PMCR.ADC1_IN7_REMAP,详见 CASE/01高
10FLASH 以 128 位为单位编程,不足 128 位要用 FW 位强制提交;每页 8 KB、每个 bank 16 页,擦除要选 bankRM0522 §6.3.5,第 133 页;头文件 FLASH_PAGE_SIZE = 0x2000、FLASH_PAGE_NB_MAX = 0x10参数存储的擦除与编程整段重写高
11RAM 为 64 KB(SRAM1 32 KB + SRAM2 32 KB)头文件 SRAM1_SIZE / SRAM2_SIZE编译后实测静态占用约 4 KB,余量充足;顺带把只有 1 KB 的栈扩到 8 KB低

另有一类属于机械替换:寄存器名、中断向量名、启动文件不同,逐外设建对照表即可,没有设计风险,不单列。

最初漏掉、上板才抓到的 2 处

差异表是在动代码之前写的。第 9、10 两条,最初的版本没有写到这个深度:

两处都在同族开发板的预验证阶段抓到并修掉了,见 OUT/03 样张。教训写回了差异表的做法:

  1. 数据手册里同一个通道出现在两个引脚上,就一定有选择寄存器,要追到参考手册落实默认值。
  2. 页大小、编程粒度这类「各系列都差不多」的参数,必须按目标芯片的手册和头文件逐项核对,不能按其他系列的经验推断。

验证边界

项状态
11 处差异本身手册原文 设备头文件
针对这些差异的迁移动作同族开发板已验证 NUCLEO-C542RC 上逐步验证通过(见 OUT/03)
功率级、真实模拟前端相关的差异影响未测 留客户板
客户 STM32C531 板样板未到 未测

结论—依据—验证状态对照

#结论依据类型
1没有 PLL,系统时钟四个来源RM0522 Rev 1 §9.4,第 254 页手册原文
2定时器(LPTIM 除外)都走 HCLK同上,第 254 页手册原文
3144 MHz 需 4 等待周期 + WRHIGHFREQ = 10RM0522 Table 20,第 132 页手册原文
4只有 ADC1、只有 LPDMA1/2、没有 TIM3/4/5STM32C5 DFP 设备头文件 stm32c531xx.h 的外设实例定义设备头文件
5LPDMA 按链表组织传输RM0522 §14.1,第 382 页手册原文
6LQFP48 第 22 脚是 VCAPDS15125 Rev 2,第 41 页手册原文
7PA13 / PA14 没有串口复用功能DS15125 Rev 2 Table 12,第 46 页手册原文
8ADC1_IN7 双引脚,复位默认 PA7RM0522 §12.5.4,第 363 页手册原文
9FLASH 128 位编程粒度,FW 位强制提交RM0522 §6.3.5,第 133 页手册原文
10FLASH 每页 8 KB、每 bank 16 页stm32c531xx.h 的 FLASH_PAGE_SIZE / FLASH_PAGE_NB_MAX设备头文件
11迁移动作在同族开发板上验证通过见 OUT/03实测
12客户板上全部成立—未验证

「实测」指在 NUCLEO-C542RC 同族开发板上完成。

准备换料或移植

准备换料或移植、想先知道路有多长,发来这几项就能开始:源芯片与目标芯片的完整型号和封装、老工程(或至少外设使用清单)、原理图、哪些引脚和功能不能动。