zoukankan      html  css  js  c++  java
  • 串行通信协议I2C、SPI、UART

    终端和其他终端或者外设通信的方式:串行通信和并行通信

    串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。

    其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。

    并行通信时数据的各个位同时传送,可以字或字节为单位并行进行。

    并行通信速度快,但用的通信线多、成本高,故不宜进行远距离通信。计算机或PLC各种内部总线就是以并行方式传送数据的。

    常用的串行通信协议:

    SPI(Serial Peripheral Interface:串行外设接口);可以实现全双工

    SPI总线由三条信号线组成(多个从设备时候需要有设备选择先SS):串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。

    提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。

     根据时钟相位和时钟极性有四种通信模式(定义高低电平忙碌、   在奇数或者偶数边沿采样)

    起始信号:由SS线发出高→低

    停止信号:由SS线发出低→高

    数据传输:SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。 MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出是同时进行的。

    SPI每次数据传输可以8 位或 16 位为单位,每次传输的单位数不受限制。

    I2C(INTER IC BUS);半双工

    I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准

    2根线:scl:时钟线sda:数据线

    3.种信号
    起始信号:scl为高电平,sda从高到低的跳变
    停止信号:scl为高电平,sda从低到高的跳变
    应答信号:在第9个时钟周时,sda总线上的低电平
    2种时序
    写:
    start+7位从机地址 0(写)+ack+8位reg+ack+8位 data+ack+stop
    读:
    start+7位从机地址 +(写)+ack+8位reg+ack+
    start+7位从机地址 +(读)+ack+8位data+NO ack+stop

    scl为高电平的时候,sda电平变化,表示start stop。
    sda电平不变化,数据保持稳定,并发送数据。
    scl为低电平的时候,sda电平变化,表示数据改变

    UART(Universal Asynchronous Receiver Transmitter:通用异步收发器);全双工

    UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,

    一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线(RX  TX),一根用于发送,一根用于接收。

    1个起始位,8个数据位(可选),1个奇/偶校验位(可选),1个结束位(校准时钟作用)、空闲位

  • 相关阅读:
    Json介绍与Ajax技术
    Java学习笔记(二一)——Java 泛型
    谏牲口TT十思疏
    Java学习笔记(二十)——Java 散列表_算法内容
    Java学习笔记(十九)——Java 日志记录 AND log4j
    读书笔记(三)——《山楂树之恋》敢爱吗?
    Java学习笔记(十八)——Java DTO
    Java学习笔记(十七)——java序列化
    Java学习笔记(十六)——Java RMI
    Java学习笔记(十五)——javadoc学习笔记和可能的注意细节
  • 原文地址:https://www.cnblogs.com/huiji12321/p/11722087.html
Copyright © 2011-2022 走看看