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的通讯方式),可自定义自定义上层应用、编码实现)。
  • 相关阅读:
    修复UBUNTU的NetworkManager applet不见方法
    在 Windows下用 Visual Studio 编译 OpenSSL
    Linux下Firefox汉化方法
    查看SQL Server数据库表、索引视图等占用的空间大小
    Oracle Instant Client的安装和使用
    angular 单页应用程序实现浏览器后退按钮跳转到前一页面,优化用户体验
    十分钟彻底理解javascript 的 this指向,不懂请砸店
    提高前端生产力的小技巧:谷歌开发人员工具保存修改
    十分钟带你入门bootstrap
    做一个自己的字符图标
  • 原文地址:https://www.cnblogs.com/CristL/p/15113681.html
Copyright © 2011-2022 走看看