完善资料让更多小伙伴认识你,还能领取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的选项
2827 浏览 1 评论
3267 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1844 浏览 1 评论
3693 浏览 6 评论
6098 浏览 21 评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
395浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
487浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
316浏览 2评论
使用STM32F407VET6的USB2.0功能,发现ctl后芯片无数据返回,是什么原因可能导致的呢?
235浏览 2评论
用STM32G431开发工程,1.50版本的Package包文件无法输出项目工程
339浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 08:41 , Processed in 1.044330 second(s), Total 46, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号