李尔 - [S32K3] 利用 DMA 进行 SPI 异步传输 你好,团队、
李尔写道
-------------------------------------------------------------------------------------
我们正在对一个需要控制许多 SPI 设备的用例进行微控制器可行性分析。我正在使用 S32K344 开发板,我已将 SPI4 和 SPI5 配置为定期与 5 台设备通信。我已经成功地使用中断模式采取了同步和异步写入措施,但在尝试使用 DMA 时却没有成功。
我按照 SPI UM 和 IM 中的提示进行了操作,也看了一些示例,但还是无法正常工作。
我附上了我的配置,信道16的DMA ISR产生了触发信号,但没有发送任何数据,而且由于中断标志未被清除,代码被卡在中断中。
能否支持我们通过 DMA 配置 SPI?
-------------------------------------------------------------------------- 优先级:高 优先级:中等 RTD Re: Lear - [S32K3] SPI async transmission with DMA 你好@StefanoGattazzo 附件中的文件是空的,您能再检查一下吗? Re: Lear - [S32K3] SPI async transmission with DMA 您好 cuongnguyenphu,
我想,这种配置应该是 cjecked。
BR Stefano Re: Lear - [S32K3] SPI async transmission with DMA 你好@StefanoGattazzo 您是否为 Tx 和 Rx 使用了散射和收集配置? - 如果不使用 -> 请取消选中 Mcl/MclConfig/dmaLogicChannel_Type/dmaLogicChannel_EnableScatterGather 选项:
- 如果使用 Scatter/Gather: 确保勾选为所有 ScatterGatherArrayType 启用 Scatter/Gather 配置:
Re: Lear - [S32K3] SPI async transmission with DMA 您好 cuongnguyenphu,
李尔正在回答:
--------------------------------------------------------------------------------------
在只使用全局配置的情况下,我们可以使 SPI 异步与 DMA 配合使用,但这种配置会因 DMA ISR 而对 CPU 负载造成很大影响,因此这种配置对我们的特定用例没有用处。
这就是为什么我想让它在启用散射/散射选项的情况下工作,看看在这种模式下 CPU 负载是否会有所改善。我按照您的建议为所有 ScatterGatherArrayType 启用了 Scatter/Gather Config,但还是出现了同样的问题。由于 MCAL 文档不清楚,我在此附上项目配置,请与你们的 RTD 团队分享,看看他们能否帮助我们完成此配置。
------------------------------------------------------------------------------------
BR
斯特凡诺 Re: Lear - [S32K3] SPI async transmission with DMA @StefanoGattazzo 在启用散射/聚集配置后,我建议您参阅以下章节 3.6.6 如何为序列配置 Dma 快速传输 章节。 我查看了该指令,配置 SpiEnableDmaFastTransfer 非常清楚。 我看到您使用 LPSPI_4 进行 Dma 快速传输,因此请按照此指南进行操作。 在您的配置中,我还发现一点,那就是 JobStartNotification 和 JobEndNotification 并不符合指南的要求:
序列中的 第一个作业只能支持 SpiJobStartNotification 和 SpiJobEndNotification Re: Lear - [S32K3] SPI async transmission with DMA 您好 cuongnguyenphu,
李尔回复:
用户手册中的信息是不够的。它没有详细说明如何配置 ScatterGatter 频道,我一直在尝试不同的配置,但无法连续发送多个频道。
请举例说明或详细说明每个 scatterGather 通道需要配置的参数。
Re: Lear - [S32K3] SPI async transmission with DMA 我正在为您创建一个 Scatter/Gather DMA 示例。这将被视为 BSSM 申请。 同时,请建议他们为 MCL 模块中的 Tx/Rx DMA 逻辑通道启用该节点:启用 DMA 请求。 此节点允许外围设备触发 DMA 请求
Re: Lear - [S32K3] SPI async transmission with DMA 您好 cuongnguyenphu,
李尔回答道:
难道不能召开一次调试会议,让我们审查配置,并由 RTD 团队支持我们进行测试吗?
请提供合适的时间段和与会者。
Pd:我已启用 DMA 请求,但没有任何变化。
BR Stefano Re: Lear - [S32K3] SPI async transmission with DMA @StefanoGattazzo 我通过电子邮件将示例发给了李尔 Re: Lear - [S32K3] SPI async transmission with DMA 您好 cuongnguyenphu,
请发送至
[email protected]
我在度假。
谢谢,BR Stefano Re: Lear - [S32K3] SPI async transmission with DMA @StefanoGattazzo 请帮我测试一下这个例子,然后再发给李尔。 我创建了 1 个序列 Lpspi_1,其中 1 个工作 2 个通道以 SPI DMA 快速传输方式发送。 请按照 description.txt 进行构建和导线连接