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  

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

目录
相关文章
|
存储 编解码 算法
信道编码概述 |带你读《5G空口特性与关键技术》之六
纠错编码的目的,是通过尽可能小的冗余开销确保接收端能自动地纠正数据传输中所发生的差错。在同样的误码率下,所需要的开销越小,编码的效率也就越高。
12318 2
信道编码概述 |带你读《5G空口特性与关键技术》之六
|
编解码 定位技术
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
505 0
|
存储 安全 对象存储
如何简单快速搭建自己的云对象存储服务(OSS)
简单来说,其实我们只需要有一台服务器,利用服务器的各种资源,搭配其它厂商开发的软件,就能很轻易拥有自己的云对象存储服务。不需要在阿里云上花钱买什么服务,甚至还能自己给别人提供服务,真的是太爽了。
|
8月前
|
人工智能 算法 Cloud Native
华为、埃森哲都在用的培训法则:3大战场拆解与8家破局者图谱
但当企业竞争进入“深水区”,当AI技术以周为单位迭代时,堆砌知识量 → 标准化课件 → 单向灌输这套模式注定失效。真正的破局者在哪里?那些能将培训嵌入业务毛细血管,用真实项目倒逼能力跃迁,靠前沿技术直击行业痛点的机构,正在改写游戏规则。
|
11月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
11月前
|
API 数据安全/隐私保护 开发者
实时获取小红书详情 API 数据
小红书详情API数据获取指南:注册开发者账号,创建应用并申请接口权限,构建请求获取笔记详情,使用Python等语言处理响应数据。需遵守使用规则,注意调用频率和数据安全。
|
11月前
|
算法 调度 UED
深入理解操作系统的进程调度机制
本文旨在探讨操作系统中至关重要的组成部分之一——进程调度机制。通过详细解析进程调度的概念、目的、类型以及实现方式,本文为读者提供了一个全面了解操作系统如何高效管理进程资源的视角。此外,文章还简要介绍了几种常见的进程调度算法,并分析了它们的优缺点,旨在帮助读者更好地理解操作系统内部的复杂性及其对系统性能的影响。
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
242 0
|
前端开发 测试技术 数据安全/隐私保护
软件测试 —— 测试用例设计报告
软件测试 —— 测试用例设计报告
394 1
|
存储 安全 Cloud Native
阿里云企业扶持计划最低3500元、最高100万元申请流程及常见问题解答
阿里云创业者计划是专为初创企业设计的一项扶持计划,旨在帮助初创企业快速构建智能时代的核心竞争力,同时聚合多方资源,为初创企业提供全方位的赋能与服务。成功加入该计划后,阿里云将提供最低3500元、最高100万元的上云抵扣金,让初创企业以零成本享受云资源和技术服务,开启智能时代创业新范式。
阿里云企业扶持计划最低3500元、最高100万元申请流程及常见问题解答