x11第11章 S12 SPI和I2C模块及其应用实例

上传人:woxinch****an2018 文档编号:44724332 上传时间:2018-06-14 格式:PPT 页数:58 大小:1.01MB
返回 下载 相关 举报
x11第11章 S12 SPI和I2C模块及其应用实例_第1页
第1页 / 共58页
x11第11章 S12 SPI和I2C模块及其应用实例_第2页
第2页 / 共58页
x11第11章 S12 SPI和I2C模块及其应用实例_第3页
第3页 / 共58页
x11第11章 S12 SPI和I2C模块及其应用实例_第4页
第4页 / 共58页
x11第11章 S12 SPI和I2C模块及其应用实例_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《x11第11章 S12 SPI和I2C模块及其应用实例》由会员分享,可在线阅读,更多相关《x11第11章 S12 SPI和I2C模块及其应用实例(58页珍藏版)》请在金锄头文库上搜索。

1、第11章 S12 SPI和I2C模块及其应用实例 SPI模块概述 SPI模块结构组成和特点 SPI模块寄存器及设置 I2C总线接口 I2C模块结构组成和特点 I2C模块寄存器及设置 I2C模块在智能车系统中的应用11.1 SPI模块概述 串行外设接口(Serial Peripheral Interface,SPI)总线系统是一种同步串行外 设接口,可以用于微控制器与各种外围设备 以串行方式进行通信。外围设备包括 EEPROM与Flash芯片、实时时钟模块、液 晶显示模块、A/D转换器和微控制器等。SPI 接口由一个主设备和一个或多个从设备组成 ,主设备启动与从设备的同步通信,从而完 成数据传输

2、。11.1 SPI模块概述 SPI总线接口一般需要使用4根线连接, 如图11.1所示。 11.1 SPI模块概述 串行时钟(Serial Clock,SCK)线是主机和从机 之间数据传输的同步信号。对于主机而言,SCK是时钟输 出引脚;对于从机则SCK是时钟输入引脚。在主机模式下 ,SCK时钟信号来源于主机(如微控制器)内部总线时钟 。如果传输数据宽度为8位,则每当主机发起一次传送时 ,则SCK引脚上就会产生8个时钟周期。在主机与从机之 间,数据传输发生在SCK信号的跳变沿(如上升沿),等 待数据稳定后,在另一个SCK跳变沿(如下降沿)采集数 据。 主机输入、从机输出(Master In/Sl

3、ave Out, MISO)数据线是SPI模块的两根串行数据线之一。在全双 工模式下,SPI主机的MISO连接到SPI从机的MISO,这 样,数据由从机传送到主机。在SPI设备配置为主机工作 模式时,主机通过其MISO引脚接收数据。11.1 SPI模块概述 主机输出、从机输入(Master Out /Slave In,MOSI)数据线 是SPI模块的另外一根串行数据线。在全双工模式下,SPI主机的 MOSI连接到SPI从机的MOSI。这样,主机通过MOSI发送数据的同时 ,从机通过MOSI接收数据。在SPI设备配置为主机工作模式时,主机 通过其MOSI引脚发送数据。 从机选择线SS(低电平有效

4、)。 SS (Slave Select)在主机 和从机模式中具有不同的功能。在从机模式下, 是一次数据传输开始 前允许SPI工作的片选信号;在主机模式下, SS可以置位MODF标志 位,保证一个系统只有一个SPI接口作为主机。 从图11.1可以看出,SPI主从机接口的工作原理,如同一个16位 的移位寄存器,一半在单片机内,一半在外设中。当SPI工作时,通 过串行时钟线的同步信号,循环移位8位,从而实现了单片机与外设 的数据交换。实际使用时,这种数据交换可能只有一个方向,具体的 数据流动方向与工作方式有关。11.1 SPI模块概述 SPI的工作模式主要有以下三种。 主机模式。在主机模式下,串行时

5、钟(SCK)由单片机内部时钟分 频得到,用来同步主/从机双方移位寄存器的数据传输。当向SPI的数据寄存 器SPIDR写入数据后,数据传送开始。如果此时SPI移位寄存器为空,则数据 立即被传送到移位寄存器,数据在SCK的控制下从MOSI引脚串行输出,传送 到从机设备。 从机模式。在从机模式下,串行时钟(SCK)由主机产生,从机SPI 的SCK引脚变为输入口。SS引脚为从机的片选引脚,处于输入状态,在数据 传送前被置为低电平,并保持到数据传送结束。从机通过主机产生的SCK与 主机同步,进行数据的读/写,从MOSI引脚输入数据,从MISO引脚输出数据 。 全双工模式(即双向工作模式)。在全双工模式下

