zoukankan      html  css  js  c++  java
  • 通讯总线 | 串口

    串口通讯总线特点

    • 串行
    • 全双工
    • 异步

    名词解释

    名词 名词说明
    异步通讯 收发双方有各自独立的系统时间,不一致
    波特率 码元个数(bps)

    串口通讯协议

    如上图:
    串口发送协议分为:空闲位、起始位、 数据位(5-8bit) 、校验位 (可有可无)、停止位(1/1.5/2bit)
    默认空闲位为高电平,数据位的8个bit发送顺序:先发低位、再发高位
    校验方式:奇偶校验

    总线传输数据工作原理

    串口控制器控制数据的发送接收。
    串口控制器中包括:波特率产生器、接收器、发送器、控制单元(控制器)。
    发送器:发送队列 -> 移位器(在发送数据的基础上增加起始位、校验位等,再发出去)。
    接收器的工作和发送器相反,由移位器获取数据并拷贝到接收队列中。
    接收方根据设置的波特率,通过定时器确定每个bit所花费的时间,从而解析出数据位的高低电平。
    

    Q:为什么串口不能连续发送,必须使用停止位?

    为了保证接收端能够正常解析发送端的数据。原因是异步通信的时间系统不一致,容易产生系统时间误差(特别是在长时间运行、误差积累的情况下,无法正常解析数据位),加入停止位的核心目的是人为进行时间同步(消除累积误差)。

    寄存器配置

    如上图,通过配置寄存器(波特率、是否使能奇偶校验、几位数据位、几位停止位),使串口控制器根据寄存器配置进行工作。

    配置实例

    SOC4412芯片:
    提供4个通道(CH0-3),提供一个特别的通道(CH4),即5个串口控制器。
    每个控制器中分别有发送缓冲区、接收缓冲区,不同控制器的缓冲大小可能不一样,但原理一样,需要单独配置。

    RS232协议/RS485协议

    由于CPU端的串口是TTL电平(不同CPU间的电压不一样),所以不同CPU间串口不能直接TTL电平连接进行通讯,需要引入标准的RS232或者RS485/422协议进行串口间的通讯,RS232/RS485协议走的都是串口通讯,相比于串口唯一的区别就是在电气层次实现了标准化,使得不同CPU间串口可正常通讯(正常直接通过DB9进行连接通讯),RS232/RS485协议在底层配置方面和串口保持一致

    RS232协议特点

    • 协议标准化,RS232电平(5-15V为低电平)
    • 传输距离变长,理论最大传输距离可达15m

    RS485协议特点

    • 协议标准化,半双工(RS422为全双工)
    • 采用差分信号进行数据传输,可消除共模干扰
    • 以组网的形式进行通讯,理论最大传输距离可达到1500m
    • 组网的通讯方式主从收发逻辑协议没有规定,需自定义实现(主从收发逻辑关系由上层应用控制,可参考I2C的通讯方式实现(但并不限于I2C的通讯方式),可自定义自定义上层应用、编码实现)。
  • 相关阅读:
    每天一道leetcode 搜索旋转排序数组(二分法)
    每天一道leetcode 统计重复个数(循环节)
    python3 简单web目录扫描脚本(后续更新完整)
    每天一道leetcode 盛最多水的容器 (双指针)
    python3 语法学习 类和继承
    python3 语法学习 文件操作及os方法
    python3 语法学习 输入输出美观
    TCP/IP 协议:IP 协议
    TCP/IP 协议:链路层概述
    Http权威指南(二)---读书笔记
  • 原文地址:https://www.cnblogs.com/CristL/p/15113681.html
Copyright © 2011-2022 走看看