UART与IIC通信协议总结

一、名词解释:

1、单工/双工:

单工是发送器单项朝接收器发送数据,双工的传输是双向的,双工分为半双工(数据传输线1根)和全双工(数据传输线2根)。

2、波特率(UART)

波特率用来描述UART通信的传输速度,单位是bps(bit/秒)

3、仲裁(IIC)

多个主设备同时竞争总线控制权时进行总线仲裁,SDA与SCL有线与的逻辑,即连接总线的主设备一个节点为低时,总线的电平就为低,低电平优先。多主机在每发送一个数据位时,都要对自己的输出电平进行检测,只要主机检测电平发出的电平不一致就断开输出退出竞争(SDA回读)

二、UART:

通用异步收发器:串行异步通信,两条数据线,可以实现全双工

用途:主机与辅助设备的通信,优点:全双工数据传输只需要两条线,不用时钟,有奇偶校验位检查发送的每一帧数据。缺点:波特率需要双方确认,没有时钟连续发送会有误差累积,所以每次只发送一帧数据,每帧数据大小有限,传输数据速度不快。

   UART是一种点对点的通信方式(两根线)发送方的TXD连接收方的RXD,发送方的RXD连接收方的TXD

1、Uart帧格式

起始位:占用1位,数据线空闲状态为高电平,发送数据时起始位为0,先拉低。

数据位:占用5-8位(先发低位、后发高位,小端序)

校验位:占用1位,但是可有可无。奇偶校验(1的个数)。

停止位;占用1/1.5位 或2位 拉高电平,发送一个字节之后停止,经过停止位和空闲位后传输第二个字节。只发送一个字节,避免误差累积。

2、CPU与外围设备数据交互的三种模式

轮询:轮询去读缓冲区(队列) CPU主动

中断:如果串口控制器收到数据,给CPU发送中断信息号

DMA:直接存储器访问  通过DMA总线绕过CPU,直接把接收到的数据放入内存。

3、判断发送器空闲的意义

CPU往发送寄存器写入数据的速度大于发送寄存器发送数据的速度,判断发送寄存器为空后再写入数据,避免覆盖。

4、输入输出重定向

通常键盘作为输入设备,显示器作为输出设备,而开发板没有安装操作系统,也没有外设,重定向它的输入输出方向为串口(serial)。

三、IIC

IIC是一种串行半双工的总线,主要用于近距离低速的芯片之间通信,它有两根线双向信号线,一根为SCL时钟线,用于通信双方的时钟同步,一根为DSA数据线,用于双方的收发数据。优点:结构简单,成本低。

IIC是一种多主机总线,两根线可以挂接多个芯片,每个芯片可以做主机或从机。主机有权发起和结束一次通话,而从机等待呼叫,同一时间点只能有一个主机启用总线,当多个主机同时启用总线时,将进行冲突检测和仲裁。每个连接到IIC的设备都有一个唯一的7bit的地址用于辨识。

1、IIC总线通信过程

  1. 主机发送起始信号启用总线

主机在总线上发送起始信号,其他芯片接收到信号,知总线已被占用。

  1. 主机发送一个字节数据确定从机地址和后续数据传输方向

主机发送的一个字节:从机地址占7bit 高7位,最后一位是传输方向,0代表主机向从机发送数据,1代表从机向主机发送数据。

从机接收到数据提取高7位和自己的地址进行匹配,匹配成功就确认自己是被呼叫的从机,再通过 最后一位来确认数据发送的方向。

  1. 被寻址的从机发送应答信号回应主机

回应信号,从机存在,且收到呼叫信号

  1. 发送器发送一字节数据
  2. 接收器回复发送器一个应答信号

发送器和接收器的角色由最主机起始信号后的一字节数据最低位决定,确定角色后,数据传输完成之前,角色不发生改变。

  1. 4、5步开始循环至数据传输完毕,通信结束,主机释放总线

总线被释放后,总线挂载的其他芯片感知到总线空闲。

2、起始信号和停止信号

起始信号:SCL高电平,SDA由高变低

终止信号:SCL高电平,SDA由低变高

起始信号与停止信号都由主机发出,起始信号产生后,总线处于占用状态,停止信号产生,总线处于空闲状态。

3、字节传送与应答

IIC和UART传送数据有区别,IIC发送器传送的数据必须是一个字节(8位),先发高位,再发低位。发送器发送8位数据后,接收器必须发送一位应答位(低电平应答,高电平非应答)来回应发送器,一帧有9位。

4、同步信号

 IIC总线进行数据传送,时钟线SCL为低电平时,发送器向数据线发送一位数据,数据线上信号可以改变,当SCL为高电平时SDA数据线不允许发生改变必须稳定保持当前状态,接收器从SDA线上拿1位数据。由此解决解决数据发送误差。和UART相比因为有时钟线,发送器和接收器保持同步,不存在误差可以连续发送数据。

5、典型时序

  1. 主机向从机发送数据

主机发送起始信号,主机发送一个字节数据,最低位为0

两种停止情况:

1、主机发送完数据,主动停止,发送停止信号(SCL高电平SDA由低拉高),

2、从机不继续接收,从机发送一个非应答信号(应答位是高电平),主机没有接收到从机应答信号,也会发送停止信号停止通信。

  1. 从机向主机发送数据(第一次仍是主机先发)

主机发送起始信号,主机发送一个字节数据,最低位为1

从机发送完最后一个数据,主机不应答,并发送停止信号

  1. 主机向从机发送一次数据从机再向主机发送数据(两次通信)

1.第一次通信

主机发送起始信号,主机发送一个字节数据,最低位为0

主机不想发/从机不想接了

主机再次发送起始信号(未发送停止信号)防止被SDA被占用

2、第二次通信

主机发送起始信号后,主机发送一个字节数据,最低位为1

主机不接收了,发送停止信号。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值