AUTOSAR实验九 SPI的DMA传输

目录

一、实验目的 

二、实验环境

三、实验步骤

四、配置

五、实现代码

========================================================

一、实验目的 

(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);

发布了39 篇原创文章 · 获赞 29 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/wx601056818/article/details/104928643