首页/文章/ 详情

超快理解SPI、I2C、UART

3月前浏览3846

点击蓝字 关注我们





前言



SPI、I2C和UART在嵌入式系统和微控制器中各自具有独特的优势和适用范围。SPI以其高速性能和全双工特性适用于需要快速数据传输的场景;I2C以其简洁的接口和强大的多主多从功能适用于构建复杂的嵌入式系统;而UART则以其异步通信方式和长距离传输能力在远程通信中发挥着重要作用。这三种通信协议共同为嵌入式系统的硬件设计和设备通信提供了强大的支持。

本文将通过三张GIF图简要快速的讲述三种通信方式的原理及其特点。



SPI


 

SPI

1

定义:SPI是一种高速、全双工、同步的串行


2

工作方式:通过四根线(MISO、MOSI、SCLK、CS)实现了主设备与从设备之间的高效数据传输。MISO(主设备输入/从设备输出)和MOSI(主设备输出/从设备输入)线负责数据的双向传输,SCLK(串行时钟)线提供了同步信号,确保数据的同步收发,而CS(片选)线则用于选择特定的从设备进行通信。


3

适用性:通信协议SPI因其高速特性和简单的接口设计,在需要快速数据传输的场景中尤为适用,如高速ADC/DAC转换、高速存储器访问、以及需要高速通信的传感器和通信模块等


SPI的主要优点



Main advantage

高速传输:SPI通信速度较快,适用于对速度要求较高的应用。


全双工通信:支持同时发送和接收数据,提高了通信效率。


简单的接口设计:使用四根线即可实现通信,降低了硬件设计的复杂性。


SPI的主要缺点



Main Disadvantages

连线复杂:相比I2C和UART,SPI需要更多的线来连接设备。


传输距离受限:由于信号衰减和干扰问题,SPI的传输距离相对较短。


主从模式限制:SPI通常采用主从模式,主设备数量受限,不适用于多主设备场景。



I2C


 

I2C

1

定义:I2C是一种由Philips公司开发的简单、双向二线制同步串行总线。


2

工作方式:它仅通过两根线(SDA数据线、SCL时钟线)实现了主设备与多个从设备之间的双向通信。每个从设备在I2C总线上都有一个唯一的地址,主设备通过发送地址来选择与哪个从设备进行通信。


3

适用性:I2C的这种多主多从特性,使得它非常适合于构建复杂的嵌入式系统,其中多个设备需要共享同一通信总线。此外,I2C还支持广泛的设备类型,包括传感器、EEPROM、ADC、DAC、LCD显示器等


I2C的主要优点



Main advantage

简化硬件设计:仅使用两根线即可实现多个设备之间的通信。


多设备支持:支持多个设备连接到同一总线上,每个设备都有唯一的地址。


低功耗:在空闲状态下,I2C总线上的设备可以进入低功耗模式。


I2C的主要缺点



Main Disadvantages

速度较慢:与SPI相比,I2C的通信速度较低。


总线长度和设备数量受限:过长的总线或过多的设备可能导致通信问题。


冲突处理:当多个设备尝试同时发送数据时,可能会发生冲突,需要额外的冲突检测和处理机制。



UART


 

UART

1

定义:UART是一种异步串行通信协议。


2

工作方式:通过两根线(TX发送线、RX接收线)实现了数据的串行传输。与SPI和I2C不同,UART通信不需要时钟信号来同步数据,而是通过在数据位之间插入起始位和停止位来标识数据的开始和结束。


3

适用性:异步通信方式使得UART能够在较远的距离上传输数据,而不需要担心时钟信号的同步问题。因此,UART在需要长距离通信的场景中非常有用,如微控制器与计算机之间的串行通信、GPS模块的数据传输、以及工业设备之间的远程通信等。


UART的主要缺点



Main Disadvantages

简单的接口设计:仅使用两根线即可实现通信。


广泛的适用性:UART被广泛应用于各种设备之间的通信,具有较好的兼容性。


长距离通信能力:适用于需要长距离传输的场景。


UART的主要优点



Main advantage

异步通信:可能受到噪声和干扰的影响,导致数据传输不可靠。


较低的通信速度:相比SPI和I2C,UART的通信速度较低。


数据帧大小限制:数据帧的大小通常限制为最多9位。




小结



SPI以其高速、全双工通信的特点,成为处理大量数据交换和高性能外设连接的首选方案。其全双工特性确保了数据的同时发送和接收,极大地提高了通信效率,而高速传输能力则满足了现代嵌入式系统对数据处理速度的高要求。I2C以其简洁的接口设计和强大的多设备支持能力,在连接低速外设和构建复杂嵌入式系统方面表现出色。在智能家居、工业控制以及医疗设备等领域,I2C协议广泛应用于传感器网络、数据存储、显示驱动等方面,为系统提供了稳定可靠的通信解决方案。而UART则以其异步通信机制和长距离传输能力,在需要与外部系统或远程设备进行串行通信的场合中占据了一席之地。UART接口简单,易于实现,且与多种设备和系统具有良好的兼容性,使得它成为嵌入式系统与计算机、GPS模块、调制解调器等外部设备通信的常用方式。尽管其通信速度相对较慢,但UART的可靠性和稳定性使得它在许多应用场合中仍然具有不可替代的作用。

GIF来源:www.parlezvoustech.com


来源:Trent带你学硬件
通信控制SCL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-07-14
最近编辑:3月前
Trent硬件设计
签名征集中
获赞 13粉丝 9文章 45课程 0
点赞
收藏
作者推荐

硬件怎么入门?

