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的通讯方式),可自定义自定义上层应用、编码实现)。
  • 相关阅读:
    MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
    MongoDB-Java的两个基本操作Upsert和insertMany
    MongoDB With Spark遇到的2个错误,不能初始化和sample重复的key
    mongoDB启动前的系统设置,解决部分Warning问题
    使用commons-compress解压GBK格式winzip文件到UTF8,以及错误使用ZipArchiveInputStream读出来数据全是空的解决办法
    mongodb查看操作记录方法以及用户添加删除权限修改密码
    java及spark2.X连接mongodb3.X单机或集群的方法(带认证及不带认证)
    MongoDB3.X单机及shading cluster集群的权限管理(基于3.4.5)
    element ui form表单清空规则
    input type file上传文件之后清空内容。
  • 原文地址:https://www.cnblogs.com/CristL/p/15113681.html
Copyright © 2011-2022 走看看