第十章I2C接口的一般应用.docx
- 文档编号:2061479
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:42
- 大小:356.58KB
第十章I2C接口的一般应用.docx
《第十章I2C接口的一般应用.docx》由会员分享,可在线阅读,更多相关《第十章I2C接口的一般应用.docx(42页珍藏版)》请在冰豆网上搜索。
第十章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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 I2C 接口 一般 应用