完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我最近使用新生产的SM32H7 MCU,目前正在将一些旧代码迁移到它们(我想看看他们如何处理一些需要更高速度的应用程序)。H7具有DMA请求多路复用器,在我曾经使用的旧F7,F4或F3中不存在。在后一种模型中,通过向DMA_x Stream_y控制寄存器输入正确的值来完成DMA通道映射。例如 DMA2_Stream3->CR |= (0x3 << DMA_SxCR_CHSEL_Pos);将为DM2 Stream3选择第三个通道(在F7 MCU的情况下,这将对应于SPI1 TX DMA请求: 据我所知,DMA流到DMA通道映射不再是“硬连线”,它可以在H7系列中手动重新配置。正如手册所述,必须使用DMAMux1将DMA请求线路连接到DMA通道。不幸的是,DMAMUX配置在参考手册中描述得相当差。我还没有意识到如何准确DMA流,外设和DMA通道通过多路复用器互连。下面是一段代码,理想情况下应该是
|
|
相关推荐
7个回答
|
|
你的DMAMUX配置正确,只需要初始化DMAMUX1_CCR_DMAREQ_ID寄存器。
|
|
|
|
你能详细说明吗?这不是: // 5. Use DMAMux1 to route a DMA request line to the DMA channel. DMAMUX1_Channel0->CCR = (37u << DMAMUX_CxCR_DMAREQ_ID_Pos); 行吗?
|
|
|
|
是的,确实如此。DMAMUX不需要任何其他配置。
|
|
|
|
好的,我会尽快尝试重建这个项目。与此同时,您能否解释DMAMUX-CxCR寄存器中的SYNC_ID位和请求发生器寄存器(DMAMUX_RGxCR)?什么时候需要使用那些?此外,如何将DMA流“附加”到特定外设?在我上面的例子中,我选择了DMA2_Stream3和DMAMUX1_Channel0,但实际上没有一段代码将两者连接在一起。
|
|
|
|
只是dmamux1_channel0硬连线到dma1_stream0,dmamux1_channel8到dma2_stream0等等。它需要从一个事件源同步启动多个dma。
|
|
|
|
我设法让SPI DMA运行。在下面发布我的工作代码:
|
|
|
|
现在考虑所有事情,DMAMUX的基本功能并不太难。手册指出:
DMAMUX1通道0到7连接到DMA1通道0到7 DMAMUX1通道8至15连接到DMA2通道0至7 DMAMUX2通道0到7连接到BDMA通道0到7 这些以及多路复用器输入到资源表的分配是使DMA运行的关键(至少以与旧系列MCUS相同的方式运行)。例如,SPI1_TX位于DMAMUX1的第38个DMA请求MUX输入上(参见参考手册中的表110)。这意味着我可以使用DMA1或DMA2(而不是BDMA,因为它链接到DMAMUX2)。我可以选择我想要的任何流,他们只需要遵循以下规则: DMA1_Stream_x - > DMAMUX1_Channel_x DMA2_Stream_x - > DMAMUX1_Channel_(x + 8) 因此,这就是通过DMAMUX的特定通道将外设实际链接到DMA流的方式。 还有几点需要注意: 不要忘记设置SPI_CR1_CSTART位(这是H7的新功能)。 注意SPI->CR2寄存器。如果为其写入值,则SPI传输将在预定义的数据传输开始后停止。如果我设置了CR2,那么无限循环(如我的示例所示)将无法工作(我们只会获得一次完整的SPI传输)。 虽然现在整个事情对我来说似乎有点明显,但我仍觉得参考文献中的信息有些缺乏。旧系列手册中的DMA操作稍微好一点。例如,我仍然不知道如何(以及何时)利用DMAMUX的剩余功能(如请求生成器和诸如此类)。此外,我不太确定如何实现内存到内存的传输。 我希望这有助于任何想深入研究ARM编程的人。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1401 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1335 浏览 3 评论
2785 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1478 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1911 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 12:35 , Processed in 0.749041 second(s), Total 86, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号