第十章I2C接口的一般应用.docx

上传人:b****1 文档编号:2061479 上传时间:2022-10-26 格式:DOCX 页数:42 大小:356.58KB
下载 相关 举报
第十章I2C接口的一般应用.docx_第1页
第1页 / 共42页
第十章I2C接口的一般应用.docx_第2页
第2页 / 共42页
第十章I2C接口的一般应用.docx_第3页
第3页 / 共42页
第十章I2C接口的一般应用.docx_第4页
第4页 / 共42页
第十章I2C接口的一般应用.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

第十章I2C接口的一般应用.docx

《第十章I2C接口的一般应用.docx》由会员分享,可在线阅读,更多相关《第十章I2C接口的一般应用.docx(42页珍藏版)》请在冰豆网上搜索。

第十章I2C接口的一般应用.docx

第十章I2C接口的一般应用

第十章I2C接口的一般应用

10.1I2C简介

I2C(芯片间)总线接口连接微控制器和串行I2C总线。

它提供多主机功能,控制所有I2C总线特定的

时序、协议、仲裁和定时。

支持标准和快速两种模式,同时与SMBus2.0兼容。

I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—SystemManagementBus)和PMBus(电源管理总线—PowerManagementBus)。

根据特定设备的需要,可以使用DMA以减轻CPU的负担。

I2C主要特点

1》并行总线/I2C总线协议转换器。

2》多主机功能:

该模块既可做主设备也可做从设备。

3》I2C主设备功能:

产生时钟;产生起始和停止信号。

4》I2C从设备功能:

可编程的I2C地址检测;可响应2个从地址的双地址能力;停止位检测。

5》产生和检测7位/10位地址和广播呼叫。

6》支持不同的通讯速度:

标准速度(高达100kHz);快速(高达400kHz)。

7》状态标志:

发送器/接收器模式标志;字节发送结束标志;I2C总线忙标志。

8》错误标志:

主模式时的仲裁丢失;地址/数据传输后的应答(ACK)错误;检测到错位的起始或停止条件;禁止拉长时钟功能时的上溢或下溢。

9》2个中断向量:

1个中断用于地址/数据通讯成功;1个中断用于错误。

10》可选的拉长时钟功能。

11》具单字节缓冲器的DMA。

12》可配置的PEC(信息包错误检测)的产生或校验:

用于最后一个接收字节的PEC错误校验。

13》兼容SMBus2.0:

25ms时钟低超时延时;10ms主设备累积时钟低扩展时间;25ms从设备累

积时钟低扩展时间;带ACK控制的硬件PEC产生/校验;支持地址分辨协议(ARP)。

14》兼容SMBus。

10.2I2C功能描述

I2C模块接收和发送数据,并将数据从串行转换成并行,或并行转换成串行。

可以开启或禁止中断。

接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。

允许连接到标准(高达100kHz)或快速(高达400kHz)的I2C总线。

10.2.1模式选择

I2C接口有四种模式选择,接口可以下述4种模式中的一种运行:

1》从发送器模式

2》从接收器模式

3》主发送器模式

4》主接收器模式该模块默认地工作于从模式。

接口在生成起始条件后自动地从从模式切换到主模式;当仲裁丢失或产生停止信号时,则从主模式切换到从模式。

允许多主机功能。

10.2.2通信流

主模式时,I2C接口启动数据传输并产生时钟信号。

串行数据传输总是以起始条件开始并以停止条件结束。

起始条件和停止条件都是在主模式下由软件控制产生。

从模式时,I2C接口能识别它自己的地址(7位或10位)和广播呼叫地址。

软件能够控制开启或禁止广播呼叫地址的识别。

数据和地址按8位/字节进行传输,高位在前。

跟在起始条件后的1或2个字节是地址(7位模式为1

个字节,10位模式为2个字节)。

地址只在主模式发送。

在一个字节传输的8个时钟后的第9个时钟期间,接收器必须回送一个应答位(ACK)给发送器。

