【4.0】通信协议,I2C,SPI,CAN,USB,DMA

一、UART

UART:通用异步串行口,速率不快,可全双工,结构上一般由波特率产生器、UART 发送器、UART 接收器组成,硬件上两线,一收一发;

二、I2C

I2C:双向、两线、串行、多主控接口标准。速率不快,半双工,同步接口,具有总线仲裁机制,非常适合器件间近距离经常性数据通信,可实现设备组网;

总线仲裁:线与,谁发0就仲裁成功。

2.1、起始信号和结束信号

开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。

数据信号:SCL为高电平时,SDA保持稳定,SDA传输数据bit。

2.2、I2C写流程

写寄存器的标准流程为:

  1. Master发起START
  2. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK
  3. Slave发送ACK
  4. Master发送reg addr(8bit),等待ACK
  5. Slave发送ACK
  6. Master发送data(8bit),即要写入寄存器中的数据,等待ACK
  7. Slave发送ACK
  8. 第6步和第7步可以重复多次,即顺序写多个寄存器
  9. Master发起STOP

读寄存器的标准流程为:

  1. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK
  2. Slave发送ACK
  3. Master发送reg addr(8bit),等待ACK
  4. Slave发送ACK
  5. Master发起START
  6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK
  7. Slave发送ACK
  8. Slave发送data(8bit),即寄存器里的值
  9. Master发送ACK
  10. 第8步和第9步可以重复多次,即顺序读多个寄存器

三、SPI

SPI:高速同步串行口,高速,可全双工,收发独立,同步接口,可实现多个 SPI 设备互联,硬件 3~4 线;也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。

上升沿发送、下降沿接收、高位先发送。

写操作地址最高位为1,读操作地址最高位为0

四、USB

USB:通用串行总线,高速,半双工,由主机、hub、设备组成。设备可以与下级 hub 相连构成星型结构。一条USB的传输线分别由地线、电源线、D+、D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压。数据在USB线里传送是由低位到高位发送的。

【4.0】通信协议,I2C,SPI,CAN,USB,DMA_第1张图片

五、CAN

CAN:采用双线传输,两根导线分别作为CAN_H、CAN_L,并在终端配备有120Ω的电阻。收到总线信号时,CAN收发器将信号电平转化为逻辑状态,即CAN_H与CAN_L电平相减后,得到一个插值电平。各种干扰(如点火系统)在两根导线上的作用相同,相减后得到的插值电平可以滤过这些干扰。

总线仲裁:线与,输出显性电平(0)获得总线使用权

5.1 总线电平

CAN总线有两种逻辑电平状态,即显性与隐性。显性电平代表“0”,隐性电平代表“1”。采用非归零码编码,即在两个相同电平之间并不强制插入一个零状态电平。

高速CAN在传输隐性位时,CAN_H与CAN_L上的电平位均为2.5V;在传输显性位时分别为3.5V与1.5V。

低速CAN在传输隐性状态位时,CAN_H上的电平为0V,CAN_L上的电平位5V。在传输显性状态位时,CAN_H上的电平位3.6V,CAN_L的位1.4V。

5.2 数据帧结构

在CAN总线上,报文是以“帧”来发送的,每一帧都包含以下几个部分:

(1)帧起始

在总线空闲时,总线为隐性状态。帧起始由单个显性位构成,标志着报文的开始,并在总线上起着同步作用。

(2)仲裁段

仲裁的主要是定义了报文的标识符,也俗称ID。在CAN2.0A规范中,标识符为11位,而在CAN2.0B中变为了29位。这意味着在2.0B中可以存在更多不同类型的报文,但是也降低了总线的利用率。

(3)控制段

主要定义了数据域字节的长度。通过数据长度码,接收节点可以判断报文数据是否完整。

(4)数据域

包含有0~8个字节数据。

(5)CRC域

CRC又称循环冗余码效验(Cyclical Redundancy Check),是数据通信中常见的查错方法。

(6)ACK域

用于接收节点的反馈应答。

(7)帧结束

由一串7个隐性位组成,表示报文帧的结束。

六、DMA

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。

通常系统总线是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态(高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。

DMA的数据传送分为预处理、数据传送和后处理3个阶段。

(1)预处理

由CPU完成一些必要的准备工作。首先,CPU执行几条I/O指令,用以测试I/O设备状态,向DMA控制器的有关寄存器置初值,设置传送方向、启动该设备等。然后,CPU继续执行原来的程序,直到I/O设备准备好发送的数据(输入情况)或接受的数据(输出情况)时,I/O设备向DMA控制器发送DMA请求,再由DMA控制器向CPU发送总线请求(统称为DMA请求),用以传输数据。

(2)数据传送

DMA的数据传输可以以单字节(或字)为基本单位,对于以数据块为单位的传送(如银盘),DMA占用总线后的数据输入和输出操作都是通过循环来实现。需要特别之处的是,这一循环也是由DMA控制器(而不是通过CPU执行程序)实现的,即数据传送阶段是完全由DMA(硬件)来控制的。

(3)后处理

DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理,包括检验送入主存的数据是否正确,测试传送过程中是否出错(错误则转入诊断程序)和决定是否继续使用DMA传送其他数据块等

 

 

你可能感兴趣的:(【4.0】通信协议,I2C,SPI,CAN,USB,DMA)