当前位置: 首页 > article >正文

有线通信方式(I2C、UART、RS485)

1、总线

总线是连接多个部件的信息传输线, 是个部件共享的传输介质。(就是一根线上面挂载了很多个设备,设备可以通过该线进行交流沟通)

特点:同一时刻,只有一个设备可以讲话(向总线发送信息),其他设备都只能听着(从总线上接收信息)。

2、设备选择

既然一根总线上面挂了那么多设备,所有设备都接收,这就起到了广播的作用。
但是发消息的设备可能只想和某个设备沟通,那么我们就需要“点名”指定设备,“点名”的方式包括下面几种:
a、直接添加设备选择线,例如:SPI(Serial Peripheral Interface:串行外设接口)的SS线
b、在数据传输的时候,把要选择的设备地址也传输过去,例如:I2C(INTER IC BUS:意为IC之间总线), 我们可以看一个I2C的读写的数据
在这里插入图片描述
c、在传输的数据里添加标识符,该标识符就像一个标签,当设备匹配到该标签时,就知道要通讯的是自己, 就会去处理接收的数据, 例如: CAN(Controller Area Network, 现场总线)

3、数据传输

如果只有一根数据线,且规定了一方只能接收,另外一方只能发送,那么此时的的数据传输就做单工通信。
如果只有一根数据线,在同一个时刻,两个设备之间是只能够有一个向另外一个发送的,这便是半双工通信, 例如I2C只有一根SDA数据线
如果有两根数据线,在同一个时刻,两个设备之间就可以同时向对方发送信息, 这便是全双工通信,例如SPI有串行数据输出(SDO)、串行数据输入(SDI), USB

在这里插入图片描述

4、时钟同步

首先时钟同步是指让大家都有一个统一的时间观念。
时钟同步的作用包括让发送方和接收方的数据传输效率保持一致,以及可以用来采样数据,保证数据的完整性和可靠性。
那么时钟同步的方式包括:
a、时钟信号线,例如SPI的串行时钟线(SCLK), I2C的串行时钟线SCL
b、特殊的数据包和波特率方式,例如UART, 它采用指定的数据包,并且接收方和发送方指定发送速率(也即波特率)

5、I2C

a、设备选择采用数据传输时传输设备地址方式来选择接收设备
b、采用一根数据线SDA,可首先半双工通信
c、采用串行时钟线SCL来保持传输速率

在这里插入图片描述

6、UART

a、UART是点对点的通讯,不需要进行设备选择
b、具有RX和TX两根数据线,可以实现全双工通信
c、采用特殊的数据包和波特率来保持传输速率
在这里插入图片描述

7、RS485

a、设备选择采用数据传输时传输设备地址方式来选择接收设备
b、至少具有两根数据线(A+和B-),但它两根数据线并不能同时双向传输,因为为了提高抗干扰性,使用差分信号,因此只能实现半双工通信。
差分信号的工作原理是通过驱动端发送两个等值、反相的信号,接收端则通过比较这两个电压的差值来判断逻辑状态“0”或“1”,举个例子,
假设传输的是1, 那么则发送信号1和-1, 那么受到干扰的时候,他们的信号波动为+2, 那么收到的信号就是3和1, 两个之间的差值2,那么2/2 = 1, 可以知道原本真正传输的信号是1。
c、数据包增加起始位和停止位,进而保证同步数据的发送和接收.

8、参考

https://mp.weixin.qq.com/s/vwh1DyXTz6ePvah4jD3QNA
https://mp.weixin.qq.com/s/Z4KRE9AMO3EBTgrn7L0paw
https://blog.csdn.net/weixin_44006573/article/details/105674761 (I2C的读写的数据图)


http://www.kler.cn/a/512851.html

相关文章:

  • 【Red Hat8】:搭建FTP服务器
  • springboot接入deepseek深度求索 java
  • vue3使用音频audio标签
  • 可视化平台建设技术方案,商业BI系统解决方案,大屏建设功能需求分析(word原件)
  • Datawhale组队学习笔记task2——leetcode面试题
  • 前〈和平精英〉技术策划进军AI游戏领域,获新投资
  • 【数据结构】搜索二叉树
  • 【有啥问啥】什么是端到端(End-to-End)?
  • 【AI大模型Agent探索】深入探索实践 Qwen-Agent 的 Function Calling
  • 【Linux】Linux入门(4)其他常用指令
  • 基于Docker的Kafka分布式集群
  • leetcode——和为K的子数组(java)
  • 【配置环境】VS Code中JavaScript环境搭建
  • Ubuntu22.04系统切换内核版本
  • 【论文投稿】探秘嵌入式硬件设计:从原理到代码实战
  • 计算机视觉模型的未来:视觉语言模型
  • java快速导出word文档
  • 小结:OSPF协议的工作原理
  • Linux探秘坊-------3.开发工具详解(2)
  • Spring Event和MQ的区别和使用场景