开发环境:S32DS V3.4
RTD版本:S32K3XX 2.0.3
一、配置LPSPI的Pin脚
首先配置SPI的Pin脚,此处使用的是LPSPI_1
LPSPI_1与Pin脚的对应关系
pin脚方向
Pin名字 | 配置方向 |
lpspi_pcs(片选) | OUTPUT |
lpspi_sck(时钟) | OUTPUT |
lpspi_sin(主机输入) | INPUT |
lpspi_sout(主机输出) | OUTPUT |
二、配置Drivers中的Lpspi模块
SpiDriver的配置
SpiDriver的配置
SpiBaudrate:配置的该路SPI的波特率。
SpiCsIdentifier:配置的该路SPI的片选ID,此处ID对应配置Pin脚时lpspi_pcs后的下表(本工程此处为PCS3)
SpiHwUnit:配置该路SPI对应的SPI硬件单元ID,本工程配置为Lpspi1,因此配置为CSIB1
SpiDataWidth:Spi数据宽度
SpiDefaultData:SPI通信的默认数据
SpiTransferStart:SPI传输数据的端序
SpiGeneral的配置
SpiGlobalDmaEnable:勾选以使能DMA
SpiPhyUnitMapping:将该配置Mapping到某一路Spi,此工程配置为Spi1,遂选择LPSPI_1
SpiPhyUnitAsyncUseDma:勾选异步使用DMA选项,开启DMA配置
对应的Tx和Rx的DMA通道在后续配置。
三、配置Drivers中的Dma_Ip模块
在Drivers中添加Dma_Ip模块。
配置SPI_Tx的DMA通道
配置DMA->Specific Configuration->Dma Logic Channel
将Name修改为容易辨识的名字:如SPIx_用途_Tx/Rx的形式
Hardware Instance:此处配置为硬件节点0
Hardware Channel:此处配置为硬件通道0
Interrupt Callback:此处必须使用要使用的Lpspi中断Dma处理函数。
Error Interrupt Callback:DMA error中断函数,根据需求决定是否需要配置(需要用户实现该callback)
配置DMA->Specific Configuration->Dma Logic Channel->Configuration->Global
勾选Enable DMAMUX Source
DMAMUX Source:选择DMA_IP_REQ_MUX0_LPSPI1_TX
勾选Enable Error Interruot
DMA的Rx通道类似
在Drivers中添加Cache_Ip模块
勾选Enable CACHE Support
四、配置Drivers中的IntCtrl_Ip模块
在Driver中添加IntCtrl_Ip模块
配置IntCtrl_Ip->Interrupt Controller
配置DMA模块的中断
由于在配置DMA Tx和Rx通道时,选择的是节点0的ch0和ch1
所以此处使能DMATCD0_IRQn和DMATCD1_IRQn
然后再后边配置中断的优先级为9,此处根据项目调整
配置IntCtrl_Ip->Generic Interrupt Settings
最后在SPI配置中关联DMA的Tx和Rx通道。