用好DMA控制器这两种模式 MCU效率大大提高!

用好DMA控制器这两种模式 MCU效率大大提高!

关键词: 嵌入式, 单片机, 工作原理

问:充分利用两种直接存储器访问 ( DMA ) 控制器的模式

直接存储器访问 ( DMA ) 控制器,可以在内存和/或外设之间传输数据,而不需要 CPU 参与每次传输。

充分利用两种 DMA 模式(兵乓模式多数据包缓冲传输模式),可以帮助提高 MCU 效率。

USB 外设 是一个很好的外设示例,早期的 USB 实现的最大吞吐量只有1.5 Mb/秒。随着更高性能的标准版本的出现。比如要接近12 Mbit/s全速 USB 标准的理论最大值。我们来看看,数据传输方面 DMA 如何帮助提高 MCU 效率!

我们以 Microchip  ATXMEGA16D4-MH 举例。

A close-up of a microchip

Description automatically generated
AVR® XMEGA® D4 微控制器ATXMEGA16D4-MH


兵乓模式

之前通常使用单个存储器缓冲区进行外设数据传输。如果数据缓冲区已满,MCU 将响应 NAK (否定确认)消息。接收到 NAK 后,主机将等待并稍后重试传输。它将继续重试,直到 MCU 能够成功接收数据。

ATXMEGA16D4-MH 使用乒乓模式来消除这个问题。乒乓模式使用两个存储单元( memory banks )进行数据传输。当一个存储单元满时,主机可以将数据传输到另一个存储单元。在两个存储单元之间交替传输可以避免复审,并提高整体数据带宽。

image
乒乓模式提高了效率(图片来源于 Microchip )


此外,如上图所示,以乒乓模式还使 MCU 有更多时间来处理数据。如图所示,没有乒乓,CPU 只能处理传输之间的数据。使用乒乓模式,CPU 可以在传输周期的一部分时间内处理数据,并降低 NAK 被要求“赶上”数据处理要求的可能性。

多数据包缓冲传输模式

另一个很有用的模式,可以让 MCU 的数据传输更高效。这个特性叫做“多数据包缓冲传输模式”。如果你要通过 USB 端口传送的数据包,超过了全速 USB 的 BULK 传输模式所允许的最大值(64字节),那么就可以用上这个模式。以前,你需要在主机上把数据包分成小块,然后在接收端把它们合并,这会增加中央处理器( CPU )的负担。不过现在,多数据包缓冲功能加入了 USB 设备,它会在数据包超过 USB 标准大小时自动帮你分割和合并数据。重要的是,这个模式还能减少中断的次数,因为只有在整个传输结束后才需要中断 CPU。这意味着,CPU 可以处理其他任务,或者进入休眠模式,直到整个传输完成并且准备好处理。

最后:

结合“乒乓缓冲”和“多传输模式”,你可以把传输的带宽提升,更重要的是,在使用这两个功能的情况下,CPU 的负担也降低。这两个功能的结合,不仅在性能上有所改进,而且还能节省能源。

更多相关技术内容, 请参考下面帖子:

******

如有任何问题,欢迎联系得捷电子DigiKey客服团队。

中国(人民币)客服
- 400-920-1199
- service.sh@digikey.com
- QQ在线实时咨询 |QQ号:4009201199

中国(美金)/ 香港客服
- 400-882-4440
- 8523104-0500
- china.support@digikey.com

Digikey WeChat QR Code

到微信搜寻“digikey”或“得捷电子
关注我们官方微信
并登记成会员,
每周接收工程师秘技,
赚积分、换礼品、享福利

头像
得捷电子

评论已关闭。

Copyright©DigiKey Electronics