版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章MC9S12系列SPI和I2C模块与其应用实例第一页,共63页。第12章
MC9S12系列SPI和I2C模块
及其应用实例
SPI模块
SPI模块结构组成和特点
SPI模块寄存器及设置SPI模块应用实例
I2C总线接口
I2C模块结构组成和特点
I2C模块寄存器及设置
I2C模块在智能车系统中的应用 单片机原理及嵌入式系统开发》》》第二页,共63页。12.1SPI模块
串行外设接口(SerialPeripheralInterface,SPI)总线系统是一种同步串行外设接口,可以用于MCU与各种外围设备间以串行方式进行通信。外围设备包括EEPROM、Flash、实时时钟模块、液晶显示模块、AD转换器等。SPI总线接口由一个主设备和一个或多个从设备组成,主设备启动与从设备的同步通信,从而完成数据传输。单片机原理及嵌入式系统开发》》》第三页,共63页。12.1SPI模块
SPI总线接口一般需要使用4根线连接,如图12.1所示。
单片机原理及嵌入式系统开发》》》第四页,共63页。12.1SPI模块
①串行时钟(SerialClock,SCK)线是主机和从机之间数据传输的同步信号。对于主机而言,SCK是时钟输出引脚;对于从机则SCK是时钟输入引脚。在主机模式下,SCK时钟信号来源于主机(如微控制器)内部总线时钟。如果传输数据宽度为8位,则每当主机发起一次传送时,则SCK引脚上就会产生8个时钟周期。在主机与从机之间,数据传输发生在SCK信号的跳变沿(如上升沿),等待数据稳定后,在另一个SCK跳变沿(如下降沿)采集数据。 ②主机输入、从机输出(MasterIn/SlaveOut,MISO)数据线是SPI模块的两根串行数据线之一。在全双工模式下,SPI主机的MISO连接到SPI从机的MISO,这样,数据由从机传送到主机。在SPI设备配置为主机工作模式时,主机通过其MISO引脚接收数据。单片机原理及嵌入式系统开发》》》第五页,共63页。12.1SPI模块 ③主机输出、从机输入(MasterOut/SlaveIn,MOSI)数据线是SPI模块的另外一根串行数据线。在全双工模式下,SPI主机的MOSI连接到SPI从机的MOSI。这样,主机通过MOSI发送数据的同时,从机通过MOSI接收数据。在SPI设备配置为主机工作模式时,主机通过其MOSI引脚发送数据。 ④从机选择线SS(低电平有效)。SS(SlaveSelect)在主机和从机模式中具有不同的功能。在从机模式下,是一次数据传输开始前允许SPI工作的片选信号;在主机模式下,SS可以置位MODF标志位,保证一个系统只有一个SPI接口作为主机。 从图12.1可以看出,SPI主从机接口的工作原理,如同一个移位寄存器,一半在主机内,一半在外设中。当SPI工作时,通过串行时钟线SCK的同步信号,循环移位,从而实现了主机与外设的数据交换。实际使用时,这种数据交换可能按照一个方向移位,具体的数据流动方向与工作方式有关。单片机原理及嵌入式系统开发》》》第六页,共63页。12.1SPI模块 SPI的工作模式主要有以下三种。 ①主机模式。在主机模式下,串行时钟(SCK)由主机内部时钟分频得到,用来同步主/从机双方移位寄存器的数据传输。当向主机MC9S12XS128的SPI数据寄存器SPIDR写入数据后,数据传送开始。如果此时主机SPI移位寄存器为空,则数据立即被传送到移位寄存器,数据在SCK的控制下从主机MOSI引脚串行输出,传送给从机设备。从MOSI引脚输出数据,从MISO引脚输入数据。
②从机模式。在从机模式下,从机串行时钟(SCK)由主机产生,从机SPI的SCK引脚为输入口。引脚为从机的片选输入引脚,低电平有效,在数据传送前需要置为低电平,并保持到数据传送结束。从机通过SCK与主机同步,进行数据的读/写操作,从MOSI引脚输入数据,从MISO引脚输出数据。
③全双工模式(即双向工作模式)。在全双工模式下,无论是主机模式还是从机模式,同时只用一个引脚传输数据。数据传输方向由主机MC9S12XS128的SPICR2寄存器中的BIDIROE位进行选择,详见后面的寄存器部分介绍。
MC9S12XS128内置有1个SPI接口模块SPI0,使用端口PORTS4~PORTS7。以下着重介绍SPI模块的特性、寄存器功能及设置,并通过应用实例,说明SPI模块的编程实现。单片机原理及嵌入式系统开发》》》第七页,共63页。12.2SPI模块结构组成和特点
MC9S12XS128内置的SPI模块如图12.2所示。单片机原理及嵌入式系统开发》》》第八页,共63页。12.2SPI模块结构组成和特点 SPI模块具有以下基本特征:正常模式:主机模式和从机模式;全双工模式;从机选择输出;具有CPU中断能力的模式故障错误标志;双缓冲操作;极性和相位可编程的串行时钟。单片机原理及嵌入式系统开发》》》第九页,共63页。12.3SPI模块寄存器及设置 MC9S12XS128的SPI模块共有5个寄存器,详见表12-1。单片机原理及嵌入式系统开发》》》第十页,共63页。12.3SPI模块寄存器及设置 12.3.1SPI控制寄存器1(SPICR1)
SPI控制寄存器1(SPIControlRegister1,SPICR1)如图12.3所示。
读:任何时刻;写:任何时刻。 SPIE:SPI中断使能位,该位使能允许SPI状态标志位SPIF或者MODF产生中断请求。 0表示禁止SPI中断请求;
1表示允许SPI中断请求。 SPE:SPI模块功能使能位,该位使能允许使用SPI模块功能并设置相应的端口引脚为SPI模块功能应用。如果清零SPE位,SPI模块禁用且被强制进入空闲状态,SPISR寄存器中的状态位复位。 0表示禁用SPI模块功能(应用于低功耗); 1表示使用SPI模块功能。单片机原理及嵌入式系统开发》》》第十一页,共63页。12.3SPI模块寄存器及设置 12.3.1SPI控制寄存器1(SPICR1) SPTIE:SPI发送中断使能位,该位使能允许SPI状态标志位SPTEF产生中断请求。 0表示禁止SPTEF中断请求; 1表示允许SPTEF中断请求。 MSTR:SPI主/从模式选择位,该位确定SPI模块工作在主机模式还是从机模式。将SPI模块从主机模式切换到从机模式,或者反向切换,都会使SPI系统进入空闲状态。 0表示从机模式; 1表示主机模式。 CPOL:SPI时钟极性选择位,该位确定时钟SCK极性为反向还是非反向。为了保证两个SPI模块之间传输数据,SPI模块必须设置相同的CPOL位值。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示时钟SCK高电平有效,低电平空闲; 1表示时钟SCK低电平有效,高电平空闲。 CPHA:SPI时钟相位选择位,该位确定SPI时钟模式。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示在时钟SCK奇数边沿(1、3、5、…)采样数据; 1表示在时钟SCK偶数边沿(2、4、6、…)采样数据。单片机原理及嵌入式系统开发》》》第十二页,共63页。12.3SPI模块寄存器及设置 12.3.1SPI控制寄存器1(SPICR1) SPI的时钟模式如图12.4和图12.5所示。单片机原理及嵌入式系统开发》》》第十三页,共63页。12.3SPI模块寄存器及设置 12.3.1SPI控制寄存器1(SPICR1) SSOE:从机选择输出使能位。当SPICR2寄存器中的MODFEN置位时,主机模式下,通过设置SSOE位确定SS引脚输入/输出特性,详见表12-2。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 LSBFE:SPI最低位LSB先发送使能位,该位不影响数据寄存器中最高位MSB和最低位LSB的位置,读取或写入数据寄存器,MSB总是在第7位。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示SPI先传送数据最高位MSB; 1表示SPI先传送数据最低位LSB。单片机原理及嵌入式系统开发》》》第十四页,共63页。12.3SPI模块寄存器及设置 12.3.2SPI控制寄存器2(SPICR2) SPI控制寄存器2(SPIControlRegister2,SPICR2)如图12.6所示。
读:任何时刻;写:任何时刻,写保留位无效。 XFRW:传送数据宽度位,该位确定SPI传送数据宽度。如果选择8位数据传送宽度,则使用SPIDRL作为数据寄存器而不使用SPIDRH。如果选择16位数据传送宽度,则使用SPIDRH和SPIDRL组成16位数据寄存器。请参考12.3.4节关于发送/接收数据挂起和中断标志位清除机制的信息。主机模式下,该位变化将中止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示传送8位数据宽度; 1表示传送16位数据宽度。单片机原理及嵌入式系统开发》》》第十五页,共63页。12.3SPI模块寄存器及设置 12.3.2SPI控制寄存器2(SPICR2) MODFEN:模式错误使能位,该位使能允许检测SPISR寄存器中的模式错误标志位MODF。如果SPI为主机模式且MODFEN位为“0”时,则SS引脚不能应用于SPI模块功能,仅作为通用I/O口使用;如果SPI为从机模式,无论MODFEN为何值,SS引脚都作为SPI模块输入功能使用。MODFEN位设置对SS引脚的功能影响参见表12-2。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示SS引脚不使用SPI模块功能; 1表示SS引脚使用SPI模块功能,具有MODF位特性。 BIDIROE:双向工作模式下输出使能位。当SPC0=1,SPI模块处于双向工作模式时,该位确定SPI模块MOSI和MISO的输出缓冲。主机模式下,该位确定MOSI端口的输出缓冲;从机模式下,该位确定MISO端口的输出缓冲。主机模式下,当SPC0置位时,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。 0表示禁止输出缓冲功能; 1表示允许输出缓冲功能。 SPISWAI:等待模式下SPI模块时钟停止位,该位用于等待模式下的低功耗应用。 0表示等待模式下SPI模块时钟正常工作; 1表示等待模式下SPI模块时钟停止工作。单片机原理及嵌入式系统开发》》》第十六页,共63页。12.3SPI模块寄存器及设置 12.3.2SPI控制寄存器2(SPICR2) SPC0:串行引脚控制位0,该位确定双向引脚的功能配置,详见表12-3。主机模式下,该位变化将终止正在进行的数据传送,且SPI系统被强制进入空闲模式。单片机原理及嵌入式系统开发》》》第十七页,共63页。12.3SPI模块寄存器及设置 12.3.3SPI波特率寄存器(SPIBR)
SPI波特率寄存器(SPIBaudRateRegister,SPIBR)如图12.7所示。
读:任何时刻;写:任何时刻,对保留位写操作无效。 SPPR2~SPPR0:SPI波特率预分频位。主机模式下,这些位的变化将中止正在进行的数据传送,且SPI系统被强制进入空闲模式。 SPR2~SPR0:SPI波特率选择位。主机模式下,这些位的变化将中止正在进行的数据传送,且SPI系统被强制进入空闲模式。
这些位的配置可以选择不同的SPI波特率,波特率选择配置详见表12-4。波特率计算公式为
波特率分频系数=(SPPR+1)×2(SPR+1)
波特率=总线时钟/波特率分频系数单片机原理及嵌入式系统开发》》》第十八页,共63页。12.3SPI模块寄存器及设置 12.3.3SPI波特率寄存器(SPIBR)单片机原理及嵌入式系统开发》》》第十九页,共63页。12.3SPI模块寄存器及设置 12.3.3SPI波特率寄存器(SPIBR)单片机原理及嵌入式系统开发》》》第二十页,共63页。12.3SPI模块寄存器及设置 12.3.4SPI状态寄存器(SPISR) SPI状态寄存器(SPIStatusRegister,SPISR)如图12.8所示。
读:任何时刻;写:无效。 SPIF:SPIF中断标志位。接收到的数据被传送至SPI数据寄存器SPIDR后,该位置位。关于清除SPIF位的详细说明,参见表12-5。 0表示数据传送没有完成; 1表示数据已传送到SPI数据寄存器。单片机原理及嵌入式系统开发》》》第二十一页,共63页。12.3SPI模块寄存器及设置 12.3.4SPI状态寄存器(SPISR)
注1:这种情况下,SPIDRH寄存器中的数据丢失。
注2:SPIDRH可以被重复读取数据,对SPIF位没有任何影响。只有在SPIF=1时,读取SPISR寄存器,之后再读取SPIDRL寄存器,则SPIF位才能清除。单片机原理及嵌入式系统开发》》》第二十二页,共63页。12.3SPI模块寄存器及设置 12.3.4SPI状态寄存器(SPISR) SPTEF:SPI发送空中断标志位。当发送数据寄存器为空SPIDR时,该位置位。关于清除该标志位以及发送SPIDR寄存器中的数据的详细说明,参见表12-6。 0表示SPI数据寄存器SPIDR非空; 1表示SPI数据寄存器SPIDR已空。
注1:SPTEF=0时,任何对SPIDRH或SPIDRL寄存器写操作会被忽略。
注2:这种情况下,SPIDRH中的数据无效。
注3:SPIDRH可以被重复写入数据,对SPIF位没有任何影响。只有在SPTEF=1时,读取SPISR寄存器,之后再写SPIDRL寄存器,则SPTEF位才能清除。单片机原理及嵌入式系统开发》》》第二十三页,共63页。12.3SPI模块寄存器及设置 12.3.4SPI状态寄存器(SPISR) MODF:模式错误标志位。当SPI配置为主机时,且SPICR2寄存器中的MODFEN=1时,如果主机检测到SS引脚输入变低,该位置位。当MODF置位后,通过读取SPI状态寄存器SPISR,然后写数据到SPI控制寄存器SPICR1清除该位。 0表示模式错误未发生; 1表示模式错误已发生。单片机原理及嵌入式系统开发》》》第二十四页,共63页。12.3SPI模块寄存器及设置 12.3.5SPI数据寄存器(SPIDR:SPIDRH,SPIDRL) SPI数据寄存器(SPIDataRegister,SPIDR)如图12.9和12.10所示。单片机原理及嵌入式系统开发》》》第二十五页,共63页。12.3SPI模块寄存器及设置 12.3.5SPI数据寄存器(SPIDR:SPIDRH,SPIDRL)
读:任何时刻,只在SPIF置位后读取数据有效;写:任何时刻。 SPI数据寄存器SPIDR是SPI数据传送的输入/输出寄存器。写入数据到SPIDR寄存器,则允许该数据进入发送队列并发送。对于SPI主机,当移位寄存器中的数据发送完成后,队列数据就会被立即发送。SPI状态寄存器SPISR中的发送空标志位SPTEF表明SPI数据寄存器是否准备好接收新数据。
当SPIF置位时,SPIDR寄存器中的接收数据有效。
如果SPIF位被清零且已经接收到数据,则接收到的数据会从移位寄存器传送到SPIDR寄存器,然后置位SPIF。
如果SPIF=1,但没有对接收到的SPIDR寄存器中的第一个数据进行及时操作,这时又接收到了第二个数据,第二个数据在移位寄存器中将一直保持有效直到接收到第三个数据,而SPIDR寄存器中的第一个数据保持不变。
如果SPIF=1,且有效数据在移位寄存器中,SPIF位在第三个数据开始接收前被清零了,则移位寄存器中的第二个数据会传送到SPIDR寄存器,而SPIF位重新为1。
如果SPIF=1,且有效数据在移位寄存器中,SPIF在第三个数据开始接收后才被清零,则移位寄存器中的第二个数据将变为无效,也不会被传送到SPIDR寄存器,这时第三个数据将会接收到移位寄存器中。单片机原理及嵌入式系统开发》》》第二十六页,共63页。12.4SPI模块应用实例
本实例使用SPI发送数据,实例电路原理图如图12.11所示,图中74LS164是8位串行输入/并行输出移位寄存器,通过该芯片将MC9S12XS128中SPI模块的MOSI输出的串行数据转换为并行数据,输出的并行数据连接到4位8段数码管的段引脚,4位共阳极数码管的公共端由PORTA0~PORTA3控制。编程实现4位数码管从左到右分别显示数字3210。单片机原理及嵌入式系统开发》》》第二十七页,共63页。12.4SPI模块应用实例程序清单:单片机原理及嵌入式系统开发》》》第二十八页,共63页。12.4SPI模块应用实例程序清单:单片机原理及嵌入式系统开发》》》第二十九页,共63页。12.4SPI模块应用实例程序清单:单片机原理及嵌入式系统开发》》》第三十页,共63页。12.4SPI模块应用实例程序清单:单片机原理及嵌入式系统开发》》》第三十一页,共63页。12.5I2C总线接口12.5.1I2C总线概述
NXP半导体(原Philips半导体)公司于20世纪80年代初推出了一种简单的双向二线制串行通信总线,这种总线被称为Inter-IC(I2C或IIC或I2C)总线。目前I2C总线已经成为业界嵌入式应用的标准解决方案,同SPI总线一样,被广泛地应用在基于微控制器与各种外围设备之间的串行通信,可以作为控制、诊断与电源管理等方面的数据通信总线,主要应用领域包括消费类电子、电信产品等。多个符合I2C总线标准的器件都可以通过同一条I2C总线进行通信,而不需要额外的地址译码器。I2C是一种两线制串行总线,因此操作非常简单。单片机原理及嵌入式系统开发》》》第三十二页,共63页。12.5I2C总线接口12.5.1I2C总线概述
I2C总线有很多特点,如下所述:总线仅由2根信号线组成,分别是数据线(SDA)和时钟线(SCL)。总线协议简单。协议容易实现,即使微控制器内部没有集成I2C总线接口,也能够方便地利用开漏或集电极开路的I/O或准双向I/O端口模拟实现。支持的器件多,NXP半导体最早提出I2C总线协议,目前恩智浦半导体(NXP)、飞思卡尔半导体(Freescale)、德州仪器(TI)、美国国家半导体(NationalSemiconductor)、意法半导体(ST)、美信半导体(Maxim)等公司都有大量带有I2C总线接口的产品,这为用户设计产品时选择合适的I2C器件提供了广阔的空间。总线上可同时挂接多个器件,同一条I2C总线上可以挂接很多个器件,一般可达数十个以上,甚至更多。器件之间是靠不同的编址来区分的,而不需要附加的I/O线或地址译码部件。总线可裁减性好,在原有总线连接的基础上可以随时新增或者删除器件,用软件可以很容易实现I2C总线的自检功能,能够及时发现总线上器件的变动。单片机原理及嵌入式系统开发》》》第三十三页,共63页。12.5I2C总线接口12.5.1I2C总线概述
总线电气兼容性好,I2C总线规定器件之间以开漏I/O互连,这样只要选取适当的上拉电阻就能轻易实现3V/5V逻辑电平的兼容,而不需要额外的电平转换。支持多种通信方式,一主多从是最常见的通信方式,此外还支持双主机通信、多主机通信以及广播通信模式等。通信速率高,I2C总线标准传输速率为100kb/s,在快速模式下为400kb/s。按照以后修订的版本,位传输速率可高达3.4Mb/s。兼顾低速通信,I2C总线的通信速率也可以低至几kb/s以下,用于支持低速器件(比如通过软件模拟的实现方法)或者用来延长通信距离。通信距离较远,一般情况下,I2C总线通信距离可达几米到十几米,通过降低传输速率等办法,通信距离可延长到数十米乃至数百米。单片机原理及嵌入式系统开发》》》第三十四页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理 I2C总线只需要两根信号线,一根是串行数据线SDA,另一根是串行时钟线SCL。在系统中,I2C总线的典型结构如图12.12所示。单片机原理及嵌入式系统开发》》》第三十五页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理
在介绍I2C总线工作原理之前,首先必须明确几个基本概念:发送器(Transmitter):发送数据到总线的器件;接收器(Receiver):从总线接收数据的器件;主机(Master):初始化发送、产生时钟信号和终止信号发送的器件;从机(Slave):被主机寻址的器件。
I2C总线是双向传输的总线,因此主机和从机都可能成为发送器和接收器。如果主机向从机发送数据,则主机是发送器,从机是接收器;如果主机读取从机数据,则主机是接收器,从机是发送器。不论主机是发送器还是接收器,时钟信号SCL都要由主机产生。单片机原理及嵌入式系统开发》》》第三十六页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理
以下简要介绍I2C总线的标准规范。
1.I2C总线上数据的有效性
I2C总线中数据线SDA的电平状态必须在时钟线SCL处于高电平期间保持稳定不变;SDA的电平状态只有在SCL处于低电平期间才允许改变,但是在I2C总线的起始条件和停止条件例外。I2C总线上数据有效性如图12.13所示。单片机原理及嵌入式系统开发》》》第三十七页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理 2.I2C总线起始条件和停止条件 起始条件(起始信号):当SCL处于高电平期间时,SDA从高电平向低电平跳变时产生起始条件。 总线在起始条件产生后便处于忙的状态。起始条件常常简记为S。 停止条件(停止信号):当SCL处于高电平期间时,SDA从低电平向高电平跳变时产生停止条件。 总线在停止条件产生后处于空闲状态。停止条件简记为P,如图12.14所示。单片机原理及嵌入式系统开发》》》第三十八页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理 3.I2C总线的应答信号 在I2C总线传输数据过程中,每传输1字节数据,都要有一个应答状态位。接收器数据接收情况通过产生应答位来告知发送器。应答位的时钟脉冲仍由主机产生,而应答位的数据接收状态则遵循“谁接收谁产生”的原则,即总是由接收器来产生应答位,主机向从机发送数据时,应答位由从机产生;主机接收从机数据时,应答位由主机产生。I2C总线标准规定:应答位为0表示接收器应答(ACK),常常简记为A;为1则表示非应答(NACK),常常简记为A。发送器发送完数据之后,应当释放SDA线(需要拉高SDA,输出端口截止),以等待接收器产生应答位。如果接收器在接收完最后一个字节的数据,或者不能再接收更多的数据时,应当产生非应答来通知发送器。发送器如果发现接收器产生了非应答状态,则应当终止发送。单片机原理及嵌入式系统开发》》》第三十九页,共63页。12.5I2C总线接口12.5.2I2C总线工作原理 4.I2C总线的数据传送
I2C总线总是以字节(Byte)为单位收发数据的,每次传送的数据是8位。每次传输从起始信号开始,之后传送的字节数量没有严格限制。首先传输的是数据的最高位(MSB,第7位),最后传输的是最低位(LSB,第0位)。另外,每个字节之后还要跟一个应答位,应答位总是由接收器产生。所有数据传送结束后,主控制器发出终止信号。
5.从机地址
I2C总线不需要额外的地址译码器和片选信号。多个具有I2C总线接口的器件都可以连接到同一条I2C总线上,它们之间通过器件地址来区分。主机是主控器件,不需要器件地址,其他器件都属于从机,需要配置有器件地址。必须保证同一条I2C总线上所有从机的地址都是唯一确定的,不能有重复,否则I2C总线将不能正常工作。一般从机地址由7位地址位和一位读/写位标志R/组成,7位地址占据高7位,读/写位在最后。读/写位是0,表示主机将要向从机写入数据;读/写位是1,则表示主机将要读取从机数据。
I2C总线主机向从机发送数据的基本格式如图12.15所示,I2C总线主机读取从机数据的基本格式如图12.16所示。单片机原理及嵌入式系统开发》》》第四十页,共63页。12.6I2C模块结构组成和特点 MC9S12DG128就内置了I2C模块,使用PortJ6和PortJ7两个引脚作为SDA和SCL。本章以下内容都是针对MC9S12DG128介绍I2C模块的特性、寄存器功能及设置,并通过应用实例和I2C模块在自主寻迹智能车上的应用,让读者掌握I2C模块的应用及编程方法。 MC9S12DG128内置的I2C模块如图12.17所示。单片机原理及嵌入式系统开发》》》第四十一页,共63页。12.6I2C模块结构组成和特点I2C模块具有以下基本特征:符合I2C总线标准;支持多主机操作;软件可编程设置256种串行时钟频率;软件可编程选择应答位;字节数据中断传输;仲裁丢失中断,自动将主机模式切换到从机模式;寻址识别中断;起始信号和停止信号的产生/检测功能;重复产生起始信号;应答位的产生/检测功能;总线忙检测。单片机原理及嵌入式系统开发》》》第四十二页,共63页。12.7I2C模块寄存器及设置 MC9S12DG128的I2C模块共有5个寄存器,详见表12-7。以下详细介绍各寄存器的功能及每一位的作用。单片机原理及嵌入式系统开发》》》第四十三页,共63页。12.7I2C模块寄存器及设置 12.7.1I2C总线地址寄存器(IBAD) I2C总线地址寄存器(I2CBusAddressRegister,IBAD)如图12.18所示。
读:任何时刻;写:任何时刻。 该寄存器针对被寻址从机,由I2C总线产生响应地址,但这个地址不是由主机通过总线进行传送的。
ADR7~ADR1:从机地址,包括I2C模块使用的特殊从机地址,I2C总线的默认模式是总线上的地址匹配从机地址。
Bit0:保留位,为了将来产品的兼容性而设置,读取该位总为0。单片机原理及嵌入式系统开发》》》第四十四页,共63页。12.7I2C模块寄存器及设置 12.7.2I2C总线分频寄存器(IBFD) I2C总线分频寄存器(I2CBusFrequencyDividerRegister,IBFD)如图12.19所示。
读:任何时刻;写:任何时刻。
IBC7~IBC0:I2C总线时钟分频系数,该寄存器用于确定I2C总线的时钟频率,其中IBC7~IBC6定义预分频增益系数;IBC5~IBC3定义预分频因子;IBC2~IBC0选择保持时间长度。寄存器中各位的含义详见表12-8和表12-9。单片机原理及嵌入式系统开发》》》第四十五页,共63页。12.7I2C模块寄存器及设置 12.7.2I2C总线分频寄存器(IBFD)单片机原理及嵌入式系统开发》》》第四十六页,共63页。12.7I2C模块寄存器及设置 12.7.2I2C总线分频寄存器(IBFD)单片机原理及嵌入式系统开发》》》第四十七页,共63页。12.7I2C模块寄存器及设置 12.7.2I2C总线分频寄存器(IBFD) I2C总线部分分频对照表12-10所示,如需要查阅其他数值,可以参阅数据手册S12IICV2.pdf。。单片机原理及嵌入式系统开发》》》第四十八页,共63页。12.7I2C模块寄存器及设置 12.7.3I2C总线控制寄存器(IBCR) I2C总线控制寄存器(I2CBusControlRegister,IBCR)如图12.20所示。
读:任何时刻;写:任何时刻。
IBEN:I2C模块使能位,该位控制I2C模块的软件复位。 0表示I2C模块禁止且软件复位,这时处于上电复位状态。当该位为0时,I2C模块功能禁止且处于软件复位功能,但是其他寄存器仍然可以访问; 1表示I2C模块使能,该位必须在IBCR寄存器的其他位起作用前置位。如果I2C模块在一个字节数据传输过程中使能,则从机模式会忽略当前总线上的传输数据,一旦检测到后面的起始信号就开始进行数据传输;而主机模式不检测总线忙状态,因此如果一个起始信号产生,当前总线周期可能会破坏,最终将导致当前总线的主机或者I2C模块丢失仲裁,随后总线操作将返回正常模式。单片机原理及嵌入式系统开发》》》第四十九页,共63页。12.7I2C模块寄存器及设置 12.7.3I2C总线控制寄存器(IBCR) IBIE:I2C总线中断使能位。 0表示I2C总线中断禁止,此时I2C模块不处理已产生的中断; 1表示I2C总线中断使能,I2C总线中断发生时,则IBSR状态寄存器中的IBIF位置位。
MS/SL:主机/从机模式选择位。微控制器复位后,该位清零。当该位从0变为1时,总线上会产生一个起始信号,为主机工作模式。当该位从1变为0时,总线上会产生一个停止信号,工作模式变为从机模式。停止信号只有在IBIF标志置位时才能够产生。当主机丢失仲裁时,该位被清零但是不产生停止信号。 0表示从机模式; 1表示主机模式。
Tx/RX:发送/接收模式选择位,该位选择主机和从机数据传输的方向。在从机模式和主机模式下,该位需要软件置位,根据IBSR状态寄存器中的SRW位来确定数据传输方向。在寻址周期,该位总为高电平。 0表示接收模式; 1表示发送模式。单片机原理及嵌入式系统开发》》》第五十页,共63页。12.7I2C模块寄存器及设置 12.7.3I2C总线控制寄存器(IBCR) TXAK:发送应答使能位。对于主机接收器和从机接收器,该位确定总线应答周期的SDA值。如果I2C模块使能,无需设置TXAK,I2C模块总是响应地址匹配器件。注意只有当I2C模块作为接收器时,操作该位才有效。 0表示接收到1字节的数据后,在总线的第9个周期产生一个应答位且发送到总线上; 1表示不发送应答信号。
RSTA:重复起始信号位。主机模式时,该位置1就会在总线上产生一个重复起始信号。读取该位总是返回0。如果总线被另一个主机占用,试图产生一个重复起始信号将导致仲裁丢失。 0表示禁止产生重复起始信号; 1表示产生一个重复起始信号。
Bit1:保留位,为了将来产品的兼容性而设置,读取该位总为0。
IBSWAI:等待模式下I2C总线模块的时钟停止位。 0表示在等待模式下,I2C总线模块时钟正常工作; 1表示在等待模式下,I2C总线模块时钟停止工作。单片机原理及嵌入式系统开发》》》第五十一页,共63页。12.7I2C模块寄存器及设置 12.7.4I2C总线状态寄存器(IBSR) I2C总线状态寄存器(I2CBusStatusRegister,IBSR)如图12.21所示。
该寄存器除了第1位(IBIF)和第4位(IBAL)外,其余位都是只读的。
TCF:数据传输位。当数据的一个字节正在传输时,该位被清除。TCF在字节传输的第9个时钟的下降沿置位。注意该位只在一个字节数据传送到一个I2C模块或者接收到一个I2C模块的数据或数据传输完成时有效。 0表示数据传输正在进行; 1表示数据传输完成。单片机原理及嵌入式系统开发》》》第五十二页,共63页。12.7I2C模块寄存器及设置 12.7.4I2C总线状态寄存器(IBSR)
该寄存器除了第1位(IBIF)和第4位(IBAL)外,其余位都是只读的。
TCF:数据传输位。当数据的一个字节正在传输时,该位被清除。TCF在字节传输的第9个时钟的下降沿置位。注意该位只在一个字节数据传送到一个I2C模块或者接收到一个I2C模块的数据或数据传输完成时有效。 0表示数据传输正在进行; 1表示数据传输完成。
IAAS:从机被寻址位。当I2C模块自身模块地址(由I2C总线地址寄存器IBAD确定)与主机发送地址匹配时,该位被置位。如果IBIE置位,MCU产生中断。之后MCU需要检测SRW位并设置相应的Tx/RX模式。写I2C总线控制寄存器IBCR清除该位。 0表示从机未被寻址; 1表示从机被寻址。
IBB:总线忙标志位。该位表示总线状态。 0表示当检测到一个起始信号时,IBB置位,如果检测到一个停止信号,IBB被清除且总线进入空闲状态; 1表示总线忙。单片机原理及嵌入式系统开发》》》第五十三页,共63页。12.7I2C模块寄存器及设置 12.7.4I2C总线状态寄存器(IBSR) IBAL:仲裁丢失。当仲裁丢失时该位由硬件置位。在下列情况中,仲裁可能丢失: 在地址或数据传输周期中,如果主机产生的SDA为高电平,但是检测SDA为低电平; 在一个数据应答位接收过程中,如果主机产生的SDA为高电平,但是检测SDA为低电平; 当总线忙时试图产生一个起始信号; 在从机模式下一个重复起始信号被请求; 当主机没有请求时,但检测到一个停止信号。
IBAL位必须通过软件置1清除,向该位写0无效。
SRW:从机读/写位。当IAAS被置位,该位表示主机发送从机寻址时的读/写控制位SRW值。SRW位仅当I2C模块处于从机模式时有效,通过检测该位,MCU可以根据主机的命令选择从机的发送/接收模式。 1表示从机接收,主机写数据到从机; 0表示从机发送,主机读入从机数据。
IBIF:I2C总线中断位。当以下一种情况发生时,该位置位: 仲裁丢失(IBAL=1); 字节传输完成(TCF=1); 从机被寻址(IAAS=1)。 如果IBIE=1,IBIF置位将会产生一个中断请求,该位必须通过软件置1清除,向该位写0无效。
RXAK:接收应答使能位,为总线应答周期的SDA值。如果接收到应答位(RXAK)为0,表示在总线8位数据传输完成后已接收到应答信号。如果RXAK为1,意味着在第9个时钟周期仍然没有检测到应答信号。 0表示已接收到应答; 1表示未接收到应答。单片机原理及嵌入式系统开发》》》第五十四页,共63页。12.7I2C模块寄存器及设置 12.7.5I2C总线数据输入/输出寄存器(IBDR) I2C总线数据输入/输出寄存器(I2CBusDataI/ORegister,IBDR)如图12.22所示。
在主机发送模式,当一个数据被写入该寄存器,数据传输开始,先传送最高位。在主机接收模式,读取该寄存器启动下一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023六年级数学下册 五 确定位置第二课时 用方向和距离确定位置(2)教学实录 苏教版
- 届九年级化学上册 2.3 制取氧气教学实录2 (新版)新人教版
- 七年级语文上册 第三单元《金色花》教学实录 北师大版
- 升学宴嘉宾代表致辞7篇
- 焦中华教授中治疗恶性肿瘤学术思想探讨
- 描写大自然的初三作文600字5篇
- 文员工作总结15篇
- 2021收银员年度总结和计划5篇
- 银行干部竞聘演讲稿合集八篇
- 感谢老师的感谢信汇编15篇
- DG-TJ 08-2360-2021 装配整体式混凝土结构工程监理标准
- 安徽省水利工程质量检测和建筑材料试验服务收费标准
- 快递公司消防安全管理制度范本(通用5篇)
- QCDSM目标管理五大要素
- OA协同办公系统运行管理规定
- 某小区建筑节能保温工程监理实施细则
- 高一语文必修一二册背诵课文默写
- 外市电引入工程实施管理要求(重要)
- 危险化学品企业重点人员任职资质达标要求
- 光缆测试单芯光纤模版(自动生成曲线图144芯)
- 电光调制实验报告
评论
0/150
提交评论