This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:DMA 控制器

Guru**** 2386610 points
Other Parts Discussed in Thread: TMS570LC4357
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1437663/tms570lc4357-dma-controller

器件型号:TMS570LC4357

工具与软件:

尊敬的 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kusuma:

    在以下路径中、我们有几个经过测试和正常工作的 SPI DMA 示例、请参考:

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    所有这些项目都是经过测试的示例、您可以参考它们。  

    如果 DMA 工作、那么预期的操作应该是成功的、例如、如果您使用 DMA 进行 SPI 传输、那么 RAM 缓冲区中的数据将逐帧移入 SPI OUT。 如果您在 SPI 接收侧使用 DMA、则来自 SPI IN 行的数据将移动到 RAM 缓冲区。

    ——
    谢谢、此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 您的信息。

    我们只在上面的工作区 中使用,因为我们无法在 RX 缓冲区中看到数据。

    谢谢

    Kusuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kusuma:

    似乎您正在将 TMS570LC4357操作为 SPI 从模式、对吧?

    您如何向从站提供数据? 您是否将任何主设备连接至它、或者您只是在回送模式下发送数据?

    ——
    谢谢、此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Jagadish ,

    我们能够 通过 DMA 发送和接收数据、知道其工作正常。

    谢谢  

    Kusuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很高兴听到这个消息! 太棒了。