Tool/software:
Hi Ti team,
we are working on DMA Controller and we are Accessing DMA through SPI2.
How to confirm Whether DMA is working or not
T_BOOL Spi2DMALpbk()
{
T_BOOL return_status = FALSE;
T_UINT16 tx_data = M_CLEAR;
T_UINT16 rx_data = M_CLEAR;
volatile T_UINT32 delay = M_ZERO;
//T_SPI_LOOPBACKTYPE lpbk_type = DIGITAL_LBK;
SpiDrvInit();
SpiInit(SPI2);
SpiSetOperatingMode(SPI2, SPI_SLAVE_MODE);
//SpiEnableLoopback(SPI2, &lpbk_type);
tx_data = M_PATTERN2;
SpiTransmitData(SPI2, &tx_data, M_ONE);
//SpiTxDMAPoll(SPI2, &tx_data, M_ONE);
//SpiReceiveData(SPI2, &rx_data, M_ONE);
SpiRxDMAPoll(SPI2, &rx_data, M_ONE);
if(tx_data M_EQUAL rx_data)
{
return_status = TRUE;
}
else
{
return_status = FALSE;
}
SpiDisableLoopback(SPI2);
return return_status;
}
Void SpiDrvInit (void)
{
/* SPI2 base register. */
Spi_driver_detail[SPI2].pt_spi_reg = M_SPI2_REG;
/* VIM Interrupt channel. */
Spi_driver_detail[SPI2].t_vim_channel_no = M_SPI2_VIM_INT_LVL0_CHNL;
/* SPI2 DMA transmit and receive channel numbers. */
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_tx_chl\
= M_SPI2_DMA_TX_CHANNEL;
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_rx_chl\
= M_SPI2_DMA_RX_CHANNEL;
/* SPI2 DMA transmit and receive request numbers. */
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_tx_reqline\
= M_SPI2_DMA_TX_REQLINE;
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_rx_reqline\
= M_SPI2_DMA_RX_REQLINE;
/* Set DMA source memory address to NULL. */
Spi_driver_detail[SPI2].t_spi_dma_details.pt_dma_src_mem =\
NULL;
/* Set DMA destination memory address to null. */
Spi_driver_detail[SPI2].t_spi_dma_details.pt_dma_dest_mem =\
NULL;
/* SPI2 DMA transmit and receive channel priority. */
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_tx_pri\
= M_SPI2_DMA_TX_PRI;
Spi_driver_detail[SPI2].t_spi_dma_details.t_spi_dma_rx_pri \
= M_SPI2_DMA_RX_PRI;
/* Set RX initiated flag to 0. */
Spi_driver_detail[SPI2].t_spi_dma_details.\
t_spi_dma_initiated = M_ZERO;
}
Please help us soon.
Thnaks