完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我们正在研究 ST32MP1。当电路板在工程模式下工作时,SPI3 可以与结合了 DMA2 和 FIFO 的 CubeMX 软件一起正常工作。但是如果我执行由 Linux 加载的相同软件(rproc 启动),如果我使用函数 HAL_SPI_Transmit_DMA() 而不是使用 HAL_SPI_TransmitReceive_DMA(),则 DMA2 SPI 流停止工作。例如,如果要传输的字节数大于 33,则 DMA 将在 NDTR DMA 寄存器中的字节数处停止。
在工程模式下,这可以在相同的设置下正常工作。我测试了很多(链接器、堆栈、内存、FIFO 开/关...),但不知道为什么在 M4 only 模式下,一切正常。此外,如果我占用 30 个字节,则第一批数据由 DMA 传输,然后 SPI_ISR 被更新大约 15 次以发送其余数据......对于 40 个字节,DMA IRQ 是一个,但在大约 15 个字节之后并且不调用 SPI IRQ。 有点好奇,但实际上,我不知道仅在生产模式下使用传输会出现什么问题。 有任何想法吗? |
|
相关推荐
1个回答
|
|
我们收到一位 DMA 专家的回复,其中解释说如果 A7 内核不使用这两个 DMA,则可以不重置设备。
下面是他的部分回复: “当 M4 使用 dma2 并且重置属性位于设备树中时,我们应该避免重置 dmamux。 请注意,稍后在探测中,CxCR 寄存器会根据 dma_requests 被清除: /* 重置 dmamux */ for (i = 0; i < stm32_dmamux->dma_requests; i++) stm32_dmamux_write(stm32_dmamux->iomem, STM32_DMAMUX_CCR(i), 0); dma requests 是 dma-masters 节点中 dma-requests 属性的总和,因此 dma1 和 dma2。如果为 M4 使用禁用 dma2,则不会清除 x = [8:15] 的 CxCR。” 提案补丁附在本邮件中。 如果在 dma-masters 中仅指定一个或少于一个 dma,此补丁将禁用重置:
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2600 浏览 1 评论
3200 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1774 浏览 1 评论
3597 浏览 6 评论
5978 浏览 21 评论
928浏览 4评论
1305浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
573浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1292浏览 3评论
1347浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 06:12 , Processed in 1.127832 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号