【通信协议讲解】单片机基础重点通信协议解析与总结(IIC,CAN,MODBUS...)

举报
Meno 发表于 2024/10/26 18:12:43 2024/10/26
【摘要】 一.IIC总线基础特性:两根通信线:SCL、SDA同步,半双工总线挂载多设备(一主多从,多主多从)配置特性:SCL、SDA配置为开漏输出SCL、SDA带上拉电阻(一般4.7K) 时序特性:起始条件:SCL:High,SDA:High->Low终止条件:SCL:High,SDA:Low->High发送:Master->SCL:Low->SDA高位先行->SCL:High->Slave接收:Sl...

一.IIC总线

基础特性:

  • 两根通信线:SCL、SDA
  • 同步,半双工
  • 总线挂载多设备(一主多从,多主多从)

配置特性:

  • SCL、SDA配置为开漏输出
  • SCL、SDA带上拉电阻(一般4.7K)

 时序特性:

  • 起始条件:SCL:High,SDA:High->Low
  • 终止条件:SCL:High,SDA:Low->High
  • 发送:Master->SCL:Low->SDA高位先行->SCL:High->Slave
  • 接收:Slave->SCL:Low->SDA高位先行->SCL:High->Master

编辑

二.SPI总线

基础特性:

  • 四根通信线:SCK,MOSI,MISO,SS
  • 同步,全双工
  • 支持总线挂载多设备(一主多从)

配置特性:

  • 主机引出多条SS控制线,分别接到各从机的SS引脚
  • 输出引脚->推挽输出,输入引脚->浮空或上拉输入

 时序特性:

  • 起始条件:SS从高电平切换到低电平
  • 终止条件:SS从低电平切换到高电平
  • 三种模式:1.CPOL=0,CPHA=1;2.CPOL=1,CPHA=0;3.CPOL=1,CPHA=1

编辑


三.串口通信

基础特性:

  • 两根通信线:TX,RX;一根参考线:GND
  • 同步或异步,全双工
  • 点对点

 配置特性:

  • 交叉连接
  • 电平标准一致(TTL电平,RS232电平,RS485电平等)
  • 波特率,起始位,数据位,校验位,停止位

 时序特性:

正逻辑时:

  • 起始位:一位时间的低电平
  • 停止位:一位或多位的高电平
  • 低位先行

负逻辑时起始位和停止位电平相反。

编辑

四.CAN总线

基础特性:

  • 两根通信线:CAN_HCAN_L
  • 异步,半双工
  • 差分电平
  • 可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序

 配置特性:

  • CAN控制器引出的TXRXCAN收发器相连,CAN收发器引出的CAN_HCAN_L分别与总线的CAN_HCAN_L相连
  • 高速CAN使用闭环网络,CAN_HCAN_L两端添加120Ω的终端电阻
  • 低速CAN使用开环网络,CAN_HCAN_L其中一端添加2.2kΩ的终端电阻

编辑

编辑

 时序特性:

  • 11/29位报文ID
  • 差分信号(VCAN_H-VCAN_L):
    • 高速CAN规定:
      • 电压差为0V时表示逻辑1(隐性电平)
      • 电压差为2V时表示逻辑0(显性电平)
    • 低速CAN规定:
      • 电压差为-1.5V时表示逻辑1(隐性电平)
      •  电压差为3V时表示逻辑0(显性电平)
  • 帧类型:
    • 数据帧
    • 遥控帧
    • 错误帧
    • 过载帧
    • 帧间隔
  • 位填充:
    • 发送方每发送5个相同电平后,自动追加一个相反电平的填充位,接收方检测到填充位时,会自动移除填充位,恢复原始数据
  • 数据帧:
    • SOFStart of Frame):帧起始,表示后面一段波形为传输的数据位
    • IDIdentify):标识符,区分功能,同时决定优先级
    • RTRRemote Transmission Request ):远程请求位,区分数据帧和遥控帧
    • IDEIdentifier Extension):扩展标志位,区分标准格式和扩展格式
    • SRRSubstitute Remote Request):替代RTR,协议升级时留下的无意义位
    • r0/r1Reserve):保留位,为后续协议升级留下空间
    • DLCData Length Code):数据长度,指示数据段有几个字节
    • Data:数据段的1~8个字节有效数据
    • CRCCyclic Redundancy Check):循环冗余校验,校验数据是否正确
    • ACKAcknowledgement):应答位,判断数据有没有被接收方接收
    • CRC/ACK界定符:为应答位前后发送方和接收方释放总线留下时间
    • EOFEnd of Frame ):帧结束,表示数据位已经传输完毕
    • 编辑
  • 遥控帧:
    • 无数据段,其他部分与数据帧相同
    • 编辑
  • 错误帧:
    • 总线上所有设备都会监督总线的数据,一旦发现“位错误”或“填充错误”或“CRC错误”或“格式错误”或“应答错误” ,这些设备便会发出错误帧来破坏数据,同时终止当前的发送设备
    • 编辑
  • 过载帧:
    • 当接收方收到大量数据而无法处理时,其可以发出过载帧,延缓发送方的数据发送,以平衡总线负载,避免数据丢失
    • 编辑
  • 帧间隔:
    • 将数据帧和远程帧与前面的帧分离开
    • 编辑



五.ModBus总线

基础特性:

  • 分类:
    • Modbus ASCII:基于串行通信的文本协议。
    • Modbus RTU :基于串行通信的二进制协议。
    • Modbus TCP/IP:基于以太网的协议。(TCP/IP 协议栈)
    • Modbus-PLUS:高速现场总线网络。

  • 一主多从,可以有多达247个从设备

 配置特性:

  • 功能码:公共功能码、用户定义功能码和保留功能码。
    • 0 类功能码:最常用功能码
      • 3 读取多寄存器
        16 写入多寄存器
    • 1 类功能码:
      • 1 读取线圈
        2 读取离散量输入
        4 读取输入寄存器
        5 写入单个线圈
        6 写入单个寄存器
        7 读取异常状态(仅限串行)
    • 2 类功能码:
      • 15 写入多个线圈
        20 读取文件记录
        21 写入文件记录
        22 屏蔽写入寄存器
        23 读取/写入多个寄存器
        24 读取

 时序特性:

  • 数据格式:固定长度,由地址、功能码、数据和一个错误校验字段组成。
    • 帧结构 = 地址 + 功能码+ 数据 + 校验
      • ​​​地址域:1 字节,即从机设备地址,通常 1-247 为有效地址,0 为广播地址
      • 功能码:1 字节,表明主机请求数据的类型。
      • 数据:N 字节,包含寄存器地址和寄存器数据等。
      • 差错校验:对数据进行冗余校验的结果,CRC 或 LRC。

编辑


                                                                                                                          如有错误,感谢指正

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。