【CANN训练营】UART、SPI、I2C串口通信介绍笔记

举报
JeffDing 发表于 2023/10/17 14:22:43 2023/10/17
【摘要】 UART、SPI、I2C串口通信介绍 UART通信 串行通信和并行通信数据通信:若干个数据设备之间的信息交换称为数据通信。两种方式:并行通信和串行通信并行通信:数据的各位同时传送,每一位数据都需要一条传输线并且需要若干条控制信号线,这种方式仅适合于短距离的数据传输。并行传输的特点:传输速率快,接口电路简单。串行通信:数据中的各位分时传送,此时只需要一条数据线,外加一条公共信号地线和若干条控...

UART、SPI、I2C串口通信介绍

UART通信

串行通信和并行通信

数据通信:若干个数据设备之间的信息交换称为数据通信。

两种方式:并行通信和串行通信

并行通信:数据的各位同时传送,每一位数据都需要一条传输线并且需要若干条控制信号线,这种方式仅适合于短距离的数据传输。

并行传输的特点:传输速率快,接口电路简单。

串行通信:数据中的各位分时传送,此时只需要一条数据线,外加一条公共信号地线和若干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少分8位才能传送完毕。

串行通信的特点:传输线少,长距离传输成本,但是传输控制比并行要相对复杂。

数据传输方式:单工、半双工和全双工。

单工:A只能发信号,B只能收信号,单向传输。
半双工:A能发信号给B,B也能发信号给A,但是两个过程不能同时进行。简单说就是对讲机。
全双工:A在给B发信号的同时B也能给A发信号。简单说就是对讲机。

波特率:波特率是指每秒内传送二进制数据的位数以b/s和bps(位/秒)为单位。
1.png

UART通信

UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、78等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。

奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢

空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送

2.png

UART通信

UART工作原理

  • 发送数据过程:空闲状态,线路处于高电位:当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。
  • 接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。
  • UART波特率发生器:波特率是衡量数据传输速率的指标,表示每秒传送数据的字符数,单位为Baud。UART的接收和发送是按照相同的波特率进行收发的。波特率发生器产生的时钟频率不是波特率时钟频率,而是波特率时钟频率的16倍,目的是为在接收时进行精确地采样,以提取出异步的串行数据根据给定的晶振时钟和要求的波特率,可以算出波特率分频计数值。

SPI通信

SPI通信介绍及特点

SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间

SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚同时为PCB的布局上节省空间,提供方便,

SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:

  1. MOSI-SPI总线主机输出/从机输入(SPI Bus MasterOutput/Slave Input)
  2. MISO-SPI总线主机输入/ 从机输出(SPI Bus MasterInput/Slave Output)
  3. SCLK-时钟信号,由主设备产生。
  4. CS-从设备使能信号,由主设备控制 (Chip select)有的IC此pin脚叫SS

SPI通信原理

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(用于单向传输时,也就是半双工方式)。注:有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI

SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平,如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降) 数据被采样,如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。

1697522752878.png

根据时钟极性(CPOL)及相位(CPHA)不同可以组合成4种工作模式:SP10,SPI1,SP2,SP3

  1. SP0: CPOL=0,CPHA=0
  2. SP11: CPOL=0,CPHA=1
  3. SP12: CPOL=1,CPHA=0
  4. SP13: CPOL=1,CPHA=1

I2C通信

I2C通信介绍及特点

I2C (Inter-Integrated Circuit) 总线是PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少控制方式简单,器件封装形式小,通信速率较高等优点。

I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL
1697522977786.png

I2C总线通过上位拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任意器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”的关系。

1697523080794.png

12C总线上数据的传输速率在标准模式下可达100kbit/s在快速模式下可达400kbit/s在高速模式下可达3.4Mbit/s。

I2C通信原理

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化

1697523193231.png

12C的起始和结束条件:
起始条件:在SCL线是高电平时SDA线从高电平向低电平切换这个情况表示起始条件。
停止条件:当SCL是高电平时SDA线由低电平向高电平切换表示停止条件。

如果连接到总线的器件合并了必要的接口硬件,那么用它们检测起始和停止条件十分简便,但是,没有这种接口的微控制器在每个时钟周期至少要采样 SDA两次来判别有没有发生电平切换
1697523254722.png

数据传输格式

  1. 字节传送与应答
    每一个字节必须保证是8位长度。数据传送时,先传送最高位 (MSB) ,每一个被传送的字节后面都必须跟随一位应答位 (即一共有9位)
    1697523300719.png
  2. I2C总线上的传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。

在起始信号后必须传送一个从机的地址(7位),第8位是数据后的传送方向为(R/),用”0“表示主机发送数据(T),”1“表示主机接受数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不差生终止信号,马桑发出起始信号对另一从机机型寻址。

在总线的一次数据传送过程中,可以有以下几种组合方式:
a. 主机想从机发送数据,数据传送方向在整个过程中不变
b. 主机在第一个字节后,立即由从机读数据
c. 在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。