




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于 I2C 总线的远程数据采集系统 摘 要 针对远距离多点数据的采集 节省微处理器的输入输出引脚 满足多器件控制的 要求 设计一套基于 I2C 总线的远程数据采集系统 本系统以带有 I2C 接口的 LPC900 系列单片机作为主控 MCU 来实现数据的处理 以 P82B96 驱动器提高 I2C 总线的负 载能力 提高传输距离从而实现数据的远程传输 以带有 I2C 接口的 A D 转换器 PCF8591 来采集数据并进行数据类型的转换 以温度传感器 AD590 来测量环境温度 以 LED 驱动器 ZLG7290 驱动数码管显示数据 通过不断的调试和完善实现多点的温 度测量 在数码管上显示即时温度 本系统采用 LPC922 单片机为主控制器 通过 I2C 总线实现远距离的温度测量 本 系统分为以下几个模块 微处理器核心模块 LED 显示模块 键盘模块 温度测量模 块 数据远距离传输模块 电源模块 关键词 单片机 I2C 总线 远程数据采集 I2C Bus based Remote Data Acquisition System ABSTRACT For long distance multi point data collection to save the input and output pins of the microprocessor to meet the requirementsthe control of multiple devices design a set of I2C bus based remote data acquisition system The system interfaces with LPC900 MCU I2C as a master MCU to achieve data processing to P82B96 I2C bus drive to improve load capacity and improve transmission range in order to achieve the remote transmission of data to I2C interface with A D PCF8591 converter to capture data and perform data type conversions to AD590 temperature sensor to measure ambient temperature to drive ZLG7290 LED digital display driver data Debug and improve through continuous multi point temperature measurement digital display in real time temperature This system uses the LPC922 microcontroller based controller through the I2C bus for remote temperature measurements The system is divided into the following modules microprocessor core module LED display module keyboard module temperature measurement module remote data transmission module power supply module KEY WORDS microcontroller I2C bus remote data acquisition 目 录 摘 要 I ABSTRACT II 1 绪论 1 1 1 数据采集系统及发展历程 1 1 2 I2C 总线及优点 1 2 系统方案 3 2 1 系统方案简介 3 2 2 系统总体方案的确定 3 2 2 1 主控制器方案的选型 3 2 2 2 I2C 扩展芯片的选型 4 2 2 3 温度传感器的选型 4 2 2 4 LCD 液晶驱动器的选型 5 2 2 5 A D 转换器的选型 5 2 3 总结 5 3 P89LPC922 单片机及 I2C 接口 6 3 1 P89LPC922 单片机概述 6 3 1 1 芯片内部框图 6 3 3 2 引脚配置 7 3 4 I O 口 7 3 4 1 I O 端口配置 8 3 4 2 准双向口输出配置 8 3 4 3 开漏输出配置 8 3 4 4 仅为输入配置 8 3 4 5 推挽输出配置 9 3 5 中断 9 3 6 I2C 总线接口 9 3 6 1 概述 9 3 6 2 I2C 特殊功能寄存器描述 10 3 6 3 I2C 操作模式 12 3 7 总结 13 4 硬件电路设计 14 4 1 单片机控制电路 14 4 2 LED 显示模块 15 4 3 远程传输模块 16 4 4 电源模块 18 4 5 温度测量模块 18 4 5 1 A D 转换器 PCF8591 19 4 5 2 温度传感器 AD590 19 4 6 总结 20 5 系统软件设计 21 5 1 MAIN函数设计 21 5 2 I2C 发送数据函数 22 5 3 键盘中断函数 23 5 4 键盘处理函数 23 5 5 LED 显示函数 24 5 6 A D 转换函数 24 5 7 总结 25 6 总结与展望 26 6 1 课题总结 26 6 2 课题展望 26 致 谢 28 参 考 文 献 29 附 录 元器件清单 30 附 录 原理图 31 1 绪论 1 1 数据采集系统及发展历程 数据采集是将被测对象 外部世界 现场 的各种参量 如物理量 化学量 生物量 等 通过各种传感元件作适当转换后 再经信号调理 采样 放大 滤波 量化 编码 然后通过无线或有线的方式进行传输等步骤 最后送到控制器进行数据处理或存储纪 录的过程 在进行数据采集时 由于许多被测对象离主控中心距离较远或现场环境不允许数 据采集系统就近放置 只能用长线通过远距离传送给主控制器 这便产生了远程数据 采集系统 应用远程数据采集系统可对生产现场的各种参数进行采集 监视和记录 是提高产品质量 降低成本 增加生产效率和节省人力的重要手段 另外 远程数据 采集是控制系统实现控制的基本条件 只有准确实时的获取对象的运行数据才能实施 有效的控制 数据采集系统经历了几个发展阶段 早期的数据采集系统基于 ISA PCI 总线 采 集的数据是模拟量 系统庞大 采集后需要将模拟信号经过放大 调理通过长线传送 给计算机系统 在长线传输过程中信号的电磁干扰是不可避免的 信号转换的过程也 存在干扰 基于串口传输数据的数据采集系统传输速度慢 而且多为主从式结构 系 统稳定性低 基于单片机的数据采集系统利用数字传感器直接输出数字信号 经过总 线的传输直接送给计算机系统 操作方便 无需信号转换 1 2 I2C 总线及优点 I2C Inter Integrated Circuit 总线是一种由 PHILIPS 公司开发的两线式串行总线 用于连接微控制器及其外围设备 是微电子通信控制领域广泛采用的一种总线标准 它是同步通信的一种特殊形式 具有接口线少 控制方式简单 器件封装形式小 通 信速率较高等优点 在主从通信中 可以有多个 I2C 总线器件同时连接到 I2C 总线上 所有 I2C 兼容的器件都具有标准的接口 通过地址来识别通信对象 使他们可以经由 I2C 总线互相通信 I2C 总线很大程度上减轻了系统对 I O 口需求的压力 弥补了系统主处理芯片 I O 口的不足 通过扩展芯片总线的传输长度可高达1000米 并且能够以最高以3 4Mbps 的 最大传输速率支持40个组件 I2C 总线是由数据线 SDA 和时钟线 SCL 构成的串行总线 可发送和接受数据 在 CPU 与被控 IC 之间 IC 和 IC 之间进行双向传送 各种被控电路均并联在这条总线上 每个电路都有唯一的地址 在信息传输过程中 I2C 总线上并联的每一个模块电路既是 被控器 或是主控器 又是发生器 或是接收器 这取决与它所要完成的功能 CPU 发出的控制信号分为地址码和数据码两部分 地址码用来选址 及接通需要控制 的电路 数据码是通信的内容 这样各控制电路虽然挂在同一条总线上 却彼此独立 利用 I2C 总线实现远程数据采集不但布线方便 传输速度快 操作方便 节省 I O 资源 多主式的结构更增加了系统的稳定性 2 系统方案 2 1 系统方案简介 该系统设计是利用 LPC900 系列单片机 通过 I2C 总线 实现远程的温度采集 基于 I2C 的远程数据采集系统由主控制模块和数据采集模块两大部分构成 主控制模 块以 LPC900 系列单片机为核心控制器 集成了键盘操作功能 温度传感器 AD590 测 得温度后转换为电信号经过放大和信号调理送入 A D 转换器 PCF8591 实现模数转换 再通过由扩展芯片 P82B96 扩展后的 I2C 总线实现远距离通信 显示模块利用 I2C 总线 可以并联多个 I2C 接口器件的特性 使用 ZLG7290 作为 LED 驱动器驱动数码管显示 系统方案如下 LPC922 复位电路 晶振电路 共阴数码 管 键盘电路 P82B96 P82B96 A D PCF8591 ADS590 SDA SCL SDA SDA SCL SCL SCLSDA LED驱动器 7290 SCLSDA 段输出 图 2 1 系统设计框图 2 2 系统总体方案的确定 2 2 1 主控制器方案的选型 方案一 常用的 51 单片机 89C51 89C51 无硬件 I2C 需用软件模拟 I2C 时序 操作繁琐 调试麻烦 内部资源不充 足 且 5V 工作电压功耗高 速度低 用于该课题无明显优势 方案二 LPC900 系列单片机 LPC900 系列单片机具有体积小 有 I2C 引脚 超低的功耗 完全掉电时电流低至 1 A 工作电压低至 2 4 3 6V 6 倍速于 80C51 工业级芯片 可靠性高 增强型 I O 口 丰富的片内资源和 ICP 在线编程方便快捷等优势 用 LPC93X 系列单片机能满足要求但资源浪费 价格高 故最终确定选用 LPC922 单片机 2 2 2 I2C 扩展芯片的选型 I2C 的传输距离有限 实际应用时 必须扩展 I2C 通信距离 P82B715 和 P82B96 是 Philips 研制的应用于远距离通信的 I2C 扩展器 P82B715 只有 3000pF 的输出容性负 载 且不可电平转换 而 P82B96 的最大输出容性负载高达 4000pF 支持电平转换 还可以作为通用的准双向总线缓冲器 当通信速率为 31KHz 可达到 1000 米 因此在 这个系统里选用 P82B96 2 2 3 温度传感器的选型 方案一 热电偶传感器 热电偶传感器的原理是将温度变化转换为电势的变化 它是利用两种不同材料的 金属连接在一起 构成的具有热点效应原理的一种感温元件 其优点为精确度高 测 温范围广 结构简单 使用方便 型号种类比较多且技术成熟 目前广泛应用于工业 和民用产品中 热电偶传感器的种类很多 在选择时必须考虑其灵敏度 可靠性 稳 定性等条件 方案二 热电阻传感器 热电阻传感器的原理是将温度变化转换为电阻值的变化 热电阻传感器是中低温 区最常用的一种温度传感器 它的主要特点是 测量精度高 性能稳定 其中铂电阻 的测量精度是最高的 被制作成标准的基准仪 从热电阻的测温原理可以知道 被测 温度的变化是直接通过热电阻阻值的变化来变现的 因此 热电阻的引出线的电阻的 变化会给测温带来影响 为了消除引线电阻的影响 一般采用三线制或四线制 方案三 半导体集成模拟温度传感器 半导体 IC 温度传感器是利用半导体 PN 结的电流 电压与温度变换关系来测温的 一种感温元件 这种传感器输出线性好 精度高 而且可以把传感器驱动电路 信号 处理电路等与温度传感器部分集成在同一硅片 体积小 使用方便 应用比较广泛的 有 AD590 等 IC 温度传感器在微型计算机控制体系中 通常用于室温的测量 以便微 型计算机对温度测量值进行补偿 方案四 半导体集成数字温度传感器 随着科学技术的不断进步和发展 新型温度传感器的种类繁多 应用逐渐广泛 并且开始由模拟式向着数字式 单总线式 双总线式 多总线式发展 数字温度传感 器更适合与各种微处理器的 I O 接口相连接 组成自动温度控制系统 这种系统克服 课模拟传感器与微处理器接口时需要信号调理电路和 A D 转换器的弊端 被广泛应用 于工业控制 电子测温等各种温度控制系统中 数字温度传感器中比较有代表性的有 DS18B20 等 本设计为设计方便 性能稳定 准确性高 决定选用半导体集成温度传感器 由于 DS18B20 采用的是单总线技术 不支持 I2C 总线 所以选用 AD590 模拟温度传感器 2 2 4 LCD 液晶驱动器的选型 方案一 LCD 字符型液晶驱动器 PCF2113 是 LCD 字符型液晶驱动器 自身带有 I2C 接口 I2C 速率是 400khz 工 作电压为 2 5V 到 5V 可驱动两行 每行 12 个字符 片内可产生 LCD 偏置电压 功 耗很低且本身自带片内 RAM 但是外围引脚多 操作繁琐 方案二 LED 驱动器 ZLG7290 ZLG7290是一种具有I2C接口的键盘及LED驱动管理器件 提供数据译码和循环 移位 段寻址等控制 它能够直接驱动8位共阴式数码管 或64只独立的LED 并可扩 展驱动电流和驱动电压 本系统利用 I2C 总线接口 直接用数码管显示 所以选用 ZLG7290 可满足要求 2 2 5 A D 转换器的选型 考虑到选用的 A D 转换器应该有 I2C 总线接口 精度达到 8 位就可以满足要求 芯片内部应该有多个通道来配合 I2C 总线进行多点的数据采集 选用 PCF8591 芯片 2 3 总结 本章节主要介绍了系统的整体方案 给出了系统的设计方法和设计思路 同时对 系统中的各个器件进行选型 为系统的硬件设计最好准备 3 P89LPC922 单片机及 I2C 接口 3 1 P89LPC922 单片机概述 P89LPC922 是一款单片封装的微控制器 适合于许多要求高集成度 低成本的场 合 可以满足多方面的性能要求 P89LPC922 采用了高性能的处理器结构 指令执行 时间只需要 2 4 个时钟周期 6 倍于标准 80C51 器件 P89LPC92 集成了许多系统级 的功能 这样可大大地减少元件的数目 电路板面积以及系统的成本 LPC922 的运算速度很快 当操作频率为 12MHz 时 除乘法和除法指令外 80C51CPU 的指令执行时间为 167 333ns 同一时钟频率下 LPC922 的速度为标准 80C51 器件的 6 倍 只需要较低的时钟频率即可达到同样的性能 这样无疑降低了功 耗 EMI LPC922 的操作电压范围为 2 4 3 6V I O 口可承受 5V 可上拉或驱动到 5 5V 的电压 它有 2 个 16 位定时 计数器 每一个定时器均可设置为溢出时触发相应 端口输出或作为 PWM 输出 LPC922 有 400kHz 字节宽度的 I2C 通信端口 可以直接 实现 I2C 总线通信 有 8 个键盘中断输入 另加 2 路外部中断输入 4 个中断优先级 低电平复位 使用片内上电复位时不需要外接元件 复位计数器和复位干扰抑制电路 可防止虚假和不完全的复位 另外还提供软件复位功能 可配置的片内振荡器及其频 率范围和 RC 振荡器选项 通过用户可编程 Flash 配置位选择 选择 RC 振荡器时不 需要外接振荡器件 振荡器选项支持的频率范围为 20KHz 12MHz 可选择 RC 振荡器 选项并且其频率可进行很好的调节 LPC922 有可编程端口输出模式 准双向口 开漏 输出 推挽和仅为输入功能模 所有口线均有 LED 驱动能力 20mA LPC922 最少有 15 个 I O 口 选择片内振荡和片 内复位时可多达 18 个 I O 口 3 1 1 芯片内部框图 LPC922 单片机的功能框图如 3 1 所示 图 3 1 功能框图 3 3 2 引脚配置 P0 口是一个可由用户定义输出类型的 8 位 I O 口 在上电复位时 P0 锁存器配置 为内部上拉禁止的仅为输入模式 P0 口由口配置寄存器设定为输出或输入模式 每一 个管脚均可单独设定 P0 口具有键盘输入中断功能 所有管脚都具有施密特触发输入 引脚有 1 20 19 18 17 16 14 13 P1 是一个可由用户定义输出类型的 8 位 I O 口 在上电复位时 P1 锁存器配置为内部上拉禁止的仅为输入模式 P1 口由口配置寄 存器设定为输出或输入模式 每一位均可单独设定 P1 2 P1 3 作为输出时为开漏 P1 5 为仅为输入模式 所有管脚都具有施密特触发输入 引脚 12 11 10 9 8 4 3 2 其中 4 引脚是 RST 外部复位输入 通过 Flash 配置选择 作为复位管脚时 输入的低电平会使芯片复位 I O 口和外围功能进入默认状态 处理 器从地址 0 开始执行 P3 口是一个可由用户定义输出类型的 2 位 I O 口 在上电复位 时 P3 锁存器配置为内部上拉禁止的仅为输入模式 P3 口由口配置寄存器设定为输出 或输入模式 每一个管脚均可单独设定 所有管脚都具有施密特触发输入 3 4 I O 口 LPC922 有 3 个 I O 口 P0 P1 和 P3 P0 和 P1 为 8 位 I O 口而 P3 为 2 位 I O 口 I O 口的具体数目取决于所选择的振荡和复位方式 具体如表 3 1 表 3 1 可用的 I O 口数目 时钟源复位选项I O 口数目 无外部复位上电时除外18片内振荡器或 看门狗振荡器使用外部复位脚 RST17 无外部复位上电时除外17 外部时钟输入 使用外部复位脚 RST16 无外部复位上电时除外16低 中 高速振荡器 外部晶振或谐振器使用外部复位脚 RST15 3 4 1 I O 端口配置 除了 3 个口 P1 2 P1 3 和 P1 5 以外 LPC922 其他所有的 I O 口均可由软件配 置成 4 种输出类型之一 四种输出类型分别为 准双向口 标准 8051 输出模式 PXM1 Y 0 PXM2 Y 0 推挽 PXM1 Y 0 PXM2 Y 1 开漏输出 PXM1 Y 1 PXM2 Y 1 仅为输入功能 PXM1 Y 1 PXM2 Y 0 每个口配置 2 个控制寄存器控制每个管脚输出类型 P1 5 RST 只能作为输入口 无法进行配置 P1 2 SCL T0 和 P1 3 SDA INT0 只能配置为输入口或开漏口 3 4 2 准双向口输出配置 准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态 这是因 为当口线输出为 1 时驱动能力很弱 允许外部装置将其拉低 当管脚输出为低时 它 的驱动能力很强 可吸收相当大的电流 准双向口除了有三个上拉晶体管适应不同的 需要外 其特性和开漏输出有些相似 LPC922 为 3V 器件 但管脚可承受 5V 电压 在准双向口模式中如果用户在管脚 加上 5V 电压将会有电流从管脚流向 VDD 这将导致额外的功率消耗 因此建议不要在 准双向口模式中向管脚施加 5V 电压 准双向口带有一个施密特触发输入以及一个干扰抑制电路 3 4 3 开漏输出配置 当口线锁存器为 0 时 开漏输出关闭所有的上拉晶体管而仅驱动端口的下拉晶体 管 作为一个逻辑输出时这种配置方式必须有外部上拉 一般通过电阻外接到 VDD 开漏端口带有一个施密特触发输入以及一个干扰抑制电路 3 4 4 仅为输入配置 该配置无输出驱动器 它带有一个施密特触发输入口以及一个干扰抑制电路 3 4 5 推挽输出配置 推挽输出配置的下拉结构和开漏输出以及准双向口的下拉结构相同 但当锁存器 为 1 时提供持续的强上拉 推挽模式一般用于需要更大驱动电流的情况 推挽管脚带有一个施密特触发输入以及一个干扰抑制电路 3 5 中断 LPC922 采用 4 中断优先级结构 这为 P89LPC922 的多中断源的处理提供了极大 的灵活性 LPC922 支持 12 个中断源 外部中断 0 和 1 定时器 0 和 1 串口 Tx 串 口 Rx 组合的串口 Tx Rx 掉电检测 看门狗 实时时钟 I2C 键盘中断和比较器 1 和 2 任何一个中断源均可通过对 IEN0 和 IEN1 中相应的位置位或清零 实现单独使能 或禁止 IEN0 中还包含了一个全局禁止位 EA 它可禁止所有中断 每个中断源都可被单独设置为四个中断优先级之一 分别通过清零或置位 IP0 IP0H IP1 IP1H 中相应位来实现 00 最低优先级 11 最高优先级 一个中断服务程序可响应更高级的中断 但不能响应同优先级或低级中断 最高级中 断服务程序不响应其它任何中断 如果两个不同中断优先级的中断源同时申请中断时 响应较高优先级的中断申请 如果两个同优先级的中断源同时申请中断 那么通过一个内部查询顺序序列确定 首先响应哪一个中断请求 这叫做仲裁队列 3 6 I2C 总线接口 3 6 1 概述 I2C 全称 inter integrated chips 是一种串行通信协议 专利权归属于 Philips 公 司 I2C 有三种速度模式 标准模式 0 100kbps 快速模式 0 400kbps 高速 模式 0 3 4Mbps 有严格的规范 如接口的电气特性 信号时序 信号传输的定 义 总线状态设置 总线管理规则及总线状态处理等 LPC922 器件提供字节方式的 I2C 接口所支持的最大数据传输速率为 400kHz I2C 总线用两条线 SDA 和 SCL 在总线和器件之间传递信息 I2C 总线的传输模式 是主机和从机之间为双向数据传送 这样主机和从机之间可以相互访问 I2C 总线也是 多主机总线 它不存在中央主机 在总线上的器件都可以当做主机来发送数据 多主 机同时传送时进行仲裁来避免总线上数据冲突 而且串行时钟同步使得不同位速率的 器件可以通过一条串行总线进行通信 典型的 I2C 总线配置如图 3 2 所示 VCC Rp Rp LPC922 SDA SCL SCL A D转换 SDASCL LED驱动 SDA SCL I2C总线 图 3 2 I2C 总线配置 3 6 2 I2C 特殊功能寄存器描述 I2DAT 包含要发送的数据或刚接收的数据 当 8 位直接寻址寄存器没有处理移位 数据时 CPU 可对其进行读和写 这意味着用户只能在 SI 置位时对 I2DAT 进行访问 I2DAT 中的数据在 SI 置位时一直保持不变 I2DAT 中的数据总是从右向左移位 寄存 器各位如图 3 3 I2DAT 7I2DAT 1I2DAT 2I2DAT 3I2DAT 4I2DAT 5I2DAT 6I2DAT 0 不可位寻址 复位源 任何复位 复位值 00000000B I2DAT 地址 DAH 7 6 5 4 3 2 1 0 图 3 3 I2C 数据寄存器 CPU 可以对 I2ADR 寄存器进行读或写操作 该寄存器仅在 I2C 处于从模式下才使 用 在主模式中该寄存器的内容无效 I2ADR 的最低位 LSB 为通用调用位 当该位置 位时对通用调用地址 00H 进行识别 寄存器各位功能如图 3 4 I2ADR 1I2ADR 2I2ADR 3I2ADR 4I2ADR 5I2ADR 6GC 不可位寻址 复位源 任何复位 复位值 00000000B I2ADR 地址 DBH 7 6 5 4 3 2 1 0 I2ADR 7 位 符号 功能 I2ADR 7 1 I2ADR 6 0 七位自身从地址 当处于主模式时 改寄存器内容无效 I2ADR 0 GC 通用调用位 置位时 对通用调用地址进行识别 否则忽略 图 3 4 I2C 从地址寄存器 CPU 对 I2CON 寄存器进行读或写操作 见图 3 5 其中两个位受硬件影响 SI 和 STO 位 SI 由硬件置位而 STO 位由硬件清零 当 I2C 处于主模式时 CRSEL 决定 SCL 的频率 在从模式中 该位被忽略并自动 与主 I2C 器件的时钟频率 最大 400KHz 同步 当 CRSEL 1 时 I2C 接口将定时器 1 的溢出速率的 1 2 作为 I2C 的实钟频率 定时器 1 在 8 位自动重装模式 模式 2 中由 用户编程 AASISTOSTAI2ENCRSEL 可位寻址 复位源 任何复位 复位值 x00000 x0B I2CON 地址 D8H 7 6 5 4 3 2 1 0 位 符号 功能 I2CON 7 保留将来之用 用户不要将其置1 I2CON 6 I2EN I2C接口使能 该位为0时 I2C功能被禁止 P1 3 SDA和P1 2 SCL可作为通用 I O 口 该位置位时 使能I2C接口 I2CON 5 STA 起始标志 STA 1 I2C进入主模式 检测I2C总线当总线空闲时产生一个起始条 件 也能产生重复起始条件 STA 0 不会产生起始或重复起始条件 I2CON 4 STO 停止标志 STO 1 在主模式中 向 I2C发送一个停止条件 在从模式中 可以从 错误状态中恢复 停止标志由硬件自动清零 I2CON 3 SI I2C中断标志 当进入25种可能的I2C状态中的任意一个 该位置位 当EA EI2C 以及SI置位时产生中断 该位通过软件清零 I2CON 2 AA 声明应答标志位 I2CON 1 保留将来之用 用户不要将其置1 I2CON 0 CRSEL SCL时钟选择 CRSEL 1 定时器1溢出产生SCL CRSEL 0 使用内部SCL发生 器 图 3 5 I2C 控制寄存器 I2STAT 寄存器是个 8 位只读寄存器 见图 3 6 它包含了 I2C 接口的状态代码 最低 3 位总是为 0 I2C 一共有 26 种可能的状态 当代码为 F8 时表示无可用的相关状 态信息 SI 也不会置位 所以其他 25 种状态码都对应一个已定义的 I2C 状态 进入任 何一个状态时 SI 都会置位 00STA 0STA 1STA 2STA 30 不可位寻址 复位源 任何复位 复位值 11111000B I2STAT 地址 D9H 7 6 5 4 3 2 1 0 STA 4 位 符号 功能 STA 7 3 STA 4 0 I2C的状态代码 STA 2 0 这3位未用并设置为0 图 3 6 I2C 状态寄存器 当设置 CRSEL 0 以选择内部 SCL 发生器作为 I2C 接口的时钟源时 用户必须对 I2SCLH 和 I2SCLL 进行设置以选择合适的数据传输速率 I2SCLH 定义 SCL 高电平的 PCLK 周期数 I2SCLL 定义 SCL 低电平的 PCLK 周期数 频率由下面的公式决定 3 1 SCLL2ISCLH2I 2 Fpclk 位速率 式中 Fpclk表示 PCLK 的频率 用户可以通过设置这两个寄存器得到不同的 SCL 占空比 但寄存器的值必须确保 I2C 数据传输速率范围为 0 400kHz 因此对 I2SCLH 和 I2SCLL 的值有一些限制 建议两个寄存器的取值都应大于 3 个 PCLK 周期 3 6 3 I2C 操作模式 I2C 操作模式有 主发送器模式 主接收器模式 从接收器模式和从发送器模式 在这里介绍主发送器模式 在该模式中 数据从主机发送到从机 在进入主发送器模式之前 I2CON 必须将 I2EN 置位使能 I2C 功能 STA STO 和 SI 必须设置为 0 CRSEL 定义串行位速率 如 果 AA 位为 0 而另一个器件成为总线的控制器时 I2C 将不会对它自身的从地址或通 用调用地址产生应答 换句话说 如果 AA 复位 I2C 不能进入从模式 第一个发送的数据包含接收器件的从地址 7 位 和数据方向位 在此模式下 数 据方向位 R W 为 0 表示执行写操作 因此第一个发送的字节为 SLA W 数据每次 发送 8 位 每发送一个字节 都接收到一个应答位 起始和停止条件用于指示串行传 输的起始和结束 通过置位 STA 进入 I2C 主发送模式 I2C 逻辑在总线空闲后立即发送一个起始条 件 当发送完起始条件后 SI 置位 此时状态寄存器 I2STAT 中的状态代码应当为 08H 该状态码用于指向一个中断服务程序 该中断程序将从地址和数据方向位 SLA W 装入 I2DAT SI 位必须在数据传输能够进行之前清零 当从地址和方向位已经发送且接收到应答位之后 SI 位再次置位 并且对于主模 式 可能的状态代码为 18H 20H 或 38H 图 3 7 为主发送器模式和从接收器模式的发 送格式 图 3 7 主发生器和主接收器模式格式 在图中 各种符号的意义为 S 开始位 START SLA 从机地址 Slave Address 7 位从机地址 W 写标志位 Write 1 位写标志 R 读标志位 Read 1 位读标志 A 应答位 Acknowledge 1 位应答 非应答位 Not Acknowledge 1 位非应答 A D 数据位 DATA 每个数据都必须是 8 位 P 停止位 STOP 阴影 主机产生的信号 无阴影 从机产生的信号 每个状态代码对应的执行动作见表 3 1 表 3 1 主发送器模式 写 I2CON 状态代码 I2STAT I2C 总线 硬件状态 STASTOSIAA 硬件执行 的下一个动作 08H已经发送起始条件x00 x 将发送 SLA W 接收 ACK 位 18H 已经发送 SLA W 已经接收到 ACK 20H 已经发送 SLA W 已经接收到非 ACK 28H 已经发送 I2DAT 中 的数据字节 已接 收 ACK 30H 已经发送 I2DAT 中 的数据字节 已接 收非 ACK 0 1 0 1 0 0 1 1 0 0 0 0 x x x x 将发送数据字节 接收 ACK 位 将发送重复起始条件 将发送停止条件 STO 标志 将复位 将发送停止条件 然后发送 起始条件 STO 标志将复位 38H 在 SCL R W 或数据 字节中丢失仲裁 0 1 0 0 0 0 x x I2C 总线被释放 进入不可寻 址从模式 当总线为空闲时 发送起始条件 3 7 总结 本章节主要介绍了核心 MCU LPC922 单片机的特性以及片内资源 还有对其内部 的I2C总线接口相关的寄存器如何配置来确保I2C总线的通信 4 硬件电路设计 4 1 单片机控制电路 本设计中采用 Philips LPC922 单片机作为主控器 配以外部 RC 复位电路和晶振电 路构成了单片机系统 晶体振荡电路在微控制器系统中非常重要 它决定了整个微控制器系统能否稳定 工作 P89LPC922 提供几个可由用户选择的振荡器选项 这样就满足了从高精度到低 成本的不同需求 这些选项在对 Flash 进行编程时配置 包括片内看门狗振荡器 片内 RC 振荡器 使用外部晶振的振荡器或外部时钟源 晶振可选择低 中或高频晶振 频 率范围为 20KHz 到 12MHz 本系统中选用 6MHz 的晶振 可以保证精度达到系统要求 P1 5 RST 管脚可作为低有效复位输入或数字输入口 当 UCFG1 寄存器中的位 RPE 复位管脚使能 置位时 使能外部复位输入功能 当清零时 复位脚可作为一个输 入管脚 每一个复位源在复位寄存器 RSTSRC 中都有一个对应的标志 用户可读取该寄存 器以判断最近的复位源是哪一个 这些标志位可通过软件写入 0 清零 P0 0 P0 4 键盘中断口连接 5 个按键 用来控制的数据的传输和采集 单片机的外围电路如下所示 R12 330 LED5 S1 R11 330 R13 330 R9 330 R10 330 S5 S4 S3 S2 LED1LED2LED3LED4 P00 P01 P02 P03 P04 V CC3 3 图 4 1 单片机键盘电路 CMP2 P0 0 KBI0 1 P1 7 2 P1 6 3 P1 5 REST 4 V SS 5 X TAL1 P3 1 6 X TAL2 P3 0 CLKOUT 7 P1 4 8 P1 3 9 P1 2 10 P0 6 CM P1 14 RX D P1 1 11 TX D P1 0 12 T1 P0 7 13 V DD 15 CMPref P0 5 KBI5 16 CIN 1A P0 4 KBI4 17 CIN 1B P0 3 K BI3 18 CIN 2A P0 2 KBI2 19 CIN 2B P0 1 K BI1 20 P89LPC922 C1 22p C2 22p R1 10K S1 Y1 6M C3 4 7uF SDA SCL P00P01 P02 P03 P04 V CC3 3 V CC3 3 图 4 2 单片机复位及键盘电路 4 2 LED 显示模块 数字 LED 显示屏由显示数字 0 9 的数码管和驱动数码管的芯片 ZLG7290 两大部 分组成 ZLG7290 外围电路包括晶振电路 复位电路和 I2C 接口电路 数码管是 4 位 联体式数码管 ZLG7290 是带有 I2C 接口键盘管理和显示驱动的芯片 加入键盘管理可以实现仪 器仪表的人机对话 在图 4 3 中 U 是 LED 驱动管理器件 ZLG7290 图中 SegA SegDP 对应连接数码 管的 8 个 段 a dp DIG0 DIG7 分别连接各数码管的 位 每个数码管的公共端 这 里只有 4 位数码管 故只用了 DIG0 DIG3 按照 I2C 总线协议的要求 信号线 SCL 和 SDA 上必须要分别加上拉电阻 R2 R3 其阻值是 10k 接电源 3 3V ZLG7290 需要一外接晶体振荡电路供系统工作 晶振通 常取值 8MH z 调节电容 C1 和 C2 通常取值在 30pF 左右 复位信号是低电平有效 一 般只需外接简单的 RC 复位电路 也可以通过直接拉低 RST 引脚的方法进行复位 因 为芯片可直接驱动 LED 数码管显示 电流较大 且为动态扫描方式 为尽量消除电源 噪声干扰 提高电路抗干扰能力 应用时可在电源 VCC 的正负极间并入一个 100uF 的 电容 VCC 选用 3 3V 数码管必须是共阴式的 不能直接使用共阳式的 这里采用 4 位联体式数码管 数 码管在工作时要消耗较大的电流 RP2 是限流电阻 阻值是 220 欧姆 如果要增大数码 管的亮度 可以适当减小电阻值 SegA 23 SegB 24 SegC 1 SegD 2 SegE 7 SegF 8 SegG 9 SegDP 10 SCL 19 SDA 20 X2 18 X1 17 RST 15 GND 11 V cc 16 DIG7 13 DIG6 12 DIG5 21 DIG4 22 DIG3 3 DIG2 4 DIG1 5 DIG0 6 U Z LG7290 C1 30p C2 30p R1 10K Y1 8M C4 4 7uF V CC3 3 a bf c g d e dp a bf c g d e dp a bf c g d e dp a bf c g d e dp com1 6 com2 8 com3 9 com4 12 a 11 b 7 c 4 d 2 e 1 f 10 g 5 dp 3 DPY1 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 RP2 220 SegA SegA SegB SegB SegC SegC SegD SegD SegE SegE SegF SegF SegG SegG SegDP SegDP DIG0 DIG1 DIG2 DIG3 DIG3 DIG2 DIG1 DIG0 V CC3 3 C30 1u R2 10K R3 10K V CC3 3 SCL SDA 图 4 3 LED 显示电路电路 4 3 远程传输模块 在使用I2C器件的过程中 I2C总线在应用中常受到限制 例如 信号传输距离有 限 常用于一个PCB板 总线上挂接的节点器件有限 受容性负载最大值400pF的限制 挂接多个器件时速度只能取最低值 高速I2C器件速度发挥不出来等 I2C总线扩展器 P82B96的开发扩展了总线容量 从400pF扩展到4000pF 增加了总线可支持器件的数 目 而且扩展了通讯距离 利用线缆在I2C总线的速率为31KHz时传输距离可长达1000 米 P82B96是一款双极性I2C扩展芯片 在保持I2C系统的工作模式和特性不变的情况 下 通过缓冲SDA和SCL总线上的数据来扩展通信距离 同时I2C扩展器P82B96提供了 一种在标准I2C总线和其他总线配置间的无锁存 双向性的逻辑接口 它可以把I2C总 线连接到2 15V的逻辑器件上 且不受I2C总线协议的限制和时钟速率的限制 能增加 I2C总线的传输距离和节点上的负载数目 I2C扩展器P82B96彻底地解决了I2C总线在远 距离传输的不足 管脚描述如表 4 1 表 4 1 P82B96 管脚描述 符号管脚描述 Sx1I2C 总线 SDA 或 SCL Rx2接收信号 Tx3发送信号 GND4地 Ty5发送信号 Ry6接收信号 Sy7I2C 总线 SDA 或 SCL VCC8电源 作用为增加 I2C 通信距离时 两个 P82B96 必须匹配使用 电路设计时必须加上拉 电阻 P82B96 的具体连接方法如图 4 4 所示 3 3V 5V 3 3V 5V 5V SDA SCL 1 Sx 7 Sy Rx 2 Tx 3 Ty 5 Ry 6 8 Vcc GND 4 P82B96 5V 5V 3 3V 5V 5V SDA SCL Sx 1 Sy 7 2 Rx 3 Tx 5 Ty 6 Ry 8 Vcc GND 4 P82B96 长线缆 主机端远程控制端 图 4 4 P82B96 实现远距离 I2C 通信 在系统中的应用如下图所示 R7 10K R6 10K R8 330 R5 330 SCL SDA SDAXSCLY V CC5V CC5V CC5 Sx 1 Rx 2 T x 3 GND 4 T y 5 Ry 6 Sy 7 V CC 8 U2 P82B96T P V CC3 3V CC3 3 图 4 5 I2C 通信扩展电路 4 4 电源模块 本系统电源用到 3 3V 5V 两种电源 LPC922 单片机供电需要 3 3V ZLG9270 的 工作电压也用到 3 3V 为了降低延时 为 P82B96 提供 3 3V 5V 两种电源 PCF8591 和 AD590 都采用 5V 供电即可 利用电池供电引出 5V 电压 经 SPX3819 后输出 3 3V 提供单片机的工作电压 电路简 单 只需在输入输出端分别接上 10 F 滤波电容 电路设计如图 4 6 Error Reference source not found V in 1 V out 5 GND 2 EN 3 Byp 4 U3 SPX 3819 C11 10uF 16V C10 10uF 16V V CC3 3 J1 V CC5 图 4 6 电源转换电路 SPX3819 是一个具有低压差电压和低噪声输出电压调节器 它有一个小于 1 以 下的初始误差和逻辑兼容的 ON OFF 切换输入 禁用时 电力消耗下降到几乎为零 其他主要功能包括电池反向保护 限流和热关机 它具有非常低的输出温度系数 输 出设备需要一个很稳定的电容 4 5 温度测量模块 本系统设计目的在于采集现实环境的温度信息 所以需要利用单片机采集温度传 感器的数据 温度传感器使用美国模拟器件公司生产的 AD590 采集的信号需要经过放 大和信号调理 再传送到 A D 转换器 PCF8951 即把模拟信号转换成数字信号 转换 后通过 I2C 总线传输给处理中心 4 5 1 A D 转换器 PCF8591 PCF8591 是一款单电源 低功耗 8 位 COMS 型 A D D A 转换芯片 它具有 4 路 模拟量输入通道 一路模拟量输出通道和 1 个 I2C 总线接口 该器件 I2C 从地址的低三 位由芯片的 A0 A1 和 A2 三个地址引脚决定 所以在不增加任何硬件的情况下同一条 I2C 总线最多可以连接 8 个同类型的器件 该器件具有多路模拟量输入 片上跟踪保持 8 位 A D 转换和 8 位 D A 转换等功能 A D 与 D A 的最大转换速率由 I2C 总线的最大 传输速率决定 PCF8591 采用的是单电源供电 正常工作电源电压范围为 2 5V 6V 重要的是通 过 I2C 总线完成数据的输入 输出 采样频率是由 I2C 总线传输速率决定的 PCF8591 进行数据转换时需要外接一参考电压 PCF8591 采用典型的 I2C 总线接口器件寻址方法 即总线地址由器件地址 引脚 地址和方向位组成 飞利蒲公司规定 A D 器件地址为 1001 引脚地址为 AAA012 其 值由用户选择 因此 I2C 系统中最多可接2 3 8 个具有 I2C 总线接口的 A D 器件 地址 的最后一位为方向位 WR 当主控器对 A D 器件进行读操作时为 1 进行写操作时为 0 总线操作时 由器件地址 引脚地址和方向位组成的从地址为主控器发送的第一字 节 在进行数据操作时 首先是主控器发出起始信号 然后发出读寻址字节 被控器 做出应答后 主控器从被控器读出第一个数据字节 主控器发出应答 主控器从被控 器读出第二个数据字节 主控器发出应答 一直到主控器从被控器中读出第 n 个数据 字节 主控器发出非应答信号 最后主控器发出停止信号 4 5 2 温度传感器 AD590 集成温度传感器实质上是一种半导体集成电路 它是利用晶体管的b e结压降的不 饱和值Vbe与热力学温度T和通过发射极电流I的下述关系实现对温度的检测 ln I be q KIT V 4 1 式中 K 波尔兹常数 q 电子电荷绝对值 AD590 是美国模拟器件公司生产的单片集成两端感温电流源 流过器件的电流 mA 等于器件所处环境的热力学温度 开尔文 度数 即 K mA r T I 1 4 2 式中 Ir 流过器件 AD590 的电流 单位为mA T 热力学温度 单位为K AD590的测温范围为 55 150 电源电压范围为4V 30V 其输出电流是以绝 对温度零度 273 为基准 每增加1 它会增加1 A输出电流 AD590可以承受44V 正向电压和20V反向电压 因而器件反接也不会被损坏 AD590精度很高 在 55 150 范围内 非线性误差为 0 3 温度测量电路如下 AIN0 1 AIN1 2 AIN2 3 AIN3 4 A0 5 A1 6 A2 7 V SS 8 SDA 9 SCL 10 OSC 11 EX T 12 AGND 13 V REF 14 AOUT 15 V DD 16 U4 PCF8591 SDA SCL R3D1 Z ENER3 V DD 1 V SS 3 V out 2 U1 AD590 R1 1 2K R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025工业用地购买协议合同
- 高铁招聘考试题及答案
- 高级钳工考试题模板及答案
- 法医病理考试题及答案
- 中国建筑干粉胶项目商业计划书
- 2025年吉安皮革化学品项目可行性研究报告
- 电梯火灾考试题及答案大全
- 地理的考试题目及答案
- 2025年中国氯代吡啶除草剂项目商业计划书
- 蛋糕考试题库及答案
- 针刺伤预防与处理-2024中华护理学会团体标准
- 羽绒原料购销合同
- 2-2新能源汽车充电系统检修
- 花生病虫害防治宝典
- 电能质量评估报告
- 辽宁抚顺新抚区2023-2024学年九年级上学期期中质量检测数学试题(一)(解析版)
- 2024年北京市成考(专升本)大学政治考试真题含解析
- 内分泌科的出科小结护士
- 【历年真题】2022年10月00688设计概论自考试卷
- 起重机 钢丝绳 保养、维护、检验和报废
- 建筑基底可控减压排水抗浮施工工法
评论
0/150
提交评论