主要涉及4个模块:MCU, Port ,Spi, MCl(dma)
1.MCU :
主要给SPI分配时钟,不细说了
2. Port:
CS:

Clk:

MISO:

MOSI:

注意:
1. SPI从机模式,CLK由主机提供,CLK需要配置成输入。
2. Port的属性:serial data output ,serial data input,串行输出和输入;
主机模式和从机模式,硬件定义之后不可随意更改,因为对于port属性来说,该引脚只能当做串行输入或输出,而mcal本身对于引脚的模式定义是松散的,s32k314中引脚只能作为输入或输出一种来使用。
即:
主机模式mo,从机模式so,对应同一个引脚,属性都是都是serial data output ;
主机模式mi,从机模式si,对应同一个引脚,属性都是serial data input;
3.SPI:
SpiExternalDevice:

主要配置:
SPI总线时钟的相位极性 :CPOL CPHA ;
CS与CLK的时间间隔;
SpiPhyUnit:

主要配置:
SPI 主从模式;
SPI 时钟
SPI DMA通道
4.MCL:

主要配置:
使能DMA;
DMA Logic Instance

主要配置:
选择硬件实例;
DMA Logic Channel


主要配置:
DMA的通道号;
DMA的中断 SPI发送回调(发送回调实现在Lpspi_Ip_Irq.c);
错误中断的回调函数(自主实现);
使能全局配置;
Global:


主要配置:
DMA MUX Source;
无需使能 DMA Request;
使能错误中断;
5. 中断配置:
如果使用autosar配置工具,请使能DMA CH发送接收中断:
中断标号:
S32K3XXRM.pdf \ S32K3xx_interrupt_map.XLSX

或者在Platform 使能DMA中断:

注意:无需配置SPI中断;
使用到的接口函数:
Mcl_Init;
Spi_Init;
Spi_SetAsyncMode;
Spi_SetupEB;
Spi_AsyncTransmit;
6.总结:
1. 查看NXP的MCAL工具包:
Spi_TS_T40D34M20I3R0\doc\RTD_SPI_UM :
明确了SPI DMA该如何配置
2. 尤为注意的是:
SPI 管脚的PORT口的配置,配置错误会导致SPI从机无法接收到有效数据;
SPI传输的数据位宽:如果选择32bit ,则需要 __attribute__(( aligned(32) )),否则或产生接收错误;
参考:
Spi_TS_T40D34M20I3R0\doc\RTD_SPI_UM.pdf
S32K3XXRM.pdf
PS: 如有笔误,请帮忙指出,有问题请留言,欢迎探讨。
1648

被折叠的 条评论
为什么被折叠?



