STM32之I2C学习

一、IIC协议协议简介

                       IIC通讯协议(Inter----Integrted Circuit)是由Phiips飞利浦公司开发的,

由于他引脚少,硬件实现简单,可拓展性强,不需要UASRT,CAN通讯协议的外部收发设备,现在被广泛使用在系统内多个集成电路IC(芯片)间的通讯。

半双工的通讯方式

 

下面是I2C的一些特性

1.只要求两条总线线路:一条串行数据线(SDA);一条串行时钟线(SCL)

2.每个连接到总线的器件都可以通过唯一的地址和一直存在的简单主机/从机关系软件设定地址:主机可以作为主机发生器或者主机接收器

3.它是一个真正的多主机总线,如果两个或者更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏

4.串行的8位双向数据传输速率在标准模式下可达到100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s

5.片子上的波滤器可以滤去总线数据线上的毛刺波,保证数据完整

6.连接到相同的IC数量只受到总线的最大电容400pF限制。

二、总体特征

        SDA和SCL都是双向线路,都通过一个电流源或上拉电阻接到电源正极(如下图)。当总线空闲时,这两条线路都是高电平。连接到总线的器件输出级必须是漏记开路或集电极开路才能执行线与功能。

三、位传输

由于连接到rC总线的器件有不同种类的工艺(CMOS、NMOS、双极性),逻辑‘0' (低)和‘1'(高)的电平不是固定的,它由Voo的相关电平决定。每传输-一个数据位就产生


SDA线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL线的时钟信号是低电平时才能改变(见图4)。这样确保了数据有效性
 

 

在IC总线中,唯一出现的是被定义为起始(S)和停止(P)条件(见图5)的情况。

其中一种情况是在,SCL线是高电平时,SDA 线从高电平向低电平切换。这个情况表示起始条件当SCL是高电平时,SDA线由低电平向高电平切换表示停止条件3


起始和停止条件- -般由主机产生。总线在起始条件后被认为处于忙的状态。在停止条件的某段时间后,总线被认为再次处于空闲状态。

如果产生重复起始(Sr) 条件而不产生停止条件,总线会一直处于忙的状态。此时的起始条件(S)和重复起始(Sr)条件在功能上是- -样的(见图10)。因此在本文档的剩余部分,符号S将作为-一个通用的术语既表示起始条件又表示重复起始条件,除非有特别声明的Sr。

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

应答信号

     发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位)

表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

     对于反馈有效应答位ACK的要求是,接收器在第九个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

     如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

数据传输

     在IIC总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。数据位的传输是边沿触发。

 

四.完整传输数据

可能的数据传输格式有:

●主机- 发送器发送到从机一接收器。传输的方向不会改变(见图11)。

●在第一个字节后, 主机立即读从机(见图12)。 在第一次响应时,主机一发送器变成主机一接收器,从机一接收器变成从机-发送器。第一次响应仍由从机产生。之前发送了一个不响应信号(A )的主机产生停止条件。

●复合格式 (见图13)。传输改变方向的时候,起始条件和从机地址都会被重复。但R/W位取反。如果主机接收器发送-一个重复起始条件,它之前应该发送了一个不响应信号(A )。

1.复合格式可以用于例如控制- 一个串行存储器。在第一个数据字节期间,要写内部存储器的位置。在重复起始条件和从机地址后,数据可被传输。

2.自动增加或减少之前访问的存储器位置等所有决定都由器件的设计者决定。

3,每个字节 都跟着一个响应位,在序列中用A或A模块表示。.

4,兼容iC总线的器件在接收到起始或重复起始条件时必须复位它们的总线逻辑,甚至在这些起始条件没有根据正确的格式放置,它们也都期望发送从机地址。

5,起始条件后面立即跟着- 一个停止条件(报文为空)是一个不合法的格式。

1,IIC基本读写过程

      主机读数据到从机:

数据:

          配置方向传输位为”读数据”方向。广播完地址后,接收到应答信号后,从机开始向主机返回数据(DATA),数据包大小也为8位,从机每发送完一个数,都会等待主机的应答信号(ACK),重复这个过程,可以返回N个数据,N没有限制大小。当主机希望停止接收数据时,就向从机返回一个非应答信号(NCAK),则从机自动停止数据传输。

 

 

IIC基本读写过程

      通讯复合格式

复合格式,该传输过程有两次起始信号(S),在第一次传输过程中,主机通过SLAVE_ADDRESS寻找到从设备后,发送一段”数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址;第二次传输中,对该地址的内容进行读或写。也就是说,第一次通讯是告诉从机读写地址,第二次则是读写的实际内容。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值