6、,无论是主机模 式还是从机模式,都只用一个引脚传输数据。数据传输方向由SPICR2寄存器 中的BIDIROE位进行选择,详见后面的寄存器介绍部分。 MC9S12DG128微控制器内置有2个SPI接口模块,分别是SPI0和SPI1 ,分别使用端口PORTP0PORTP3和PORTM2PORTM5。以下着重介绍 SPI模块的特性、寄存器功能及设置,并通过应用实例,说明SPI模块的编程 实现。11.2 SPI模块结构组成和特点 MC9S12DG128微控制器内置的SPI模块如图11.2所示。11.2 SPI模块结构组成和特点SPI模块具有以下基本特征:正常模式:主机模式和从机模式;全双工模式;从机选

7、择输出;具有CPU中断能力的模式故障错误标志;双缓冲操作;极性和相位可编程的串行时钟。11.3 SPI模块寄存器及设置 MC9S12DG128的SPI模块共有5个寄存器,详见表11.1。对于 112引脚的MC9S12DG128,内部有两个SPI模块,分别是SPI0和 SPI1,表11.1中分别列出了SPI0和SPI1两个模块中各寄存器地址。11.3 SPI模块寄存器及设置11.3.1 SPI控制寄存器1SPI控制寄存器1(SPI Control Register 1,SPICR1)如图11.3所 示。读:任何时刻;写:任何时刻。 SPIE:SPI中断使能位。当每次SPIF或者MODF状态标志被

8、置位时,该位允许SPI中断。 1表示SPI中断使能; 0表示SPI中断禁止。 SPE:SPI模块功能使能位,该位用于使能SPI模块功能并设置相应的端口引脚为SPI模块 功能应用。 1表示SPI模块功能使能; 0表示SPI模块禁止(应用于低功耗)。11.3 SPI模块寄存器及设置11.3.1 SPI控制寄存器1SPTIE:SPI发送中断使能位。当每次SPTEF状态标志被置位时,该位允许SPI中断。 1表示SPTEF中断使能; 0表示SPTEF中断禁止。 MSTR:SPI主/从模式选择位。 1表示主机模式; 0表示从机模式。 CPOL:SPI时钟极性位,该位用来选择一个反向或非反向的SPI时钟。为

9、了在两个SPI模 块之间传输数据,SPI模块必须设置相同的CPOL值。 1表示低有效时钟选择,SCK空闲为高电平; 0表示高有效时钟选择,SCK空闲为低电平。 CPHA:SPI时钟相位控制位,该位用来控制串行时钟与SPI数据传输的时序关系。 1表示在发送8位数据后,SCK就产生边沿跳变; 0表示在发送8位数据后的时钟周期的一半位置SCK产生边沿跳变。11.3 SPI模块寄存器及设置11.3.1 SPI控制寄存器1SPI的时钟模式如图11.4和图11.5所示。11.3 SPI模块寄存器及设置11.3.1 SPI控制寄存器1SSOE:从机选择输出使能。SS输出特性只在主机模式下通过设置SSOE来使

10、能,详见 表11.2。LSBFE:SPI最低位首先发送使能,该位并不影响数据寄存器中MSB和LSB的位置,读取 或写入数据寄存器,最高位总是在第7位。 1表示数据传送先发送最低位; 0表示数据传送先发送最高位11.3 SPI模块寄存器及设置11.3.2 SPI控制寄存器2SPI控制寄存器2(SPI Control Register 2,SPICR2)如图11.6所 示。读:任何时刻;写:任何时刻,写保留位无效。 MODFEN:模式错误使能位,该位置“1”允许MODF状态标志被设置。如果MODF状态标 志置位,清除MODFEN并不清除MODF状态标志。如果SPI作为主机且MODFEN位清零 ,则

11、 引脚不应用于SPI模块功能,仅作为普通I/O口使用;如果SPI作为从机,无论 MODFEN为何值, 都作为输入使用。MODFEN的设置对SS引脚的影响可以参考表11.2 。 1表示允许MODF状态标志设置; 0表示禁止MODF状态标志设置。11.3 SPI模块寄存器及设置11.3.2 SPI控制寄存器2BIDIROE:双向工作模式下输出使能位。当SPI配置为双向工作模式时,该位和SPCR1 寄存器中的MSTR位共同应用于使能输出缓冲。 1表示输出缓冲使能; 0表示输出缓冲禁止。 SPISWAI:SPI在等待模式下停止位,该位用于等待模式下的低功耗应用。 1表示等待模式下停止SPI时钟; 0表

