初接触硬件,五花八门的总线、接口一定会让你有些疑惑,我尝试用一系列文章来解开你的疑惑。
系列文章
【总线接口】1.以Xilinx开发板为例,直观的认识硬件接口
【总线接口】2.学习硬件这些年接触过的硬件接口、总线 · 大汇总
【总线接口】3.常见总线、接口GPIO、I2C、SPI、I2S、Modbus
【总线接口】4.一些和串口相关的概念:UART、TTL、RS232、RS485、RS422、RJ45
【总线接口】5.模拟视频和数字视频接口大汇总:CVBS、S-video、Component、BNC、VGA、RCA
【总线接口】6.显示屏相关总线、接口:DVI、HDMI、SDI、DisplayPort、Camera link
【总线接口】7.音频相关接口
【总线接口】8.SD卡和SDOI
【总线接口】9.Serdes是个“大家族”
【总线接口】10.PCI与PCI-E
【总线接口】11.RAM和ROM的一些相关概念
【总线接口】12.关于DDR你了解多少?
【总线接口】13.常见的硬盘接口与相关协议
【总线接口】14.DDR、EEPROM、SATA的关系
【总线接口】15.硬件板卡上常见的FMC接口
【总线接口】16.汽车总线:CAN、LIN、MOST
【总线接口】17.常见的JTAG是个什么协议?
【总线接口】18.航电总线你了解多少?
【总线接口】19.简单介绍USB“大家族”
【总线接口】20.常见网络接口:RJ45
【总线接口】21.硬件板卡上常见的:M12、SMA
【总线接口】22.光模块:SFP、CFP与OSFP
几条说明
- 本文只罗列接口,这会是一个大系列的文章,让硬件新人系统的了解总线、协议、硬件接口;
- 列表里总线、接口、连接器都有,混在一起了,后续文章会根据下面这个大致的划分,去简单介绍;
- 有重复的列举;
- 划分有不严谨的地方;
目录
系列文章
几条说明
1 硬件总线和接口
1.1硬件总线
1.2硬件接口
2 GPIO
2.1概念
2.2应用实例
3 I2C
3.1概念
3.2应用实例
4 SPI
4.1概念
4.2应用实例
5 I2S
5.1概念
5.2应用实例
6 Modbus
6.1概念
6.2应用实例
6.3Modbus RTU协议
6.4Modbus TCP协议
1 硬件总线和接口
1.1硬件总线
硬件总线是连接计算机各种功能部件之间的公共通信干线,是各部件间传输信息的公用通道。它是由导线组成的传输线束,按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。硬件总线是一种内部结构,CPU、内存、输入、输出设备通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。硬件总线有一定的承载能力上限,我们把总线在单位时间内传输的数据量称为总线的带宽。硬件总线有多种分类方式,如按照信息传输的形式可分为并行总线和串行总线,按照连接的部件可分为芯片内总线和系统总线等。
1.2硬件接口
硬件接口(hardware interface)是指两个硬件设备之间的连接方式。它既包括物理上的接口,如USB接口、HDMI接口等,也包括逻辑上的数据传送协议,如IDE接口、SCSI接口等。硬件接口的作用是使不同的硬件设备能够相互协作、交换信息或提供服务,实现设备间的通信和控制。硬件接口有多种分类方式,如串行接口和并行接口等。
2 GPIO
2.1概念
GPIO的英文全称为General-Purpose Input/Output,中文含义是通用输入输出接口。GPIO是指数字信号的输入输出端口,通常用于连接外部硬件设备或传感器等,从而实现计算机与外部设备的通信和控制。GPIO可以通过软件进行配置,使其成为输入或输出模式,然后根据需要读取或写入数据。在嵌入式系统、微控制器、智能硬件等领域中,GPIO是非常常见的接口之一,它使得硬件和软件之间能够进行灵活的交互和控制。
2.2应用实例
如下图海思hi3516A对外提供GPIO接口
Hi3516A 支持 16 组 GPIO( General Purpose Input/Output),即 GPIO0~GPIO15。每组GPIO 提供 8 个可编程的输入输出管脚( GPIO15 只有 3 个)。每个管脚可以配置为输入或者输出。这些管脚用于生成特定应用的输出信号或采集特定应用的输入信号。作为输入管脚时, GPIO 可作为中断源;作为输出管脚时,每个 GPIO 都可以独立地清 0 或置 1。
GPIO 可以根据电平或跳变值产生可屏蔽的中断。 GPIOINTR( General Purpose InputOutput Interrupt)信号给中断控制器一个指示,表示有中断发生。
3 I2C
3.1概念
I2C的英文全称为Inter-Integrated Circuit,中文含义是集成电路间总线。I2C是一种串行通信协议,用于连接微控制器和各种外围设备,如传感器、EEPROM、实时时钟等。它使用两根线:一根用于传输数据(SDA),另一根用于时钟(SCL)。I2C总线支持多设备连接,可以在总线上挂载多个设备,并通过地址码进行设备间的通信。
3.2应用实例
如下图海思hi3516A内部总线有挂接IIC总线
这里I2C 模块的作用是完成 CPU 对 I2C 总线上连接的从设备的读写。当 CPU 对从设备做写操作时, CPU 通过总线配置 I2C 模块的配置寄存器,然后发送控制信息和操作数到 I2C模块的数据通信寄存器; I2C 模块解析命令后将数据通道寄存器的数据通过 I2C 总线发给从设备,发送完毕后将最终的状态通过中断反馈给 CPU。 CPU 读取从设备数据的过程与写操作类似。
4 SPI
4.1概念
SPI的英文全称为Serial Peripheral Interface,中文含义是串行外设接口。SPI是一种同步串行通信协议,常用于微控制器和外围设备之间的通信,如闪存、传感器、RFID等。SPI使用四根线:一根用于传输时钟(SCK),一根用于主设备到从设备的数据传输(MOSI),一根用于从设备到主设备的数据传输(MISO),以及一根用于从设备的片选信号(Chip Select)。SPI通信速度快,数据传输效率高。
4.2应用实例
如下图海思hi3516A ISP控制器实现数据的串并、并串转换,可以作为 Master 与外部设备进行同步串行通信。支持 MOTOROLA 的 SPI、 TI 串行同步、 MicroWire 三种外设接口协议
5 I2S
5.1概念
I2S的英文全称为Inter-IC Sound,中文含义是集成电路间音频总线。I2S最初用于数字音频信号的传输,现已广泛应用于各种数字音频设备之间的通信。I2S使用三根线:一根用于传输时钟(SCK),一根用于数据(SD)和另一根用于声道选择(WS)。I2S支持多种采样率,可以传输左声道和右声道的数据。
I2S和I2C没有任何关系。
5.2应用实例
如下图I2S接CS4344立体声音频数模转换器 (DAC)方案
详细可参考:基于MM32F3270 I2S 使用 | MCU加油站
6 Modbus
6.1概念
Modbus的英文全称为Modicon Modbus,中文含义是莫迪康Modbus。Modbus是一种串行通信协议,常用于工业自动化领域中连接可编程逻辑控制器(PLC)和其他工业设备。Modbus使用两根线:一根用于传输数据(Serial Data),另一根用于接收时钟(Serial Clock)。Modbus支持多种数据传输模式,如ASCII码和RTU(远程终端单元)模式。
6.2应用实例
如下图一个自动化项目Modbus互联总线
在工业和楼宇自动化项目中,网络基础设施中不同现场总线设备的连接是已知的。面临的挑战是在在一个全面的IP网络中连接具有不同协议标准的不同制造商。现场总线级别的传感器和执行器通过 Modbus RTU 进行通信,必须集成到 Modbus TCP 网络中。
为了将Modbus RTU协议转换为Modbus TCP协议,需要使用Modbus网关。Modbus网关是Modbus RTU/Modbus TCP网关,主要将Modbus RTU协议转换为Modbus TCP协议(或相反)。
参考资料:METZ CONNECT | Network connection of Modbus RTU fieldbus components made easy
6.3Modbus RTU协议
Modbus RTU(Remote Terminal Unit)协议是一种串行通信协议,属于应用层的一层协议。RTU协议是一种开放的、主要用于工业自动化领域的通信协议,常用于连接可编程逻辑控制器(PLC)和其他工业设备。Modbus RTU协议使用RS-232、RS-485或RS-422等串行接口进行通信,通过主从方式实现设备间的数据传输和控制。
在Modbus RTU协议中,通信的双方被称为“主站”和“从站”。主站负责发起通信请求,从站被动地响应主站的请求。主站通过发送数据请求报文来从从站中读取数据,从站接收到请求后,根据请求的内容返回相应的数据给主站。
Modbus RTU协议具有简单明了、易于组网的特点,因此在工业自动化领域得到了广泛应用。由于其开放性和互操作性,许多厂商都在其产品中实现了对Modbus RTU协议的支持,使得不同厂商的设备可以方便地进行互联和通信。
Modbus RTU协议的传输方式是半双工的,即数据只能在一个方向上传输。它采用二进制格式进行数据传输,相对于ASCII码来说更加高效和可靠。此外,Modbus RTU协议还支持多种数据传输模式,如点对点、多点通信等,可以满足不同应用场景的需求。
6.4Modbus TCP协议
Modbus TCP(Transmission Control Protocol)协议是一种基于以太网的通信协议,它将Modbus协议与TCP/IP协议相结合,实现了Modbus协议在以太网中的应用。
Modbus TCP协议使用TCP/IP协议进行数据传输,因此它可以在互联网上进行通信,也可以通过路由器和交换机等网络设备进行数据传输。与Modbus RTU协议不同,Modbus TCP协议是一种全双工的通信协议,即数据可以在两个方向上进行传输。
在Modbus TCP协议中,数据帧的结构与Modbus RTU协议类似,包括地址码、功能码、数据区和校验码等部分。但是,Modbus TCP协议没有采用RTU的二进制格式,而是采用了TCP的字节流格式进行数据传输。此外,Modbus TCP协议还支持多种以太网接口,如10Base-T、100Base-TX和1000Base-T等。
由于Modbus TCP协议具有高速、可靠和灵活的特点,因此在工业自动化领域得到了广泛应用。通过将Modbus协议与TCP/IP协议相结合,Modbus TCP协议可以方便地实现不同厂商的设备之间的互联和通信,提高设备的互操作性和集成度。