几种常用的总线标准(UART、SPI、I2C、CAN)介绍

本文介绍了几种常见的串行通信接口,包括UART、SPI、I2C和CAN等,详细阐述了它们的工作原理、特点和应用场景。

UART

Universival Asychronous Receiver/Transmitter(通用异步串行口),UART是一种较为通用的数据传输的方法(即Start Bit+Data+Check+StopBit),而COM口中Rx、Tx的数据格式即为UART。UART和RS232是两种异步数据传输标准.计算机中的COM1和COM2都是RS232串行通信标准接口。当Uart接口连到PC机上时,需要接RS232电平转换电路。

UART使用发送数据线TXD和接收数据线RXD来传送数据,接收和发送可以单独进行也可以同时进行。它传送数据的格式有严格的规定,每个数据以相同的位串形式传送,每个串行数据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位结束的时间称为一帧(frame),即一个字符的完整通信格式。

SPI

Serial Perheral Interface,是一种全双工同步串行接口标准,串行通信的双方用四根线进行通信,这四根连线分别是:片选信号,I/O时钟,串行输入,串行输出,这种接口的特点是快速,高效,并且操作起来比I2C要简单一些,接线也比较简单,TLC2543提供SPI接口。

I2C

Inter-Integrated Circuit(集成电路之间), I2C总线是一种由PHILIPS公司开发的两线式双向串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。I2C属于两线式串行总线,它由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,IC2总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

CAN

Controller Area Network(区域网络控制器),CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统具有明显的优越性。

### 不同串行通信协议的区别 #### USART (UART) USART(通用异步收发传输器)是一种用于实现全双工、异步的数据传输的接口。其特点在于不需要时钟信号来保持发送端和接收端的同步,而是通过起始位和停止位来界定数据帧[^2]。 - **优点**: 实现简单,硬件成本低;适合短距离点对点通讯。 - **缺点**: 数据传输速率相对较低,不适合高带宽需求场景;缺乏内置错误检测机制。 ```c // UART初始化配置示例 void uart_init(void){ // 初始化设置... } ``` #### I2C I2C(Inter-Integrated Circuit)是一个仅需两根线即可工作的半双工同步串行总线标准。它由一根双向数据线SDA和一根时钟SCL组成,允许一个或多个主机控制若干个从机设备[^1]。 - **优点**: 只占用较少IO资源,可挂载多节点;有应答功能确保数据正确传送。 - **缺点**: 速度上限不高,通常不超过400Kbps;当网络规模较大时性能会受到影响。 ```cpp Wire.beginTransmission(DEVICE_ADDRESS); Wire.write(DATA_TO_SEND); Wire.endTransmission(); ``` #### SPI SPI(Serial Peripheral Interface)采用四线制结构——MOSI(Master Out Slave In)、MISO(Master In Slave Out)、SCK(Clock)、SS/CS(Slave Select),属于一种快速高效的同步串行接口技术。 - **优点**: 支持更高的数据率,可达数Mbps级别;可以灵活调整工作模式适应不同应用场景。 - **缺点**: 占用较多GPIO引脚,增加了PCB布局难度;一般情况下只支持单一主控单元管理多个外设。 ```python import spidev spi = spidev.SpiDev() spi.open(bus, device) response = spi.xfer([data]) ``` #### CAN CAN(Controller Area Network)专为汽车工业设计的一种可靠消息传递方案,具备强大的抗干扰能力和冗余特性,能够在恶劣环境下稳定运行[^4]。 - **优点**: 提供优先级调度服务保障重要信息及时处理;具有自动重传失败报文的能力提高可靠性。 - **缺点**: 设计较为复杂,开发周期较长;相比其他几种协议功耗较高。 ```c++ CanBus can; can.init(CanSpeed::kBaud500k); while(can.read(msg)){ process_message(&msg); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值