《第十章I2C接口的一般应用.docx》由会员分享,可在线阅读,更多相关《第十章I2C接口的一般应用.docx(26页珍藏版)》请在第一文库网上搜索。
1、第十章12C接口的一般应用10.1I2C简介I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBUS2.0兼容。I2C模块有多种用途,包括CRC码的生成和校验、SMBUS(系统管理总线一SystemManagementBus)和PMBUS(电源管理总线-PowerManagementBus),根据特定设备的需要,可以使用DMA以减轻CPU的负担。I2C主要特点1并行总线/12C总线协议转换器.2多主机功能:该模块既可做主设备也可做从设备。3I2C主设备功能:产生时钟;产生起始和停止信号。41
2、2C从设备功能:可编程的I2C地址检测;可响应2个从地址的双地址能力;停止位检测。5产生和检测7位/10位地址和广播呼叫。6支持不同的通讯速度:标准速度(高达IOOkHz);快速(高达40OkHz)。7状态标志:发送器/接收器模式标志;字节发送结束标志;I2C总线忙标志。8错误标志:主模式时的仲裁丢失;地址/数据传输后的应答(ACK)错误;检测到错位的起始或停止条件;禁止拉长时钟功能时的上溢或下溢。92个中断向量:1个中断用于地址/数据通讯成功;1个中断用于错误.10可选的拉长时钟功能。“具单字节缓冲器的DMAO12可配置的PEC(信息包错误检测)的产生或校验:用于最后一个接收字节的PEC错误
3、校验。13兼容SMBUS2.0:25ms时钟低超时延时;IOmS主设备累积时钟低扩展时间;25ms从设备累积时钟低扩展时间;带ACK控制的硬件PEC产生/校验;支持地址分辨协议(ARP)。14兼容SMBUS。10.2I2C功能描述1.1.1 接收和发送数据,并将数据从串行转换成并行,或并行转换成串行。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SC1)连接到I2C总线。允许连接到标准(高达IOOkHZ)或快速(高达40OkHZ)的I2C总线。1.1.2 模式选择I2C接口有四种模式选择,接口可以下述4种模式中的一种运行:1从发送器模式2从接收器模式3主发送器模式4主接收器模式该模
4、块默认地工作于从模式。接口在生成起始条件后自动地从从模式切换到主模式;当仲裁丢失或产生停止信号时,则从主模式切换到从模式。允许多主机功能。1.1.3 通信流主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输总是以起始条件开始并以停止条件结束。起始条件和停止条件都是在主模式下由软件控制产生。从模式时,12C接口能识别它自己的地址(7位或10位)和广播呼叫地址。软件能够控制开启或禁止广播呼叫地址的识别。数据和地址按8位/字节进行传输,高位在前。跟在起始条件后的I或2个字节是地址(7位模式为1个字节,10位模式为2个字节)。地址只在主模式发送。在一个字节传输的8个时钟后的第9个时钟期间,接
5、收器必须回送一个应答位(ACK)给发送器。参考图IO-I-I12C总线协议图。软件可以开启或禁止应答(ACK),12C接口的功能框图如图Io-I-2所示。并可以设置I2C接口的地址(7位、10位地址或广播呼叫地址)。图10-1-2I2C功能框图注:在SMBUS模式下,SMBA1ERT是可选信号。如果禁止了SMBUs,则不能使用该信号。1.1.4 I2C从模式默认情况下,12C接口总是工作在从模式。从默认的从模式切换到主模式,需要产生一个起始条件。为了产生正确的时序,必须在I2C_CR2寄存器中设定该模块的输入时钟。输入时钟的频率必须至少是:1标准模式下为:2MHz2快速模式下为:4MHz一旦检
6、测到起始条件,在SDA线上接收到的地址被送到移位寄存器。然后与芯片自己的地址OAR1和OAR2(当ENDUA1=I)或者广播呼叫地址(如果ENGC=I)相比较。注:在10位地址模式时,比较包括头段序列(Iu1OXX0),其中的XX是地址的两个最高有效位。头段或地址不匹配:12C接口将其忽略并等待另一个起始条件。头段匹配(仅10位模式):如果ACK位被置”二12C接口产生一个应答脉冲并等待8位从地址。地址匹配:12C接口产生以下时序:1如果ACK被置则产生一个应答脉冲2硬件设置ADDR位;如果设置了ITEVFEN位,则产生一个中断3如I果ENDUA1=I,软件必须读DUA1F位,以确认响应了哪个
7、从地址。在10位模式,接收到地址序列后,从设备总是处于接收器模式。在收到与地址匹配的头序列并且最低位为T(即I111OXXI)后,当接收到重复的起始条件时,将进入发送器模式。在从模式下TRA位指示当前是处于接收器模式还是发送器模式。从发送器在接收到地址和清除ADDR位后,从发送器将字节从DR寄存器经由内部移位寄存器发送到SDA线上。从设备保持Se1为低电平,直到ADDR位被清除并且待发送数据己写入DR寄存器。(见图10-1-3从发送器传输序列图)。当收到应答脉冲时:TxE位被硬件置位,如果设置了ITEVFEN和ITBUFEN位,则产生一个中断。如果TxE位被置位,但在上一次数据发送结束之前没有
8、新数据写入到DR寄存器,则BTF位被置位,12C接口将保持SC1为低电平,以等待写入DR寄存器。7位从发送说明:S=Start(起始条件),Sr=重复的起始条件,P=StOP(停止条件),A=响应,NA=非响应,EVX=事件(ITEVFEN=1时产生中断)EVI:ADDR=I,读SRI然后读SR2将清除该事件。EV3-1:TxE=I,移位寄存器空。EV3:TxE=I,写DR将清除该事件;移位寄存器非空。EV3-2:AF=I,在SR1寄存器的AF位写0可清除AF位。图10-1-3从发送器的传送序列图从接收器在接收到地址并清除ADDR后,从接收器将通过内部移位寄存器从SDA线接收到的字节存进DR寄
9、存器。I2C接口在接收到每个字节后都执行下列操作:1如果设置了ACK位,则产生一个应答脉冲2硬件设置RXNE=1。如果设置了ITEVFEN和ITBUFEN位,则产生一个中断。如果RXNE被置位,并且在接收新的数据结束之前DR寄存器未被读出,BTF位被置位,I2C接口保持SC1为低电平,等待读DR寄存器(见图IO-1-4从接收器传输序列图)。7位从接收IiAddressAData1AData2ADataNAPEV1EV2EV2EV2EV410位从接收SHeaderAAddressAData1ADataNAPEV1EV2EV2EV4说明:S=Start(起始条件),Sr=重复的起始条件,P=StO
10、P(停止条件),A二响应,NA=非响应,EVX=事件(ITEVFEN=I时产生中断)EVI:ADDR=I,读SR1然后读SR2将清除该事件。EV2:RxNE=I,读DR将清除该事件。EV4:STOPF=I,读SR1然后写CR1寄存器将清除该事件图IO-I-4从接收器的传送序列图关闭从通信在传输完最后一个数据字节后,主设备产生一个停止条件,12C接口检测到这一条件时:设置STOPF=1,如果设置了ITEVFEN位,则产生一个中断。然后12C接口等待读SR1寄存器,再写CR1寄存器。(见图10-1-4的EV4)01.1.5 I2C主模式在主模式时,I2C接口启动数据传输并产生时钟信号。串行数据传输
11、总是以起始条件开始并以停止条件结束。当通过START位在总线上产生了起始条件,设备就进入了主模式。以下是主模式所要求的操作顺序:1在I2C.CR2寄存器中设定该模块的输入时钟以产生正确的时序2配置时钟控制寄存器3配置上升时间寄存器4编程12C1CR1寄存器启动外设5置12C1CR1寄存器中的START位为1,产生起始条件。I2C模块的输入时钟频率必须至少是:1标准模式下为:2MHz2快速模式下为:4MHz1 .起始条件:当BUSY=O时,设置START=I,12C接口将产生一个开始条件并切换至主模式(M/S1位置位)。注:在主模式下,设置START位将在当前字节传输完后由硬件产生一个重开始条件
12、。一旦发出开始条件:SB位被硬件置位,如果设置了ITEVFEN位,则会产生一个中断。然后主设备等待读SR1寄存器,紧跟着将从地址写入DR寄存器。2 .从地址的发送:从地址通过内部移位寄存器被送到SDA线上。在10位地址模式时,发送一个头段序列产生以下事件:1ADDIO位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。然后主设备等待读SR1寄存器,再将第二个地址字节写入DR寄存器。2ADDR位被硬件置位,如果设置了ITEVFEN位,则产生一个中断。随后主设备等待一次读SR1寄存器,跟着读SR2寄存器。在7位地址模式时,只需送出一个地址字节。一旦该地址字节被送出,ADDR位被硬件置位,如果
13、设置了ITEVFEN位,则产生一个中断。随后主设备等待一次读SR1寄存器,跟着读SR2寄存器。根据送出从地址的最低位,主设备决定进入发送器模式还是进入接收器模式。在7位地址模式时,要进入发送器模式,主设备发送从地址时置最低位为要进入接收器模式,主设备发送从地址时置最低位为1。在IO位地址模式时要进入发送器模式,主设备先送头字节(I111OXX0),然后送最低位为U的从地址。(这里XX代表10位地址中的最高2位。)要进入接收器模式,主设备先送头字节(I11IOXX0),然后送最低位为T的从地址。然后再重新发送一个开始条件,后面跟着头字节(I11IOXX1)(这里XX代表10位地址中的最高2位。)
14、TRA位指示主设备是在接收器模式还是发送器模式。3 .主发送器在发送了地址和清除了ADDR位后,主设备通过内部移位寄存器将字节从DR寄存器发送到SDA线上。主设备等待,直到TXE被清除。当收到应答脉冲时:TXE位被硬件置位,如果设置了INEVFEN和ITBUFEN位,则产生一个中断。如果TxE被置位并且在上一次数据发送结束之前没有写新的数据字节到DR寄存器,则BTF被置位,I2C接口等待BTF被清除。在DR寄存器中写入最后一个字节后,通过设置STOP位产生一个停止条件(见图I(M-5住发送器传送序列图的EV8-2),然后I2C接口将自动回到从模式(M/S位清除)。叵HeaderAAddress
15、AData1AEV5EV9EV6EV8_1EV8EV8说明:S=Start宓始条件),Sr=重复的起始条件,P=StoP(停止条件),A=响应,NA=非响应,EVX=事件(ITEVFEN=I时产生中断)。EV5:SB=I,读SR1然后将地址写入DR寄存器将清除该事件。EV6:ADDR=I,读SR1然后读SR2将清除该事件。EV8_1:TxE=I,移位寄存器空。EV87TxE=1写入DR寄存器将清除该事件。EV8_2:TxE=I,BTF=1,J停止条件时由硬件清除。EV97ADDR1O=I,读SRI然后写入DR寄存器将清除该事件。EV82注:当TxE或BTF位置位时,停止条件应安排在出现EV8.2事件时。SAddressAData1AData2ADataNAPEV5EV6EV8_1EV8EV8EV8