12、示等待模式下SPI时钟正常工作。 SPC0:串行引脚控制位0,该位和MSTR位共同设置双向引脚的功能配置,详见表11.3 。11.3 SPI模块寄存器及设置11.3.3 SPI波特率寄存器SPI波特率寄存器(SPI Baud Rate Register,SPIBR)如图11.7 所示。读:任何时刻;写:任何时刻,对保留位写操作无效。 SPPR2SPPR0:SPI波特率预分频位。 SPR2SPR0:SPI波特率选择位。 这些位的配置可以选择不同的SPI波特率,波特率选择配置详见表11.4。波特率计算公式 为 波特率分频系数 = (SPPR+1)2(SPR+1) 波特率=总线时钟/波特率分频系数1

13、1.3 SPI模块寄存器及设置11.3.4 SPI状态寄存器SPI状态寄存器(SPI Status Register,SPISR)如图11.8所示。读:任何时刻;写:无效。 SPIF:SPIF中断标志。数据传输的第8个SCK周期后,该位置位。当SPIF置位后,读取 SPISR寄存器,然后读取SPI数据寄存器时清除该位。 1表示数据传输到SPI数据寄存器(SPIDR); 0表示数据传输没有完成。11.3 SPI模块寄存器及设置11.3.4 SPI状态寄存器SPTEF:SPI发送空中断标志。当发送数据缓冲器为空时,该位置位。当SPTEF置位后 ,读取SPISR寄存器,然后写一个数据到数据寄存器(S

14、PIDR)时清除该位。没有读 SPISR寄存器而直接写数据到SPIDR寄存器是无效的。如果SPICR1寄存器中的SPTIE=1 ,SPTEF置位会同时产生一个SPTEF中断请求。当1字节数据从发送数据寄存器( SPIDR)传送到移位寄存器时,SPTEF自动置位。 对于一个空闲SPI模块(在SPIDR寄存器或者移位寄存器中没有数据,也没有数据 正在传输),写入SPIDR寄存器的数据总是立即被传送到移位寄存器,SPTEF在两个总 线周期内被置位,这时允许第二个字节数据写入发送缓冲器SPIDR寄存器。在移位寄存 器中的数据发送完成后,发送缓冲器SPIDR寄存器中的数据自动进入移位寄存器,同时 SPT

15、EF被置位,表示发送缓冲器SPIDR寄存器可以写入新的发送数据。如果没有新数据 写入发送缓冲器SPIDR寄存器,SPTEF仅仅保持1且没有数据从SPIDR寄存器传送到移位 寄存器。 1表示SPI数据寄存器空; 0表示SPI数据寄存器非空。 注意:只有在SPTEF置位(变为1)时,才能向SPI数据寄存器(SPIDR)写数据 。在读取SPTEF=1之前,任何写入SPI数据寄存器SPIDR的数据都被忽略。11.3 SPI模块寄存器及设置11.3.4 SPI状态寄存器MODF:模式错误标志。当SPI配置为主机时,且SPICR2寄存器中的MODFEN=1时,如 果SS输入变低,该位置位。当MODF置位后

16、,通过读取SPI状态寄存器SPISR,然后写 数据到SPI控制寄存器SPICR1清除该位。 1表示模式错误发生; 0表示模式错误未发生。11.3 SPI模块寄存器及设置11.3.4 SPI数据寄存器SPI数据寄存器(SPI Data Register,SPIDR)如图11.9所示。读:任何时刻,通常只在SPIF置位后读取;写:任何时刻。 SPI数据寄存器SPIDR是SPI数据传输的输入/输出寄存器。写入1字节数据到 SPIDR寄存器,则允许该数据进入发送队列并发送。对于SPI主机而言,当移位寄存器中 的数据发送完成后,SPIDR寄存器中的数据就会被立即发送。SPI状态寄存器(SPISR) 中的发送空标志位SPTEF表明SPI数据寄存器SPIDR是否可以写入新数据并进行发送。 注意:直到SPTEF位为高后才能够再写数据到SPI数据寄存器。11.3 SPI模块寄存器及设置11.3.4 SPI数据寄存器如果SPIF被清零且已经接收到一个字节数

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号