参考图10-1-1I2C总线协议图。

DATA[LH

CLOCKCONTROLREAIS'!

ER(CGR)

图10-1-2I2C功能框图

注:

在SMBus模式下,SMBALERT是可选信号。

如果禁止了SMBus,则不能使用该信号。

10.2.3I2C从模式

默认情况下,I2C接口总是工作在从模式。

从默认的从模式切换到主模式,需要产生一个起始条件。

为了产生正确的时序,必须在I2C_CR2寄存器中设定该模块的输入时钟。

输入时钟的频率必须至少是:

1》标准模式下为:

2MHz

2》快速模式下为:

4MHz

一旦检测到起始条件,在SDA线上接收到的地址被送到移位寄存器。

然后与芯片自己的地址0AR1

和0AR2(当ENDUAL=1)或者广播呼叫地址(如果ENGC=1)相比较。

注:

在10位地址模式时,比较包括头段序列(11110xx0),其中的xx是地址的两个最高有效位。

头段或地址不匹配:

I2C接口将其忽略并等待另一个起始条件。

头段匹配(仅10位模式):

如果ACK位被置'1,'I2C接口产生一个应答脉冲并等待8位从地址。

地址匹配:

I2C接口产生以下时序:

1》如果ACK被置''则产生一个应答脉冲

2》硬件设置ADDR位;如果设置了ITEVFEN位,则产生一个中断

3》如果ENDUAL=1,软件必须读DUALF位,以确认响应了哪个从地址。

在10位模式,接收到地址序列后,从设备总是处于接收器模式。

在收到与地址匹配的头序列并且最

低位为’1即(11110xx1)后,当接收到重复的起始条件时,将进入发送器模式。

在从模式下TRA位指示

当前是处于接收器模式还是发送器模式。

从发送器

在接收到地址和清除ADDR位后,从发送器将字节从DR寄存器经由内部移位寄存器发送到SDA线上。

从设备保持SCL为低电平,直到ADDR位被清除并且待发送数据已写入DR寄存器。

(见图10-1-3从发送器传输序列图)。

当收到应答脉冲时:

TxE位被硬件置位,如果设置了ITEVFEN和ITBUFEN位,则产生一个中断。

如果TxE位被置位,

但在上一次数据发送结束之前没有新数据写入到DR寄存器,则BTF位被置位,I2C接口将保持SCL为

低电平,以等待写入DR寄存器。

S|Header

"a-

Address

"a-

E71

 

Sr

Header

A

Oatal

A

NA

P

EV1

E73_1

EV3

EV3

EVS-2

说明]S=Start(起始条件吐二重复的起始条件,F=Stop(停止昜件),盘二响应,114非响应,凹沪事件(ITEVFEN^I时产生中断)

EVI:

ADDR^l,读孤1然后读笺2将清除该事件。

EV3-1:

TiE=l,移位寄存器空势

EV3:

TxE=L写DR将清除该事件;移位寄存器非空。

EV3-2:

AF=b在SR1寄存器的肝谊写'了可清除AF谊。

图10-1-3从发送器的传送序列图

从接收器

在接收到地址并清除ADDR后,从接收器将通过内部移位寄存器从SDA线接收到的字节存进DR

寄存器。

I2C接口在接收到每个字节后都执行下列操作:

1》如果设置了ACK位,则产生一个应答脉冲

2》硬件设置RxNE=1。

如果设置了ITEVFEN和ITBUFEN位,则产生一个中断。

如果RxNE被置位,并且在接收新的数据结束之前DR寄存器未被读出,BTF位被置位,I2C接口

保持SCL为低电平,等待读DR寄存器(见图10-1-4从接收器传输序列图)。

T位从接收

S

Address

A

Datal

A

A

DataN

A

P

Evi

EV2

EV2

EV2

EV4

说明:

S=Start(起始条件),呂“重复的起始条件,P=Stop(停止条件),A响应,N4非响应.EV沪事件(ITEVFEN=1时产生中断)

EVhADDR=b读SR1然后读SR2将清除该事件。

EV2:

RxNE^b读DR将清除该事件。

EV4:

STOFF=1»读敢1然后写CR1寄存器将清除该事件

图10-1-4从接收器的传送序列图

关闭从通信

在传输完最后一个数据字节后,主设备产生一个停止条件,I2C接口检测到这一条件时:

设置ST0PF=1,如果设置了ITEVFEN位,则产生一个中断。

然后I2C接口等待读SR1寄存器,再写CR1寄存器。

(见图10-1-4的EV4)。

10.2.4I2C主模式

在主模式时,I2C接口启动数据传输并产生时钟信号。

串行数据传输总是以起始条件开始并以停止条件结束。

当通过START位在总线上产生了起始条件,设备就进入了主模式。

以下是主模式所要求的操作顺序:

1》在I2C_CR2寄存器中设定该模块的输入时钟以产生正确的时序

2》配置时钟控制寄存器

3》配置上升时间寄存器

4》编程I2C_CR1寄存器启动外设

5》置I2C_CR1寄存器中的START位为1,产生起始条件。

I2C模块的输入时钟频率必须至少是:

1》标准模式下为:

2MHz

2》快速模式下为:

4MHz

1.起始条件:

当BUSY=0时,设置START=1,I2C接口将产生一个开始条件并切换至主模式(M/SL位置位)。

注:

在主模式下,设置START位将在当前字节传输完后由硬件产生一个重开始条件。

一旦发出开始条件:

SB位被硬件置位,如果设置了ITEVFEN位,则会产生一个中断。

然后主设备等

待读SR1寄存器,紧跟着将从地址写入DR寄存器。

2.从地址的发送:

从地址通过内部移位寄存器被送到SDA线上。

在10位地址模式时,发送一个头段序列产生以下事件:

1》ADD10位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。

然后主设备等待读SR1寄

存器,再将第二个地址字节写入DR寄存器。

2》ADDR位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。

随后主设备等待一次读SR1

寄存器,跟着读SR2寄存器。

在7位地址模式时,只需送出一个地址字节。

一旦该地址字节被送出,ADDR位被硬件置位,如

果设置了ITEVFEN位,则产生一个中断。

随后主设备等待一次读SR1寄存器,跟着读SR2寄存器。

根据送出从地址的最低位,主设备决定进入发送器模式还是进入接收器模式。

在7位地址模式时,要进入发送器模式,主设备发送从地址时置最低位为’0/要进入接收器模式,

主设备发送从地址时置最低位为’1。

在10位地址模式时要进入发送器模式,主设备先送头字节(11110xx0),然后送最低位为’(的从地址。

(这里xx代表10位地址中的最高2位。

)要进入接收器模式,主设备先送头字节(11110xx0),然后送最低位为’的从地址。

然后再重新发送一个开始条件,后面跟着头字节(11110xx1)(这里xx代表10位

地址中的最高2位。

)TRA位指示主设备是在接收器模式还是发送器模式。

3.主发送器

在发送了地址和清除了ADDR位后,主设备通过内部移位寄存器将字节从DR寄存器发送到SDA线

上。

主设备等待,直到TxE被清除。

当收到应答脉冲时:

TxE位被硬件置位,如果设置了INEVFEN和ITBUFEN位,则产生一个中断。

如果TxE被置位并且在上一次数据发送结束之前没有写新的数据字节到DR寄存器,则BTF被置位,I2C

接口等待BTF被清除。

在DR寄存器中写入最后一个字节后,通过设置STOP位产生一个停止条件(见图10-1-5住发送器

传送序列图的EV8_2),然后I2C接口将自动回到从模式(M/S位清除)。

注:

当TxE或BTF位置位时,停止条件应安排在出现EV8_2事件时。

丫拉主贤送摸式

S

Address

A

Ma1

A

Data2

A

DataN

A

P

EV5

EVB

EV8I

EV8

EV8

EV8

EVfl_2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1