工具与软件:
尊敬的 TI 团队:
我们正在研究 DMA 控制器 、并通过 SPI2访问 DMA。
如何确认 DMA 是否正常工作
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);
如果(TX_DATA M_EQUAL RX_DATA)
{
return_status = true;
}
设计
{
return_status = false;
}
SpiDisableLoopback (SPI2);
返回 return_status;
}
空 SpiDrvInit (空)
{
/* SPI2基址寄存器。 */
SPI_DRIVER_DETAILY[SPI2].pt_spi_reg = M_SPI2_REG;
/* VIM 中断通道。 */
SPI_DRIVER_DETAIL[SPI2].t_vim_channel_no = M_SPI2_VIM_INT_LVL0_CHNL;
/* SPI2 DMA 发送和接收通道编号。 */
SPI_DRIVER_DETAI[SPI2].t_SPI_DMA_DETAILS.t_SPI_DMA_TX_CHL\
= M_SPI2_DMA_TX_CHANNEL;
SPI_DRIVER_DETAILY[SPI2].tt_SPI_DMA_DETAILS.t_SPI_DMA_RX_CHL\
= M_SPI2_DMA_RX_CHANNEL;
/* SPI2 DMA 发送和接收请求编号。 */
SPI_DRIVER_DETAILLE[SPI2].tt_SPI_DMA_DETAIL.t_SPI_DMA_TX_REQLINE\
= M_SPI2_DMA_TX_REQLINE;
SPI_DRIVER_DETAILLE[SPI2].tt_SPI_DMA_DETAIL.t_SPI_DMA_Rx_reqline\
= M_SPI2_DMA_RX_REQLINE;
/*将 DMA 源存储器地址设置为 NULL。 */
SPI_DRIVER_DETAI[SPI2].t_spi_dma_details.pt_dma_src_mem \\
null;
/*将 DMA 目标存储器地址设置为空。 */
SPI_DRIVER_DETAI[SPI2].t_spi_dma_details.pt_dma_dest_mem \\
null;
/* SPI2 DMA 发送和接收通道优先级。 */
SPI_DRIVER_DETAI[SPI2].t_SPI_DMA_details.t_SPI_DMA_TX_pri\
= M_SPI2_DMA_TX_PRI;
SPI_DRIVER_DETAI[SPI2].t_SPI_DMA_details.t_SPI_DMA_rx_pri\
= M_SPI2_DMA_RX_PRI;
/*将 RX 启动的标志设置为0。 */
SPI_DRIVER_DETAILY[SPI2].tt_SPI_DMA_DETAIZER.\
T_SPI_DMA_initiated = M_zero;
}
请尽快帮助我们。
Thnaks