• STM32-串口通信


    串口通信

    串口通信基本常识

    在计算机设备与设备之间或与集成电路之间常常需要进行数据传输,这也是在单片机学习中重要的一环,基本控制各种各样的外设都是通过不同的通信协议进行控制。开始学习吧⭐

    一.串口与并行通信

    串行通讯:是指设备之间通过少 量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据 的通讯方式。

    并行通讯:一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯 方式,它们的通讯传输对比:并行通讯就像多个车道的公路,可以同时传输 多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一 个数据位的数据。

    图解:并行与串行之间的区别

    图解

    常用的串口通信:usart通信,I2C通信,SPI通信

    并行通信:SDIO,ESMC,W5100

    串行与并行通信的特性对比

    特性 串行通讯 并行通讯
    通讯距离 较远 较近
    抗干扰能力 较强 较弱
    传输速率 较慢 较高
    成本 较低 较高

    不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著 影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。

    二.全双工、半双工与单工

    根据数据通信方向可将通讯分为:为全双工、半双工及单工通讯

    通讯方式 说明
    全双工 在同一时刻,两个设备之间可以同时手法数据
    半双工 两个设备之间可以收发数据,但不能在同一时刻进行
    单工 在任何时刻都只能进行一个方向的通讯

    图解:

    通信方向

    三.同步与异步

    根据数据的同步方式又可分为:同步与异步

    区分:可以根据通讯过程中是否有使用 到时钟信号进行简单的区分

    同步通讯:

    在同步通讯中,收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下 双方进行协调,同步数据。通讯中通常双方会统一规定在时钟信号的上升沿或 下降沿对数据线进行采样。

    同步通讯

    在这种通讯情况下对时钟的要求较高,穿线时钟信号不稳定时,就会出现数据收发丢失。

    异步通讯:

    在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用 的信号位,或者把主体数据进行打包,以数据帧的格式传输数据,某些通讯中 还需要双方约定数据的传输速率,以便更好地同步

    异步通讯

    对比

    在同步通讯中,数据信号所传输的内容绝大部分就是有效数据,而异步通讯中会包含 有帧的各种标识符,所以同步通讯的效率更高,但是同步通讯双方的时钟允许误差较小, 而异步通讯双方不需要时钟。

    四.通信的速率

    比特率

    衡量通讯性能的一个非常重要的参数就是通讯速率,通常以比特率(Bitrate)来表示,即 每秒钟传输的二进制位数,单位为比特每秒(bit/s)。

    波特率

    它表示每秒钟传输了多少个码元。而码元是通讯信号调制的概念,通讯中常用 时间间隔相同的符号来表示一个二进制数字,这样的信号称为码元。

    列如:

    常见的通讯传输中, 用 0V 表示数字 0,5V 表示数字 1,那么一个码元可以表示两种状态 0 和 1,所以一个码元 等于一个二进制比特位,此时波特率的大小与比特率一致;如果在通讯传输中,有 0V、 2V、4V 以及 6V 分别表示二进制数 00、01、10、11,那么每个码元可以表示四种状态,即 两个二进制比特位,所以码元数是二进制比特位数的一半,这个时候的波特率为比特率的 一半。因为很多常见的通讯中一个码元都是表示两种状态,

    一般直接以波特率来表示比特率,虽然严格来说没什么错误,但两者之间还是存在区别的。

    串口通信协议

    协议简介

    物理层

    规定通讯系统中具有 机械、电子功能部分的特性,确保原始数据在物理媒体的传输。

    • RS232标准

    • USB转串口

    • 原生的串口到串口

    RS-232与TTL电平的区别

    RS232标准串口通讯结构图

    RS232

    用于:工业设备进行直接通信,-15v:0 +15v:1 容错率大

    电平转换芯片:MAX3232,SP3232

    • TTL电平:从单片机或芯片中出来

    没有外接RS-232接口 需要自己买模块进行拓展┮﹏┭

    • USB转串口主要用于设备与电脑通信
    • 电平转芯片一般有CH340、PL2303、CP2102、FT232
    • 使用的时候需要电脑端安装驱动

    原生的串口到串口

    • 原生的串口通信主要是控制器跟串口的设备或者传感器通信,不需要经过电平转换芯片来转换电平,直接就用ttl电平通信
    • 使用原生串口通信的模块:GPS模块,GSM模块,串口转WIFI模块,HC04蓝牙模块

    协议层

    规定通讯逻辑, 统一收发双方的数据打包、解包标准。(即为软件层)

    简单来说物理层规定我们用嘴巴还是用肢体来交流, 协议层则规定我们用中文还是英文来交流。

    串口数据包的基本组成

    串口通讯的数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口。在 串口通讯的协议层中,规定了数据包的内容,它由启始位、主体数据、校验位以及停止位 组成,通讯双方的数据包格式要约定一致才能正常收发数据

    数据包

    起始位:由1个逻辑0的数据位表示

    结束位:由1.5,1,1.5或2个逻辑1的数据位表示

    有效数据:在起始位后紧接着的就是有效数据,有效数据的长度常被约定位5,6,7,或8位长

    校验位:可选,增强数据的抗干扰性

    校验方法分为:

    1:奇校验 2:偶校验 3:0校验

    4:1校验 5:无校验

    奇校验(odd):要求有效数据和校验位中“1”的个数为奇数

    比如:一个 8 位长的有效数据为: 01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据 将是 8 位的有效数据加上 1 位的校验位总共 9 位。

    偶校验(even):要求帧数据和校验位中“1”的个数为偶数

    比如:数据帧为11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。

    0校验:不管有效数据中的内容是说明,校验位总为 "0"

    1校验:校验位总为1

    无校验:数据包中不包含校验位

  • 相关阅读:
    mysql无法启动的结果问题解决
    pm2日志管理插件
    运维常用shell脚本之日志清理
    Centos7.x for aarch64 下载地址
    linux下使用openssl生成https的crt和key证书
    rsync+inotify百万级文件实时同步
    nginx访问url内容过滤
    docker-compose部署zabbix4.2.5
    postgresql从库提升为主库
    Nginx+keepalived 高可用双机热备(主从模式)
  • 原文地址:https://www.cnblogs.com/Serendipitychen/p/13906907.html
Copyright © 2020-2023  润新知