完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我在一个项目中使用 STM32L4S9AII6 MCU,我被要求用这个 CPU 替换 FPGA 实现。我们正在通过 SPI、I2C 和 UART 最大化所有 14 个 DMA 流。你可以想象,我正在处理一些严重的硬实时截止日期。我正在使用 FreeRTOS。
我认为这是一个在论坛上讨论的令人困惑的话题,所以让我用一个例子来提出我的问题。假设我配置了 2 个 SPI 外围设备。我们称它们为 SPI1 和 SPI2。两者都以 10MHz 或其他频率传输。两者都配置为一次传输 8 位(1 字节)。两条 NSS 线均通过软件控制,以允许在块传输的整个持续时间内将此使能线拉低(每个 DMA 请求多个字节)。现在假设 SPI1 尝试传输一个 8 字节的块。紧接着,SPI2 也尝试传输一个 8 字节的数据块。 问题: DMA 引擎是否在 SPI1 上阻塞,直到 SPI1 完成所有 8 个字节的传输,然后允许 SPI2 开始传输其第一个字节? -或者- DMA 引擎是否仅在从 SPI1 检索完成/缓冲数据(一次 1 个字节)时才阻塞,然后在需要时请求下一个字节?然后 DMA 仲裁器将有机会使用 SPI1 字节之间的时间来启动 SPI2 上的传输。 我的观点是,当 DMA 不是负责传输数据的实体时,为什么 DMA 必须在外围设备上阻塞。在我看来,DMA 只需要阻塞足够长的时间来让每个外设保持忙碌,因此应该能够同时让多个外设保持忙碌。 也就是说,DMA可以让外设并行传输吗? |
|
相关推荐
1个回答
|
|
DMA 可以“同时”服务多个事物,并且仅在有请求时才传输数据。如果没有挂起的 SPI1 请求,它将为 SPI2 服务。从技术上讲,它一次只做一个,但没有等待标记请求的事情。
但是,L4+ 有一个 SPI TXFIFO,可以一次保存多个字节。根据您的设置,将发出多个 SPI1 请求,以便在为 SPI2 请求提供服务之前填充 32 位缓冲区。 实际上,只有 SPI 可以在这里开始对资源征税,但只能以最大数据速率进行。在 10 MHz 时,a 请求每个 ~1MHz 一次在两个外围设备上是非常可行的。UART 和 I2C 很慢。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2642 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3611 浏览 6 评论
5989 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 07:11 , Processed in 1.218422 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号