一、I2C总线
1.1 I2C介绍
I2C(Inter-Integrated Circuit),集成电路总线,它由飞利浦(现为NXP)公司在20世纪80年代开发,是一种广泛用于嵌入式系统的 同步、串行、半双工通信协议,用于在同一块电路板上的集成电路之间进行通信。
I2C总线:是一种物理通信架构,用于连接多个设备,实现设备之间的数据传输。
I2C协议:是一套规则,定义了IIC总线上数据通信的过程,包括如何启动通信、传输数据、应答信号、结束通信等。
1.2 I2C总线的特点
1.2.1 双线通信
数据线(SDA): 负责传输数据
时钟线(SCL): 负责同步数据
1.2.2 同步通信
数据传输由时钟信号控制,确保同步
1.2.3 串行数据传输
每次只传输一位数据,通过时间序列完成完整的数据包传输
1.2.4 半双工传输
在同一时间内,通信双方只能有一个方向的数据传输,即发送方和接收方需要轮流发送和接收数据,而不能同时进行
1.2.5 主从架构
主设备(Master):控制通信过程,生成时钟信号
从设备(Slave):被动响应主设备的命令
1.2.6 支持多主多从
同一总线上可以连接多个主设备和从设备,但需要进行冲突检测和仲裁
1.2.7 从机地址唯一性
每个从设备都有唯一的7位或10位从机地址,主设备通过从机地址指定要通信的从设备
1.2.8 速度灵活
标准模式(Standard Mode): 100KHz
快速模式(Fast Mode): 400 KHz
高速模式(High-Speed Mode):3.4 MHz
超高速模式(Ultra-Fast Mode):5 MHz
1.3 I2C的信号:
起始信号:时钟线在高电平期间,数据线从高到低
终止信号:时钟线在高电平期间,数据线从低到高
应答信号:主机发送信号,通过从机地址寻找从机,找到就会有一个应答信号,在时钟为高电平时,数据为低电平
非应答信号:和空闲非常类似,都是时钟线上保持高电平,数据线上也是高电平
起始信号和终止信号只能由主机产生,应答和非应答主机和从机都可以去发。

SDA的可变化时机数据线(SDA)上的数据只能在时钟线(SCL)为低电平时进行改变。
SDA的稳定性SCL为高电平期间,SDA必须保持稳定。在SCL为高电平时,SDA上的数据被视为有效,接收方会在这个时刻对SDA的状态进行采样。
1.4 I2C控制器
I2C 控制器的存在是为了简化 I2C通信的实现,并提高通信的效率、可靠性和灵活性。 支持主模式和从模式。 默认情况下,它以从模式工作。接口在生成起始位后会自动由从模式切换为主模式。

二、SPI

SCK(Serial Clock):由主设备(通常是微控制器)提供时钟信号,用于同步数据的传输。
MOSI(Master Out-Slave In):主设备将数据发送到从设备的线路。
MISO(Master In-Slave Out):从设备将数据发送到主设备的线路。
CS(Chip Select):用于选择特定的从设备进行通信。当片选线被拉低时,表示从设备被选中,可以进行通信;当片选线被拉高时,表示通信结 束或者没有从设备被选中。
通信始终由主器件发起。当主器件通过MOSI 引脚向从器件发送数据时,从器件同时通过 MISO引脚做出响应。这是一个数据输出和数据输 入都由同一时钟进行同步的全双工通信过程。
三、MODBUS-TCP协议
TCP/IP协议基础
TCP(传输控制协议):面向连接的、可靠的传输层协议
IP(网际协议):负责将数据从源主机传输到目标主机的网络层协议
端口:TCP/IP协议中标识应用程序的逻辑地址,Modbus TCP/IP默认使用端口502
套接字:IP地址和端口号的组合,用于唯一标识网络中的应用程序
字节基础与数据表示
位:计算机中最小的信息单位,取值为0或1
字节:8位组成一个字节,范围0-255(0x00-0xFF)
字:16位组成一个字,范围0-65535(0x0000-0xFFFF)
高低字节与字节序
在Modbus协议中,数据通常以16位字为单位传输:
高字节:16位数据中的前8位(高位)
低字节:16位数据中的后8位(低位)
例如:对于数值0x1234
高字节是0x12
低字节是0x34
字节序指的是多字节数据在内存中的存储顺序:
大端序:高字节在前,低字节在后(Modbus协议使用)
小端序:低字节在前,高字节在后(大多数x86架构CPU使用)
寄存器类型与功能
Modbus协议定义了四种不同类型的寄存器,每种寄存器都有特定的用途和地址范围。可以简单理解为四种不同的"数据存储区域",用于不同类型的信息交换。
Modbus TCP/IP帧格式
Modbus TCP/IP通信帧基于TCP协议,由以下部分组成:

常用功能码详解
读操作功能码


写操作功能码



被折叠的 条评论
为什么被折叠?