本文摘要(由ai生成):这篇文章主要介绍了硬件工程师的成长之路,共分为五个步骤:理论基础、工作中应用知识、第一个项目设计、设计检查与调试工具使用、高速设计知识学习。在理论基础部分,强调了数学和模数电的重要性。在工作应用部分,推荐了电路仿真软件。项目设计部分则需要熟练使用 datasheet。调试部分列举了一些常用的测试仪器。最后,文章推荐了一本高速设计相关的书籍。 第一步:理论基础想要成为一名优秀的硬件工程师,一定要有理论基础。只有深厚的理论基础,硬件设计岗位才能走的更远!几本厚厚的书砰的一声放到了你的桌子上:高等数学数、电路分析、模拟电路、数字电路、信号与系统、高频电路、微机接口与原理、ARM Cortex-M3体系结构与编程、DSP信号处理、FPGA原理与应用等等几本大书的重量让你的后背发凉。最基础的还是数学和模数电。 经过不断的刷题和记忆知识点,恭喜你!你终于具备了成为硬件工程师的必备基础知识!第二步:工作中应用知识理论知识是硬件学习的基础,虽然提供了对硬件结构、原理、功能等方面的基本认识。然而理论知识往往是抽象的,它无法完全反映硬件在实际运行中的具体情况。就比如说在学习计算机组成原理时,我们可以了解到CPU、内存、硬盘等部件的基本功能和相互作用,但如果不通过实际操作来观察它们在工作时的状态和行为,就很难形成深刻的理解。 同理,此刻的你虽然具备了相应的理论的知识,但是光有理论知识是很难在实操上有所作为的,还需要掌握把理论转换为实际的技术——电路仿真。 此时的你belike但是不用担心,常用的软件已经给你整理好了,关注trent带你学硬件获取资源!当你掌握这些软件的使用,并学会制作原理图和pcb板后,恭喜你,目前的你已经杀出了新手村,欢迎来到更大的硬件世界!第三步:开始你的第一个项目设计走出新手村的你接到了第一个任务,使用一个你完全没见过的芯片设计一个电路!此时你的十分迷茫,直到你遇到了一个神秘的老人,掏出了一个红红的网页链接——datasheet DP83848C系统图(图片来自datasheet)datasheet是一个提供电子元器件详细信息的在线平台。用户可以通过该网站快速查找和比较元器件的制造商、型号、技术参数、封装等关键信息。能够根据型号、品牌、功能等快速定位到所需的元器件信息。是电子工程师和设计师在进行电路设计和元器件选型时的重要参考工具。熟练掌握之后再做设计事半功倍。第四步:设计检查与调试工具使用一路过关斩将真是畅快淋漓。如今距离成为合格的工程师的梦想已不再是遥不可及,而是近在咫尺,触手可及。你发现眼下自己掌握的技能并不能高质量且快速的完成设计或学习,你打算闭关深造技能。正如庖丁解牛一样,得先掌握事物规律才能游刃有余。 在这里给大家推荐几个方向供大家学习:Tips1:首先使用checklist可以带来很多帮助,电路设计涉及许多细节,包括电路设计的基本原理、元件选型、布线规则等。一个详细的checklist可以帮助设计师确保每一步都已经被仔细检查和测试,没有遗漏任何关键步骤,并且设计师可以更快地识别和纠正设计中的错误,而不是在后期发现问题再返回修改,这样可以大大提高工作效率。checklist通常包含行业标准和最佳实践,按照标准进行设计可以确保电路设计的质量,同时可以识别并预防一些可能的EMC问题、过热问题等。而如果是团队协作设计,使用统一的checklist可以确保所有成员都遵循相同的设计流程和标准,从而提高团队协作的效率和设计的一致性。checklist图示(部分)Tips2:仿真因为是处于理想状态的模拟,有的时候并不能完全代表实物的结果。它毕竟只是基于一定的假设和模型进行的。实际环境中的复杂因素,往往无法在仿真中完全体现。因此掌握实际测试的能力十分重要。通过实际测试我们可以获得更准确的性能数据,验证设计的有效性并发现可能存在的问题。此外实际测试还能帮助我们了解产品在极端条件下的表现,这是仿真很难完全模拟的。 首先万用表是逃不开的一个测试仪器,一些简单的值如电阻,电压,电流,电容量测试都靠它。并且可以依靠它快速判断出现故障的区域。 常见的数字万用表其次是示波器,一台示波器能够显示信号的振幅、频率周期率和周期,相位、上升时间和下降时间、占空比。并且可以通过设置条件来捕捉和显示我们需要的波形片段,边沿触发、脉冲宽度触发等。通常也提供存储和回放波形的功能,便于长时间观察信号和深入分析。 常见的电子示波器最后是逻辑分析仪,主要用于对数字系统的逻辑关系进行分析和测试。以总线概念为基础,能够同时对多条数据线上的数据流进行观察和测试,特别适用于复杂的数字系统的测试和分析。 常见的逻辑分析仪有了这些精良设备和技术的加持,也是可以顺利进行接下来的冒险了。第五步:高速设计知识学习经历了这么多的磨炼,你终于走进了工作的大殿堂,这里聚集着许多行业大佬,你试图上前与他们进行交谈,可他们谈论着一些你从未了解过的各种专业名词,已经靠近大佬们的你似乎距离大佬们并没有那么近,这时你才明白,书山有路勤为径,学海无涯苦作舟!在这里给大家推荐书籍:于博士-信号完整性 到这里本篇文章的内容就结束啦,感谢你的观看。来源:Trent带你学硬件

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