主从架构是一种通信组织方式,而非协议;真正决定数据传输规则的是其上层协议(如modbus、spi、i²c等),核心在于明确“谁发指令”“如何选设备”“数据如何封装与确认”。

主从架构不是一种协议,而是一种通信组织方式;真正决定数据怎么传、传什么的,是跑在它上面的具体协议——比如Modbus、SMBus、SPI或I²C。理解底层数据传输逻辑,关键在于看清“谁发指令”“怎么选设备”“数据如何打包确认”这三件事。
主设备掌控全程:时序、寻址与流程发起
主设备(通常是MCU、PLC或HMI)不是简单地“发数据”,而是严格控制整个交互节奏:
- 它生成时钟信号(如SPI的SCLK、I²C的SCL),所有从设备必须同步这个节拍
- 它先发起Start信号或静默间隔(如Modbus RTU要求≥3.5字符时间空闲),宣告通信开始
- 它用地址字段明确指向唯一从机(如Modbus从机ID 1–247,I²C 7位地址0x48),其他从机自动忽略
- 它决定读还是写——通过功能码(Modbus)、方向位(I²C第8位)、或命令字节(SMBus的0x00)来表达意图
从设备只响应、不主动:被动执行与状态反馈
从设备没有话语权,它的作用是“听清、执行、回话”:
- 收到匹配地址后才参与后续通信,其余时间保持高阻态或休眠
- 对命令字节(如SMBus中“0x00=读温度寄存器”)做内部映射,定位真实寄存器地址
- 按协议规则返回ACK(I²C/SMBus)、CRC校验(Modbus RTU)、或MISO数据(SPI)作为完成确认
- 某些场景下可短暂拉低时钟(I²C Clock Stretching)表示忙,但不能中断主设备主导权
数据不是裸传:封装、校验与语义绑定
一个字节被送出,不代表传输完成;它必须放在正确位置、携带正确含义、并经验证无误:
- Modbus RTU帧包含地址+功能码+数据+CRC,少一项就丢弃整帧
- SMBus读温度需两步:先写命令字节指定寄存器,再重启总线读数据,分离“问哪”和“要啥”
- SPI虽快,但无内置寻址或校验——CS选中谁、MOSI/MISO传什么、是否加CRC,全靠上层软件约定
- 所有协议都依赖物理层可靠传输(如RS-485抗干扰、I²C上拉电阻匹配总线电容)
协议差异本质是分工不同:谁管时序?谁管校验?谁管寻址?
对比几个典型协议,能更清楚看到设计取舍:
- SPI:主设备管时钟+片选,从设备只管收发,校验和寻址由应用层实现
- I²C/SMBus:主设备管时钟+地址+命令,总线自带ACK机制,支持多主但实际常作单主用
- Modbus RTU:主设备发完整帧,从设备按功能码执行,CRC由设备自动计算校验
- CAN:例外——多主竞争式,靠ID仲裁优先级,不依赖中心主设备调度











