目录
一、实验目的
二、实验环境
三、实验步骤
四、配置
五、实现代码
========================================================
一、实验目的
(1)通过spi进行通信,DMA方式传输数据。
二、实验环境
Window10
服务器:windows
和服务器交互软件 winscp putty
Autosar Version: 4.2.2
Tresos studio 23.0
MCAL Version: S32K14X_MCAL4_2_RTM_HF8_1_0_1
Compiling environment:greenhill 201714
调试环境:PE
三、实验步骤
大致上和实验七差不多,多配置一个DMA
四、配置
在general窗口中配置
路径:SpiPhyUnit》》SpiPhyUnit_0
路径:mcl》》mclconfigset》》DMA Logical Channel
五、实现代码
注意在DMA通知函数中要添加DMA传输完成函数
void DMA_SPI0_RX_Notification()
{
Spi_LPspi_IsrRxDma_LPSPI_0();
}
Main.c中声明
extern void Spi_LPspi_IsrRxDma_LPSPI_0(void);
extern void Spi_LPspi_IsrTxDma_LPSPI_0(void);
初始化部分
/*init Mcl*/
Mcl_Init(&MclConfigSet_0);
Gpt0函数中
if(Spi_GetHWUnitStatus(0)!=SPI_BUSY)
{
Spi_SetupEB(SpiConf_SpiChannel_P_BOOST_SSN, SampleApp_ucSource, SampleApp_ucDest, 8);
Spi_AsyncTransmit(SpiConf_SpiSequence_SpiSequence_BOOST);
}
中断函数注册
extern ISR(Spi_LPspi_IsrTDF_LPSPI_0);
extern ISR(Spi_LPspi_IsrTDF_LPSPI_1);
extern ISR(Spi_LPspi_IsrTDF_LPSPI_2);
sys_registerIsrHandler(DMA1_IRQn,(uint32)&MCL_DMA_CH_1_ISR);
sys_enableIsrSource(DMA1_IRQn, 0x60);
sys_registerIsrHandler(DMA2_IRQn,(uint32)&MCL_DMA_CH_2_ISR);
sys_enableIsrSource(DMA2_IRQn, 0x60);