zoukankan      html  css  js  c++  java
  • UART总线(异步)

    UART用一条传输线将数据一位位地顺序传送,以字符为传输单位
    通信中两个字符间的时间间隔多少是不固定的, 然而在同一个字符中的两个相邻位间的时间间隔是固定的

    数据传送速率用波特率来表示, 指单位时间内载波参数变化的次数, 或每秒钟传送的二进制位数
    如每秒钟传送240个字符, 而每个字符包含10位(1个起始位, 1个停止位, 8个数据位), 这时的波特率为2400Bd

    传输时序如下图

    uart_time_line 

    在UART中,信号线上共有两种状态, 分别用逻辑1(高电平)和逻辑0(低电平)来区分

    在空闲时, 数据线应该保持在逻辑高电平状态

    其中各位的意义如下
    起始位(Start Bit):  先发出一个逻辑0信号, 表示传输字符的开始
    数据位(Data Bits): 可以是5~8位逻辑0或1. 如ASCII码(7位), 扩展BCD码(8位)小端传输
    校验位(Parity Bit):  数据位加上这一位后, 使得1的位数应为偶数(偶校验)或奇数(奇校验)
    停止位(Stop Bit):   它是一个字符数据的结束标志. 可以是1位、1.5位、2位的高电平
    空闲位:  处于逻辑1状态, 表示当前线路上没有资料传送

    其实UART收发器就是个移位寄存器,那个波特率就相当于时钟频率。哪怕你连着几个0都可以通过这个频率的时钟脉冲来确定。
    嗯,一个萝卜一个坑,就像现代化生产的流水线···
    所以,如果接收端设置的波特率不符合发送的,那么接收到的就会错。。

  • 相关阅读:
    Linux sed命令
    Linux之read命令使用
    Linux shell之数组
    Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
    shell中的${},##, %% , :- ,:+, ? 的使用
    hostname命令
    进度条的制作-python
    33 Python 详解命令解析
    Python 学习笔记 多进程 multiprocessing--转载
    Spring注解(生命周期)
  • 原文地址:https://www.cnblogs.com/reality-soul/p/6170828.html
Copyright © 2011-2022 走看看