1. ST25R3911B平台层重构解析
在ST25R3911B NFC读写器芯片的驱动开发中,platform.h和rfal_platform.h这两个文件扮演着关键角色。作为从旧版RFAL(RF Abstraction Layer)迁移到V2.8.0的开发者,我深刻体会到这次架构调整带来的变化。旧版将所有硬件抽象和功能配置混杂在单个platform.h文件中,而新版通过职责分离实现了更清晰的架构设计。
这种重构不是简单的文件重命名,而是整个设计理念的转变。旧版platform.h就像一个装满各种工具的杂乱工具箱,开发者需要在一堆混杂的定义中找到需要的部分。新版架构则像精心设计的工具墙,每个工具都有其固定位置,rfal_platform.h负责硬件操作接口,rfal_defConfig.h专注功能配置开关。
2. 新旧版本架构对比
2.1 文件职责划分
旧版platform.h采用"大而全"的设计思路,包含以下主要内容:
- 硬件抽象层(HAL)接口:GPIO控制、SPI通信、定时器操作
- 中断管理:中断使能/禁止、回调注册
- RFAL功能开关:各种NFC协议的支持配置
- 芯片特定定义:ST25R3911B的寄存器地址、命令集
新版架构将上述内容拆分到三个文件中:
-
rfal_platform.h:纯硬件操作接口
- 仅包含"如何做"的定义
- 标准化硬件访问方法
- 不涉及任何业务逻辑
-
rfal_defConfig.h:功能配置开关
- 仅定义"要什么"的选项
- 通过RFAL_FEATURE_XXX宏控制功能
- 与硬件完全解耦
-
芯片专用头文件:如st25r3911b.h
- 存放芯片寄存器定义
- 提供底层命令集
- 与RFAL层隔离
2.2 接口设计差异
函数命名规范变化
旧版接口直接绑定具体芯片型号:
c复制#define platformIrqST25R3911SetCallback(...)
#define platformSpiTxRx(...) spiTxRx(...)
新版采用通用命名,支持多种NFC芯片:
c复制#define platformIrqST25RSetCa
