




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MC9S12XS单片机原理及嵌入式系统开发 MC9S12XS单片机原理及嵌入式系统开发 张阳 吴晔 滕勤Email TEL MC9S12XS单片机原理及嵌入式系统开发 第12章MC9S12系列SPI和I2C模块及其应用实例 SPI模块SPI模块结构组成和特点SPI模块寄存器及设置SPI模块应用实例I2C总线接口I2C模块结构组成和特点I2C模块寄存器及设置I2C模块在智能车系统中的应用 MC9S12XS单片机原理及嵌入式系统开发 12 1SPI模块 串行外设接口 SerialPeripheralInterface SPI 总线系统是一种同步串行外设接口 可以用于MCU与各种外围设备间以串行方式进行通信 外围设备包括EEPROM Flash 实时时钟模块 液晶显示模块 AD转换器等 SPI总线接口由一个主设备和一个或多个从设备组成 主设备启动与从设备的同步通信 从而完成数据传输 MC9S12XS单片机原理及嵌入式系统开发 12 1SPI模块 SPI总线接口一般需要使用4根线连接 如图12 1所示 MC9S12XS单片机原理及嵌入式系统开发 12 1SPI模块 串行时钟 SerialClock SCK 线是主机和从机之间数据传输的同步信号 对于主机而言 SCK是时钟输出引脚 对于从机则SCK是时钟输入引脚 在主机模式下 SCK时钟信号来源于主机 如微控制器 内部总线时钟 如果传输数据宽度为8位 则每当主机发起一次传送时 则SCK引脚上就会产生8个时钟周期 在主机与从机之间 数据传输发生在SCK信号的跳变沿 如上升沿 等待数据稳定后 在另一个SCK跳变沿 如下降沿 采集数据 主机输入 从机输出 MasterIn SlaveOut MISO 数据线是SPI模块的两根串行数据线之一 在全双工模式下 SPI主机的MISO连接到SPI从机的MISO 这样 数据由从机传送到主机 在SPI设备配置为主机工作模式时 主机通过其MISO引脚接收数据 MC9S12XS单片机原理及嵌入式系统开发 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的同步信号 循环移位 从而实现了主机与外设的数据交换 实际使用时 这种数据交换可能按照一个方向移位 具体的数据流动方向与工作方式有关 MC9S12XS单片机原理及嵌入式系统开发 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模块的编程实现 MC9S12XS单片机原理及嵌入式系统开发 12 2SPI模块结构组成和特点 MC9S12XS128内置的SPI模块如图12 2所示 MC9S12XS单片机原理及嵌入式系统开发 12 2SPI模块结构组成和特点 SPI模块具有以下基本特征 正常模式 主机模式和从机模式 全双工模式 从机选择输出 具有CPU中断能力的模式故障错误标志 双缓冲操作 极性和相位可编程的串行时钟 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 MC9S12XS128的SPI模块共有5个寄存器 详见表12 1 MC9S12XS单片机原理及嵌入式系统开发 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模块功能 MC9S12XS单片机原理及嵌入式系统开发 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 采样数据 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 1SPI控制寄存器1 SPICR1 SPI的时钟模式如图12 4和图12 5所示 MC9S12XS单片机原理及嵌入式系统开发 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 MC9S12XS单片机原理及嵌入式系统开发 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位数据宽度 MC9S12XS单片机原理及嵌入式系统开发 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模块时钟停止工作 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 2SPI控制寄存器2 SPICR2 SPC0 串行引脚控制位0 该位确定双向引脚的功能配置 详见表12 3 主机模式下 该位变化将终止正在进行的数据传送 且SPI系统被强制进入空闲模式 MC9S12XS单片机原理及嵌入式系统开发 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 波特率 总线时钟 波特率分频系数 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 3SPI波特率寄存器 SPIBR MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 3SPI波特率寄存器 SPIBR MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 4SPI状态寄存器 SPISR SPI状态寄存器 SPIStatusRegister SPISR 如图12 8所示 读 任何时刻 写 无效 SPIF SPIF中断标志位 接收到的数据被传送至SPI数据寄存器SPIDR后 该位置位 关于清除SPIF位的详细说明 参见表12 5 0表示数据传送没有完成 1表示数据已传送到SPI数据寄存器 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 4SPI状态寄存器 SPISR 注1 这种情况下 SPIDRH寄存器中的数据丢失 注2 SPIDRH可以被重复读取数据 对SPIF位没有任何影响 只有在SPIF 1时 读取SPISR寄存器 之后再读取SPIDRL寄存器 则SPIF位才能清除 MC9S12XS单片机原理及嵌入式系统开发 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位才能清除 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 4SPI状态寄存器 SPISR MODF 模式错误标志位 当SPI配置为主机时 且SPICR2寄存器中的MODFEN 1时 如果主机检测到SS引脚输入变低 该位置位 当MODF置位后 通过读取SPI状态寄存器SPISR 然后写数据到SPI控制寄存器SPICR1清除该位 0表示模式错误未发生 1表示模式错误已发生 MC9S12XS单片机原理及嵌入式系统开发 12 3SPI模块寄存器及设置 12 3 5SPI数据寄存器 SPIDR SPIDRH SPIDRL SPI数据寄存器 SPIDataRegister SPIDR 如图12 9和12 10所示 MC9S12XS单片机原理及嵌入式系统开发 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寄存器 这时第三个数据将会接收到移位寄存器中 MC9S12XS单片机原理及嵌入式系统开发 12 4SPI模块应用实例 本实例使用SPI发送数据 实例电路原理图如图12 11所示 图中74LS164是8位串行输入 并行输出移位寄存器 通过该芯片将MC9S12XS128中SPI模块的MOSI输出的串行数据转换为并行数据 输出的并行数据连接到4位8段数码管的段引脚 4位共阳极数码管的公共端由PORTA0 PORTA3控制 编程实现4位数码管从左到右分别显示数字3210 MC9S12XS单片机原理及嵌入式系统开发 12 4SPI模块应用实例 程序清单 MC9S12XS单片机原理及嵌入式系统开发 12 4SPI模块应用实例 程序清单 MC9S12XS单片机原理及嵌入式系统开发 12 4SPI模块应用实例 程序清单 MC9S12XS单片机原理及嵌入式系统开发 12 4SPI模块应用实例 程序清单 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 1I2C总线概述 NXP半导体 原Philips半导体 公司于20世纪80年代初推出了一种简单的双向二线制串行通信总线 这种总线被称为Inter IC I2C或IIC或I2C 总线 目前I2C总线已经成为业界嵌入式应用的标准解决方案 同SPI总线一样 被广泛地应用在基于微控制器与各种外围设备之间的串行通信 可以作为控制 诊断与电源管理等方面的数据通信总线 主要应用领域包括消费类电子 电信产品等 多个符合I2C总线标准的器件都可以通过同一条I2C总线进行通信 而不需要额外的地址译码器 I2C是一种两线制串行总线 因此操作非常简单 MC9S12XS单片机原理及嵌入式系统开发 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总线的自检功能 能够及时发现总线上器件的变动 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 1I2C总线概述 总线电气兼容性好 I2C总线规定器件之间以开漏I O互连 这样只要选取适当的上拉电阻就能轻易实现3V 5V逻辑电平的兼容 而不需要额外的电平转换 支持多种通信方式 一主多从是最常见的通信方式 此外还支持双主机通信 多主机通信以及广播通信模式等 通信速率高 I2C总线标准传输速率为100kb s 在快速模式下为400kb s 按照以后修订的版本 位传输速率可高达3 4Mb s 兼顾低速通信 I2C总线的通信速率也可以低至几kb s以下 用于支持低速器件 比如通过软件模拟的实现方法 或者用来延长通信距离 通信距离较远 一般情况下 I2C总线通信距离可达几米到十几米 通过降低传输速率等办法 通信距离可延长到数十米乃至数百米 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 2I2C总线工作原理 I2C总线只需要两根信号线 一根是串行数据线SDA 另一根是串行时钟线SCL 在系统中 I2C总线的典型结构如图12 12所示 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 2I2C总线工作原理 在介绍I2C总线工作原理之前 首先必须明确几个基本概念 发送器 Transmitter 发送数据到总线的器件 接收器 Receiver 从总线接收数据的器件 主机 Master 初始化发送 产生时钟信号和终止信号发送的器件 从机 Slave 被主机寻址的器件 I2C总线是双向传输的总线 因此主机和从机都可能成为发送器和接收器 如果主机向从机发送数据 则主机是发送器 从机是接收器 如果主机读取从机数据 则主机是接收器 从机是发送器 不论主机是发送器还是接收器 时钟信号SCL都要由主机产生 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 2I2C总线工作原理 以下简要介绍I2C总线的标准规范 1 I2C总线上数据的有效性I2C总线中数据线SDA的电平状态必须在时钟线SCL处于高电平期间保持稳定不变 SDA的电平状态只有在SCL处于低电平期间才允许改变 但是在I2C总线的起始条件和停止条件例外 I2C总线上数据有效性如图12 13所示 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 2I2C总线工作原理 2 I2C总线起始条件和停止条件起始条件 起始信号 当SCL处于高电平期间时 SDA从高电平向低电平跳变时产生起始条件 总线在起始条件产生后便处于忙的状态 起始条件常常简记为S 停止条件 停止信号 当SCL处于高电平期间时 SDA从低电平向高电平跳变时产生停止条件 总线在停止条件产生后处于空闲状态 停止条件简记为P 如图12 14所示 MC9S12XS单片机原理及嵌入式系统开发 12 5I2C总线接口 12 5 2I2C总线工作原理 3 I2C总线的应答信号在I2C总线传输数据过程中 每传输1字节数据 都要有一个应答状态位 接收器数据接收情况通过产生应答位来告知发送器 应答位的时钟脉冲仍由主机产生 而应答位的数据接收状态则遵循 谁接收谁产生 的原则 即总是由接收器来产生应答位 主机向从机发送数据时 应答位由从机产生 主机接收从机数据时 应答位由主机产生 I2C总线标准规定 应答位为0表示接收器应答 ACK 常常简记为A 为1则表示非应答 NACK 常常简记为A 发送器发送完数据之后 应当释放SDA线 需要拉高SDA 输出端口截止 以等待接收器产生应答位 如果接收器在接收完最后一个字节的数据 或者不能再接收更多的数据时 应当产生非应答来通知发送器 发送器如果发现接收器产生了非应答状态 则应当终止发送 MC9S12XS单片机原理及嵌入式系统开发 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所示 MC9S12XS单片机原理及嵌入式系统开发 12 6I2C模块结构组成和特点 MC9S12DG128就内置了I2C模块 使用PortJ6和PortJ7两个引脚作为SDA和SCL 本章以下内容都是针对MC9S12DG128介绍I2C模块的特性 寄存器功能及设置 并通过应用实例和I2C模块在自主寻迹智能车上的应用 让读者掌握I2C模块的应用及编程方法 MC9S12DG128内置的I2C模块如图12 17所示 MC9S12XS单片机原理及嵌入式系统开发 12 6I2C模块结构组成和特点 I2C模块具有以下基本特征 符合I2C总线标准 支持多主机操作 软件可编程设置256种串行时钟频率 软件可编程选择应答位 字节数据中断传输 仲裁丢失中断 自动将主机模式切换到从机模式 寻址识别中断 起始信号和停止信号的产生 检测功能 重复产生起始信号 应答位的产生 检测功能 总线忙检测 MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 MC9S12DG128的I2C模块共有5个寄存器 详见表12 7 以下详细介绍各寄存器的功能及每一位的作用 MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 1I2C总线地址寄存器 IBAD I2C总线地址寄存器 I2CBusAddressRegister IBAD 如图12 18所示 读 任何时刻 写 任何时刻 该寄存器针对被寻址从机 由I2C总线产生响应地址 但这个地址不是由主机通过总线进行传送的 ADR7 ADR1 从机地址 包括I2C模块使用的特殊从机地址 I2C总线的默认模式是总线上的地址匹配从机地址 Bit0 保留位 为了将来产品的兼容性而设置 读取该位总为0 MC9S12XS单片机原理及嵌入式系统开发 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 MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 2I2C总线分频寄存器 IBFD MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 2I2C总线分频寄存器 IBFD MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 2I2C总线分频寄存器 IBFD I2C总线部分分频对照表12 10所示 如需要查阅其他数值 可以参阅数据手册S12IICV2 pdf MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 3I2C总线控制寄存器 IBCR I2C总线控制寄存器 I2CBusControlRegister IBCR 如图12 20所示 读 任何时刻 写 任何时刻 IBEN I2C模块使能位 该位控制I2C模块的软件复位 0表示I2C模块禁止且软件复位 这时处于上电复位状态 当该位为0时 I2C模块功能禁止且处于软件复位功能 但是其他寄存器仍然可以访问 1表示I2C模块使能 该位必须在IBCR寄存器的其他位起作用前置位 如果I2C模块在一个字节数据传输过程中使能 则从机模式会忽略当前总线上的传输数据 一旦检测到后面的起始信号就开始进行数据传输 而主机模式不检测总线忙状态 因此如果一个起始信号产生 当前总线周期可能会破坏 最终将导致当前总线的主机或者I2C模块丢失仲裁 随后总线操作将返回正常模式 MC9S12XS单片机原理及嵌入式系统开发 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表示发送模式 MC9S12XS单片机原理及嵌入式系统开发 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总线模块时钟停止工作 MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 4I2C总线状态寄存器 IBSR I2C总线状态寄存器 I2CBusStatusRegister IBSR 如图12 21所示 该寄存器除了第1位 IBIF 和第4位 IBAL 外 其余位都是只读的 TCF 数据传输位 当数据的一个字节正在传输时 该位被清除 TCF在字节传输的第9个时钟的下降沿置位 注意该位只在一个字节数据传送到一个I2C模块或者接收到一个I2C模块的数据或数据传输完成时有效 0表示数据传输正在进行 1表示数据传输完成 MC9S12XS单片机原理及嵌入式系统开发 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表示总线忙 MC9S12XS单片机原理及嵌入式系统开发 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表示未接收到应答 MC9S12XS单片机原理及嵌入式系统开发 12 7I2C模块寄存器及设置 12 7 5I2C总线数据输入 输出寄存器 IBDR I2C总线数据输入 输出寄存器 I2CBusDataI ORegister IBDR 如图12 22所示 在主机发送模式 当一个数据被写入该寄存器 数据传输开始 先传送最高位 在主机接收模式 读取该寄存器启动下一个字节数据的接收 在从机模式下 当地址匹配后 和主机模式下的功能是相同的 注意IBCR寄存器中的Tx RX位必须与主机模式和从机模式中需要的数据传输方向一致 例如 如果希期望主机接收 但是I2C总线IBCR寄存器配置为主机发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夫妻共同财产中车辆分割及补偿协议书
- 跨境电商企业股东股权分割与风险控制协议
- 离婚子女抚养权及财产分配调解协议
- 物业接管与查验、住宅小区物业设施设备维护合同
- 离婚协议财产分割及子女抚养赔偿协议范本详解
- 离婚财产分割执行起诉范本及程序指引
- 高职招生培训课件
- pe技术员考试题及答案
- 辅警培训国保知识课件
- 农业银行2025广安市秋招笔试性格测试题专练及答案
- 建筑施工消防安全知识培训
- 抛锚式教学模式课件
- 农产品营销课件
- 2025至2030中国水电工程监理行业发展趋势分析与未来投资战略咨询研究报告
- 超高层工程投标述标答辩指南
- 锚喷工入场安全教育试卷(含答案)
- DeepSeek+AI智能体医疗健康领域应用方案
- 2025至2030年中国玄武岩行业市场行情动态及发展前景展望报告
- 2025至2030中国婚介服务行业产业运行态势及投资规划深度研究报告
- 协会工资薪酬管理制度
- 办公烟酒领用管理制度
评论
0/150
提交评论