SPI最大传输速率【转】

简介: 转自:https://www.silabs.com/community/mcu/8-bit/knowledge-base.entry.html/2017/01/13/spi_-asc0 问题 SPI作为master或slave时可以达到的最大传输速率是多少 ? 答案 SPI最大传输速率受以下几个条件影响: SPI的最大时钟频率 CPU处理SPI数据的能力 输出端驱动能力(PCB所允许的最大信号传输速率)   SPI的最大时钟频率 一般情况下,SPI模块的最大时钟频率为系统时钟频率的1/2。

转自:https://www.silabs.com/community/mcu/8-bit/knowledge-base.entry.html/2017/01/13/spi_-asc0

问题

SPI作为master或slave时可以达到的最大传输速率是多少 ?

答案

SPI最大传输速率受以下几个条件影响:

  1. SPI的最大时钟频率
  2. CPU处理SPI数据的能力
  3. 输出端驱动能力(PCB所允许的最大信号传输速率)

 

SPI的最大时钟频率

一般情况下,SPI模块的最大时钟频率为系统时钟频率的1/2。虽然SPI的传输速率主要受限于CPU处理SPI数据的能力,但在同另一个非常高速率的SPI设备通讯时,SPI的最大时钟频率将有可能制约其传输速率。

 

CPU处理SPI数据的能力

通常情况下,考虑到系统中CPU有可能需要处理其他任务,以及对所接收SPI数据的具体运算处理方法,CPU处理SPI数据的能力将影响到整体的传输速率。

例如,系统在收到SPI数据后只是作简单的累加。如果当前SPI模块的时钟频率是1/2系统时钟频率,接收每一个SPI byte将需要16个系统时钟周期。那么在下一笔SPI数据接收到之前CPU有足够的时间来处理当前数据,此时SPI的最大传输速率即为系统时钟的1/2。

接下来考虑另外一种情形,假设CPU有50%的时间用于处理其他任务,同时对所接收到的每byte SPI数据,需要100个系统时钟周期来作运算处理。每接收1 byte SPI数据,CPU需要100个时钟周期来作处理,同时需要100个时钟周期来处理其他任务,因此总共需要消耗200个系统时钟周期。用公式表达如下:

200 *Tsysclk = 8 * Tspiclk;

spiclk = sysclk/25;

因此,在这个例子中,我们可以看出SPI的最大传输速率由CPU处理SPI数据的能力所决定。

 

输出端驱动能力

最后要考虑的因素是输出节点的驱动力。PCB上的微量电容和器件引脚的输出阻抗相结合,将会形成一个低通滤波器,限制设备间信号的传输速度。通常该滤波器的截止频率可以近似为:

Fmax = 1 /(2 × π × Rdrive * Ctrace);

其中Rdrive是所驱动的最大阻抗值,Ctrace表示输出节点所驱动的所有微量电容的总和。

在固定阻抗条件下,电路的微量电容将成为制约SPI传输速率的因素。系统中如果设备间的距离非常短(Ctrace较小值),那么CPU的处理能力或SPI的时钟频率将是主要限制因素。如果系统中总线上有多个SPI设备,同时设备间的连线很长(Ctrace较大值),那么输出驱动能力将制约SPI的传输速率。

  • 8 位 MCU
  • Knowledge Base Articles
  • 接口

 

Level 6

 

Jiehui

Employee

Replied Mar 28 2017, 8:00 PM


 【作者】张昺华

 【出处】http://www.cnblogs.com/sky-heaven/

 【博客园】 http://www.cnblogs.com/sky-heaven/

 【新浪博客】 http://blog.sina.com.cn/u/2049150530

 【知乎】 http://www.zhihu.com/people/zhang-bing-hua

 【我的作品---旋转倒立摆】 http://v.youku.com/v_show/id_XODM5NDAzNjQw.html?spm=a2hzp.8253869.0.0&from=y1.7-2

 【我的作品---自平衡自动循迹车】 http://v.youku.com/v_show/id_XODM5MzYyNTIw.html?spm=a2hzp.8253869.0.0&from=y1.7-2

 【新浪微博】 张昺华--sky  

 【twitter】 @sky2030_  

 【facebook】 张昺华 zhangbinghua  

 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.  

目录
相关文章
|
编解码 安全 网络协议
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
实测:游戏情景中,远控软件实力如何?一篇告诉你ToDesk的强大之处
|
3月前
|
人工智能 自然语言处理 机器人
电话语音机器人实时打断怎么测?Barge-in延迟、误触发与状态恢复测试方法
实时打断不只是“用户说话后机器人停止播放”。完整的Barge-in测试还要验证打断识别、TTS停止、语义接收、旧状态撤销和任务恢复。本文给出测试链路、用例设计、日志结构与统计脚本。
396 2
|
9月前
|
IDE 安全 开发工具
告别频繁切换分支!用 Git Worktrees + Claude Code 构建高效并行开发流
本文介绍 Git Worktrees 与 Claude Code 的高效组合:用 Worktrees 创建多分支独立工作区,零拷贝、秒级切换;Claude 则在隔离环境中安全试错、并行开发。告别 stash 焦虑,实现真正并行开发流。(239字)
4462 1
|
网络安全
wegame登录失败错误代码7610001该怎么解决?wegame错误代码7610001解决方法
WeGame错误代码7610001通常由防火墙或网络问题引起,可尝试删除WeGame相关防火墙规则后重新登录。此外,显卡驱动问题也可能导致此错误,建议使用驱动修复工具更新显卡驱动。本文还介绍了关闭防火墙及设置DirectX加速等解决方法,并提供相关软件下载链接,帮助你快速修复问题。
5096 3
wegame登录失败错误代码7610001该怎么解决?wegame错误代码7610001解决方法
|
前端开发
CSS——@layer规则
CSS——@layer规则
443 2
CSS——@layer规则
|
人工智能 自然语言处理 API
ModelScope是什么
【9月更文挑战第1天】ModelScope是什么
5104 2
|
运维 Ubuntu 网络安全
Ubuntu 虚拟机全面安装指南:下载、配置与远程连接
通过这些配置,用户可以确保从可靠的来源获取最新的软件包和安全补丁。apt命令用于管理软件包,支持自动解析依赖关系,是Ubuntu推荐的软件管理工具。
|
SQL Java 关系型数据库
MyBatis-Plus 分页魅力绽放!紧跟技术热点,带你领略数据分页的高效与便捷
【8月更文挑战第29天】在 Java 开发中,数据处理至关重要,尤其在大量数据查询与展示时,分页功能尤为重要。MyBatis-Plus 作为一款强大的持久层框架,提供了便捷高效的分页解决方案。通过封装数据库分页查询语句,开发者能轻松实现分页功能。在实际应用中,只需创建 `Page` 对象并设置页码和每页条数,再通过 `QueryWrapper` 构建查询条件,调用 `selectPage` 方法即可完成分页查询。MyBatis-Plus 不仅生成分页 SQL 语句,还自动处理参数合法性检查,并支持条件查询和排序等功能,极大地提升了系统性能和稳定性。
790 0
|
定位技术
利用MultCloud在线复制传输不同网盘之间的数据:支持谷歌Drive、百度网盘等
利用MultCloud在线复制传输不同网盘之间的数据:支持谷歌Drive、百度网盘等
2504 2
|
存储 Python
数据类型:计算机科学中的基石
在计算机科学中,数据类型是程序设计的基本组成部分,它决定了如何在计算机内存中存储数据,以及如何对这些数据进行操作。不同的数据类型有不同的存储需求、取值范围以及可进行的操作。了解并正确使用数据类型是编写高效、健壮程序的关键。
764 0