S32K324 MCAL SPI波特率配置不对问题排查
文章目录
- 前言
- MCAL配置检查
- SPI时钟源
- 问题处理
- 总结
前言
项目开发过程中,MCAL SPI配置时发现实际配置的波特率和用逻辑分析仪采集的时钟频率对不上,实际的频率只有配置的一半,本文记录该问题的排查过程。
MCAL配置检查
MCAL SPI配置波特率在ExternalDevice中配置,示例如下
计算波特率需要关联SPI的时钟,在SpiyPhyUnit中配置
该Reference时钟在MCU中配置,如下所示,时钟为AIPS_PLAT_CLK,时钟频率配置为80M
时钟通过PLL_PHI0_CLK分频而来
目前看配置好像没啥问题,生成代码时也没有报错。所以需要查芯片手册的SPI时钟源
SPI时钟源
SPI时钟源在手册中如下所示:
只有SPI0的时钟来自于AIPS_PLAT_CLK,其余SPI模块的时钟来自于AIPS_SLOW_CLK,该时钟只有AIPS_PLAT_CLK的一半,所以现在问题就很好解释了,我们使用的是SPI1,虽然说在MCAL中关联的时钟是AIPS_PLAT_CLK,但是实际上使用的时钟是AIPS_SLOW_CLK,所以最后得到的SPI时钟只有配置的一半
问题处理
如果不想重新改时钟的话,临时可以将波特率配置放大到需要配置的2倍,不过最好修改时钟配置,将SPI1-SPI5的PhyUnit时钟关联到AIPS_SLOW_CLK,这样也方便其他人看,不会引起歧义
总结
S32K3中的很多外设都有类似的特点,就是第一个外设的性能最强,例如之前遇到的CAN0支持的Mailbox就比其他CAN通道的多,这次的SPI时钟源也是,只有SPI0的时钟频率最高。所以后面在芯片选型时,对于外设的差异,也是需要充分考虑的!