NXP S32K1 MCAL SPI模块使用

作者:Stephen Du

免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

欢迎添加微信交流学习。

在这里插入图片描述

本文介绍使用MCAL SPI模块的一些知识点及注意事项,本模块的配置会在其他文章进行分享。
本文第一版介绍一些基本知识点,会持续更新。。。,如感兴趣,可添加关注

1.MCAL SPI模式及功能

SPI_LEVEL_DELIVERED
API等级
Sync Mode
同步模式
Async Mode
异步模式
Spi_SetAsyncMode
(函数)
Polling Mode
轮询模式
Interrupt Mode
中断模式
Level 0 x x x
Level 1 x x x
Level 2 √(default)

√: support/available x: not support/unavailable

Configure/Feature
配置项/功能
Sync Mode
同步模式
Async Mode
异步模式
Comments
注释
Polling Mode
轮询模式
Interrupt Mode
中断模式
SpiPhyUnitSync
Check
勾上
Uncheck(default)
不勾(默认)
EB配置项
DMA
不支持
支持
功能/EB配置项
FIFO
支持
支持
功能/EB配置项

由上表可以看到,DMA只有在异步模式(Async)下才有效。

2.使用方法及注意事项

  1. 使用本模块中的服务前,必须先调用Spi _Init()函数初始化。

  2. 如果使用了DMA功能,Spi _Init()函数必须在Port_Init()函数及Mcl_Init()函数之后调用。

  3. 如果配置为(异步)轮询模式,需要周期调用:Spi_MainFunction_Handling()。

  4. 如果使用固定优先级策略,SpiPhyRxDmaChannel优先级必须大于SpiPhyTxDmaChannel优先级。

  5. 如果配置为(异步)中断模式,且启用了DMA:

  1. 必须使能DMA相应通道中断。
  2. 必须将SPI模块的接收/发送中断函数注册到DMA完成回调函数里,配置见DMA模块配置。
  1. SPI模块中断函数:Spi_LPspi_IsrRxDma_LPSPI_X/Spi_LPspi_IsrTxDma_LPSPI_X,其中X为通道号。

以通道0为例,中断函数为:Spi_LPspi_IsrRxDma_LPSPI_0/Spi_LPspi_IsrTxDma_LPSPI_0。

  1. 如果配置为(异步)中断模式,但是使用FIFO,需要将中断函数(Spi_LPspi_IsrTDF_LPSPI_X)注册到中断向量表里面,其中X为通道号。

由于MCAL本身不提供中断向量表注册功能,可以参照SDK或者MCAL示例工程里的中断注册函数:sys_registerIsrHandler()。

你可能感兴趣的:(MCAL)