毕业设计(论文)基于I2C总线的远程数据采集系统_第1页
毕业设计(论文)基于I2C总线的远程数据采集系统_第2页
毕业设计(论文)基于I2C总线的远程数据采集系统_第3页
毕业设计(论文)基于I2C总线的远程数据采集系统_第4页
毕业设计(论文)基于I2C总线的远程数据采集系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 i2c 总线的远程数据采集系统摘 要 针对远距离多点数据的采集,节省微处理器的输入输出引脚,满足多器件控制的要求,设计一套基于 i2c 总线的远程数据采集系统。本系统以带有 i2c 接口的 lpc900系列单片机作为主控 mcu,来实现数据的处理;以 p82b96 驱动器提高 i2c 总线的负载能力,提高传输距离从而实现数据的远程传输;以带有 i2c 接口的 a/d 转换器pcf8591 来采集数据并进行数据类型的转换;以温度传感器 ad590 来测量环境温度;以 led 驱动器 zlg7290 驱动数码管显示数据。通过不断的调试和完善实现多点的温度测量,在数码管上显示即时温度。 本系统

2、采用 lpc922 单片机为主控制器,通过 i2c 总线实现远距离的温度测量。本系统分为以下几个模块:微处理器核心模块、led 显示模块、键盘模块、温度测量模块、数据远距离传输模块、电源模块。关键词:单片机,i2c 总线,远程数据采集 ii2c bus-based remote data acquisition systemabstract for long-distance multi-point data collection, to save the input and output pins of the microprocessor, to meet the requirements

3、the 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 transmi

4、ssion 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, digit

5、al 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 modul

6、e, remote data transmission module, power supply module.key words: microcontroller, i2c bus, remote data acquisition目 录摘 要 .iabstract.ii1 绪论.11.1 数据采集系统及发展历程.11.2 i2c 总线及优点 .12 系统方案.32.1 系统方案简介.32.2 系统总体方案的确定.32.2.1 主控制器方案的选型.32.2.2 i2c 扩展芯片的选型.42.2.3 温度传感器的选型.42.2.4 lcd 液晶驱动器的选型.52.2.5 a/d 转换器的选型.5

7、2.3 总结.53 p89lpc922 单片机及 i2c 接口.63.1 p89lpc922 单片机概述.63.1.1 芯片内部框图.63.3.2 引脚配置.73.4 i/o 口.73.4.1 i/o 端口配置 .83.4.2 准双向口输出配置.83.4.3 开漏输出配置.83.4.4 仅为输入配置.83.4.5 推挽输出配置.93.5 中断.93.6 i2c 总线接口 .93.6.1 概述.93.6.2 i2c 特殊功能寄存器描述.103.6.3 i2c 操作模式.123.7 总结.134 硬件电路设计.144.1 单片机控制电路.14i4.2 led 显示模块.154.3 远程传输模块.1

8、64.4 电源模块.184.5 温度测量模块.184.5.1 a/d 转换器 pcf8591.194.5.2 温度传感器 ad590.194.6 总结.205 系统软件设计.215.1 main函数设计 .215.2 i2c 发送数据函数 .225.3 键盘中断函数.235.4 键盘处理函数.235.5 led 显示函数.245.6 a/d 转换函数.245.7 总结.256 总结与展望.266.1 课题总结.266.2 课题展望.26致 谢.28参 考 文 献.29附 录 元器件清单.30附 录 原理图.31陕西科技大学毕业论文(设计说明书)01 绪论1.1 数据采集系统及发展历程 数据采集

9、是将被测对象(外部世界、现场)的各种参量(如物理量、化学量、生物量等)通过各种传感元件作适当转换后,再经信号调理、采样、放大、滤波、量化、编码,然后通过无线或有线的方式进行传输等步骤,最后送到控制器进行数据处理或存储纪录的过程。 在进行数据采集时,由于许多被测对象离主控中心距离较远或现场环境不允许数据采集系统就近放置,只能用长线通过远距离传送给主控制器,这便产生了远程数据采集系统。应用远程数据采集系统可对生产现场的各种参数进行采集、监视和记录,是提高产品质量、降低成本、增加生产效率和节省人力的重要手段;另外,远程数据采集是控制系统实现控制的基本条件,只有准确实时的获取对象的运行数据才能实施有效

10、的控制。数据采集系统经历了几个发展阶段。早期的数据采集系统基于 isa、pci 总线,采集的数据是模拟量,系统庞大,采集后需要将模拟信号经过放大、调理通过长线传送给计算机系统;在长线传输过程中信号的电磁干扰是不可避免的,信号转换的过程也存在干扰;基于串口传输数据的数据采集系统传输速度慢,而且多为主从式结构,系统稳定性低。基于单片机的数据采集系统利用数字传感器直接输出数字信号,经过总线的传输直接送给计算机系统,操作方便,无需信号转换。1.2 i2c 总线及优点 i2c(interintegrated circuit)总线是一种由 philips 公司开发的两线式串行总线,用于连接微控制器及其外围

11、设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个 i2c 总线器件同时连接到 i2c 总线上,所有 i2c 兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可以经由i2c 总线互相通信。 i2c 总线很大程度上减轻了系统对 i/o 口需求的压力,弥补了系统主处理芯片 i/o口的不足,通过扩展芯片总线的传输长度可高达1000米,并且能够以最高以3.4mbps 的最大传输速率支持40个组件。i2c 总线是由数据线 sda 和时钟线 scl 构成的串行总线,可发送和接受数据

12、。在cpu 与被控 ic 之间,ic 和 ic 之间进行双向传送,各种被控电路均并联在这条总线上,每个电路都有唯一的地址。在信息传输过程中,i2c 总线上并联的每一个模块电路既是被控器(或是主控器) ,又是发生器(或是接收器) ,这取决与它所要完成的功能。基于 i2c 总线的远程数据采集系统1cpu 发出的控制信号分为地址码和数据码两部分:地址码用来选址,及接通需要控制的电路;数据码是通信的内容,这样各控制电路虽然挂在同一条总线上,却彼此独立。利用 i2c 总线实现远程数据采集不但布线方便,传输速度快,操作方便,节省 i/o资源,多主式的结构更增加了系统的稳定性。 陕西科技大学毕业论文(设计说

13、明书)22 系统方案2.1 系统方案简介 该系统设计是利用 lpc900 系列单片机,通过 i2c 总线,实现远程的温度采集。基于 i2c 的远程数据采集系统由主控制模块和数据采集模块两大部分构成。主控制模块以 lpc900 系列单片机为核心控制器,集成了键盘操作功能。温度传感器 ad590 测得温度后转换为电信号经过放大和信号调理送入 a/d 转换器 pcf8591 实现模数转换,再通过由扩展芯片 p82b96 扩展后的 i2c 总线实现远距离通信。显示模块利用 i2c 总线可以并联多个 i2c 接口器件的特性,使用 zlg7290 作为 led 驱动器驱动数码管显示。系统方案如下: lpc

14、922复位电路晶振电路共阴数码管键盘电路p82b96p82b96a/dpcf8591ads590sdasclsdasdasclsclsclsdaled驱动器7290sclsda段输出 图 2-1 系统设计框图2.2 系统总体方案的确定2.2.1 主控制器方案的选型 方案一:常用的 51 单片机 89c51 89c51 无硬件 i2c,需用软件模拟 i2c 时序,操作繁琐,调试麻烦,内部资源不充足,且 5v 工作电压功耗高、速度低,用于该课题无明显优势。 方案二:lpc900 系列单片机 lpc900 系列单片机具有体积小、有 i2c 引脚、超低的功耗(完全掉电时电流低至1a,工作电压低至 2.

15、43.6v) 、6 倍速于 80c51、工业级芯片、可靠性高、增强型i/o 口、丰富的片内资源和 icp 在线编程方便快捷等优势。 用 lpc93x 系列单片机能满足要求但资源浪费,价格高,故最终确定选用 lpc922单片机。基于 i2c 总线的远程数据采集系统32.2.2 i2c 扩展芯片的选型 i2c 的传输距离有限。实际应用时,必须扩展 i2c 通信距离。p82b715 和 p82b96是 philips 研制的应用于远距离通信的 i2c 扩展器。p82b715 只有 3000pf 的输出容性负载,且不可电平转换,而 p82b96 的最大输出容性负载高达 4000pf,支持电平转换,还可

16、以作为通用的准双向总线缓冲器。当通信速率为 31khz 可达到 1000 米。因此在这个系统里选用 p82b96。2.2.3 温度传感器的选型 方案一:热电偶传感器 热电偶传感器的原理是将温度变化转换为电势的变化。它是利用两种不同材料的金属连接在一起,构成的具有热点效应原理的一种感温元件。其优点为精确度高、测温范围广、结构简单、使用方便、型号种类比较多且技术成熟。目前广泛应用于工业和民用产品中。热电偶传感器的种类很多,在选择时必须考虑其灵敏度、可靠性、稳定性等条件。 方案二:热电阻传感器 热电阻传感器的原理是将温度变化转换为电阻值的变化。热电阻传感器是中低温区最常用的一种温度传感器。它的主要特

17、点是:测量精度高,性能稳定、其中铂电阻的测量精度是最高的,被制作成标准的基准仪。从热电阻的测温原理可以知道,被测温度的变化是直接通过热电阻阻值的变化来变现的。因此,热电阻的引出线的电阻的变化会给测温带来影响。为了消除引线电阻的影响,一般采用三线制或四线制。 方案三:半导体集成模拟温度传感器 半导体 ic 温度传感器是利用半导体 pn 结的电流、电压与温度变换关系来测温的一种感温元件。这种传感器输出线性好、精度高,而且可以把传感器驱动电路、信号处理电路等与温度传感器部分集成在同一硅片,体积小,使用方便,应用比较广泛的有 ad590 等。ic 温度传感器在微型计算机控制体系中,通常用于室温的测量,

18、以便微型计算机对温度测量值进行补偿。 方案四:半导体集成数字温度传感器 随着科学技术的不断进步和发展,新型温度传感器的种类繁多,应用逐渐广泛,并且开始由模拟式向着数字式、单总线式、双总线式、多总线式发展。数字温度传感器更适合与各种微处理器的 i/o 接口相连接,组成自动温度控制系统,这种系统克服课模拟传感器与微处理器接口时需要信号调理电路和 a/d 转换器的弊端,被广泛应用于工业控制、电子测温等各种温度控制系统中,数字温度传感器中比较有代表性的有ds18b20 等。陕西科技大学毕业论文(设计说明书)4 本设计为设计方便,性能稳定,准确性高,决定选用半导体集成温度传感器,由于ds18b20 采用

19、的是单总线技术,不支持 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 ),

20、 并可扩展驱动电流和驱动电压。 本系统利用 i2c 总线接口,直接用数码管显示,所以选用 zlg7290 可满足要求。2.2.5 a/d 转换器的选型考虑到选用的 a/d 转换器应该有 i2c 总线接口,精度达到 8 位就可以满足要求,芯片内部应该有多个通道来配合 i2c 总线进行多点的数据采集,选用 pcf8591 芯片。2.3 总结 本章节主要介绍了系统的整体方案,给出了系统的设计方法和设计思路,同时对系统中的各个器件进行选型,为系统的硬件设计最好准备。基于 i2c 总线的远程数据采集系统53 p89lpc922 单片机及 i2c 接口3.1 p89lpc922 单片机概述p89lpc92

21、2 是一款单片封装的微控制器,适合于许多要求高集成度、低成本的场合,可以满足多方面的性能要求。p89lpc922 采用了高性能的处理器结构,指令执行时间只需要 24 个时钟周期,6 倍于标准 80c51 器件。p89lpc92 集成了许多系统级的功能,这样可大大地减少元件的数目、电路板面积以及系统的成本。lpc922 的运算速度很快,当操作频率为 12mhz 时,除乘法和除法指令外80c51cpu 的指令执行时间为 167333ns。同一时钟频率下,lpc922 的速度为标准80c51 器件的 6 倍。只需要较低的时钟频率即可达到同样的性能,这样无疑降低了功耗 emi;lpc922 的操作电压

22、范围为 2.43.6v。i/o 口可承受 5v(可上拉或驱动到5.5v)的电压;它有 2 个 16 位定时/计数器,每一个定时器均可设置为溢出时触发相应端口输出或作为 pwm 输出;lpc922 有 400khz 字节宽度的 i2c 通信端口;可以直接实现 i2c 总线通信;有 8 个键盘中断输入,另加 2 路外部中断输入;4 个中断优先级;低电平复位,使用片内上电复位时不需要外接元件。复位计数器和复位干扰抑制电路可防止虚假和不完全的复位。另外还提供软件复位功能;可配置的片内振荡器及其频率范围和 rc 振荡器选项(通过用户可编程 flash 配置位选择),选择 rc 振荡器时不需要外接振荡器件

23、。振荡器选项支持的频率范围为 20khz12mhz 可选择 rc 振荡器选项并且其频率可进行很好的调节;lpc922 有可编程端口输出模式,准双向口,开漏输出,推挽和仅为输入功能模;所有口线均有 led 驱动能力 20ma;lpc922 最少有 15 个 i/o 口,选择片内振荡和片内复位时可多达 18 个 i/o 口。3.1.1 芯片内部框图lpc922 单片机的功能框图如 3-1 所示。陕西科技大学毕业论文(设计说明书)6图 3-1 功能框图3.3.2 引脚配置 p0 口是一个可由用户定义输出类型的 8 位 i/o 口。在上电复位时,p0 锁存器配置为内部上拉禁止的仅为输入模式。p0 口由

24、口配置寄存器设定为输出或输入模式,每一个管脚均可单独设定。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

25、/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。基于 i2c 总线的远程数据采集系统7表 3-1 可用的 i/o 口数目时钟源复位选项i/o 口数目无外

26、部复位上电时除外18片内振荡器或看门狗振荡器使用外部复位脚 rst17无外部复位上电时除外17外部时钟输入使用外部复位脚 rst16无外部复位上电时除外16低/中/高速振荡器外部晶振或谐振器使用外部复位脚 rst153.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,pxm

27、2.y=0)。每个口配置 2 个控制寄存器控制每个管脚输出类型。p1.5(rst)只能作为输入口,无法进行配置。p1.2(scl/t0)和 p1.3(sda/int0)只能配置为输入口或开漏口。3.4.2 准双向口输出配置准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为 1 时驱动能力很弱,允许外部装置将其拉低。当管脚输出为低时,它的驱动能力很强,可吸收相当大的电流。准双向口除了有三个上拉晶体管适应不同的需要外,其特性和开漏输出有些相似。lpc922 为 3v 器件,但管脚可承受 5v 电压。在准双向口模式中如果用户在管脚加上 5v 电压将会有电流从管脚流向

28、 vdd。这将导致额外的功率消耗,因此建议不要在准双向口模式中向管脚施加 5v 电压。准双向口带有一个施密特触发输入以及一个干扰抑制电路。3.4.3 开漏输出配置当口线锁存器为0时,开漏输出关闭所有的上拉晶体管而仅驱动端口的下拉晶体管。作为一个逻辑输出时这种配置方式必须有外部上拉,一般通过电阻外接到 vdd。开漏端口带有一个施密特触发输入以及一个干扰抑制电路。3.4.4 仅为输入配置该配置无输出驱动器,它带有一个施密特触发输入口以及一个干扰抑制电路。陕西科技大学毕业论文(设计说明书)83.4.5 推挽输出配置推挽输出配置的下拉结构和开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的

29、强上拉。推挽模式一般用于需要更大驱动电流的情况。推挽管脚带有一个施密特触发输入以及一个干扰抑制电路。3.5 中断lpc922 采用 4 中断优先级结构。这为 p89lpc922 的多中断源的处理提供了极大的灵活性。lpc922 支持 12 个中断源:外部中断 0 和 1、定时器 0 和 1、串口 tx、串口 rx、组合的串口 tx/rx、掉电检测、看门狗/实时时钟、i2c、键盘中断和比较器 1和 2。任何一个中断源均可通过对 ien0 和 ien1 中相应的位置位或清零,实现单独使能或禁止。ien0 中还包含了一个全局禁止位 ea,它可禁止所有中断。每个中断源都可被单独设置为四个中断优先级之一

30、,分别通过清零或置位ip0、ip0h、ip1、ip1h 中相应位来实现(00最低优先级,11最高优先级)。一个中断服务程序可响应更高级的中断,但不能响应同优先级或低级中断。最高级中断服务程序不响应其它任何中断。如果两个不同中断优先级的中断源同时申请中断时,响应较高优先级的中断申请。如果两个同优先级的中断源同时申请中断,那么通过一个内部查询顺序序列确定首先响应哪一个中断请求,这叫做仲裁队列。3.6 i2c 总线接口3.6.1 概述i2c(全称:inter integrated chips)是一种串行通信协议,专利权归属于 philips 公司。i2c 有三种速度模式:标准模式(0100kbps)

31、、快速模式(0400kbps)、高速模式(03.4mbps)。有严格的规范,如接口的电气特性、信号时序、信号传输的定义、总线状态设置、总线管理规则及总线状态处理等。lpc922 器件提供字节方式的i2c 接口所支持的最大数据传输速率为 400khz。i2c 总线用两条线 sda 和 scl 在总线和器件之间传递信息。i2c 总线的传输模式是主机和从机之间为双向数据传送,这样主机和从机之间可以相互访问;i2c 总线也是多主机总线,它不存在中央主机;在总线上的器件都可以当做主机来发送数据;多主机同时传送时进行仲裁来避免总线上数据冲突;而且串行时钟同步使得不同位速率的器件可以通过一条串行总线进行通信

32、;典型的 i2c 总线配置如图 3-2 所示。基于 i2c 总线的远程数据采集系统9vccrprplpc922sdasclscla/d转换sdasclled驱动sdascli2c总线 图 3-2 i2c 总线配置3.6.2 i2c 特殊功能寄存器描述i2dat 包含要发送的数据或刚接收的数据。当 8 位直接寻址寄存器没有处理移位数据时,cpu 可对其进行读和写。这意味着用户只能在 si 置位时对 i2dat 进行访问。i2dat 中的数据在 si 置位时一直保持不变。i2dat 中的数据总是从右向左移位。寄存器各位如图 3-3。i2dat.7i2dat.1i2dat.2i2dat.3i2dat

33、.4i2dat.5i2dat.6i2dat.0不可位寻址复位源:任何复位复位值:00000000bi2dat 地址: 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不可位寻址复位源:任何复位复位值:00000000bi2adr 地址: dbh 7 6

34、 5 4 3 2 1 0i2adr.7位 符号 功能i2adr.71 i2adr.60 七位自身从地址。当处于主模式时,改寄存器内容无效。i2adr.0 gc 通用调用位。置位时,对通用调用地址进行识别,否则忽略。图 3-4 i2c 从地址寄存器cpu 对 i2con 寄存器进行读或写操作,见图 3-5。其中两个位受硬件影响:si 和sto 位。si 由硬件置位而 sto 位由硬件清零。陕西科技大学毕业论文(设计说明书)10当 i2c 处于主模式时,crsel 决定 scl 的频率,在从模式中,该位被忽略并自动与主 i2c 器件的时钟频率(最大 400khz)同步。当 crsel=1 时,i2

35、c 接口将定时器 1的溢出速率的 1/2 作为 i2c 的实钟频率。定时器 1 在 8 位自动重装模式(模式 2)中由用户编程。-aasistostai2encrsel可位寻址复位源:任何复位复位值:x00000 x0bi2con 地址: 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总线当总线空闲时产生一

36、个起始条 件。也能产生重复起始条件。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

37、 i2c 控制寄存器i2stat 寄存器是个 8 位只读寄存器。见图 3-6。它包含了 i2c 接口的状态代码。最低 3 位总是为 0。i2c 一共有 26 种可能的状态。当代码为 f8 时表示无可用的相关状态信息,si 也不会置位。所以其他 25 种状态码都对应一个已定义的 i2c 状态。进入任何一个状态时,si 都会置位。00sta.0sta.1sta.2sta.30不可位寻址复位源:任何复位复位值:11111000bi2stat 地址: d9h 7 6 5 4 3 2 1 0sta.4位 符号 功能sta.73 sta.40 i2c的状态代码。sta.20 - 这3位未用并设置为0。 图

38、 3-6 i2c 状态寄存器当设置 crsel=0 以选择内部 scl 发生器作为 i2c 接口的时钟源时,用户必须对i2sclh 和 i2scll 进行设置以选择合适的数据传输速率。i2sclh 定义 scl 高电平的pclk 周期数,i2scll 定义 scl 低电平的 pclk 周期数。频率由下面的公式决定: (3-1))scll2isclh2i (2fpclk位速率基于 i2c 总线的远程数据采集系统11式中:fpclk表示 pclk 的频率。用户可以通过设置这两个寄存器得到不同的 scl占空比。但寄存器的值必须确保 i2c 数据传输速率范围为 0400khz。因此对 i2sclh和

39、i2scll 的值有一些限制,建议两个寄存器的取值都应大于 3 个 pclk 周期。3.6.3 i2c 操作模式i2c 操作模式有:主发送器模式、主接收器模式、从接收器模式和从发送器模式。在这里介绍主发送器模式。在该模式中,数据从主机发送到从机。在进入主发送器模式之前,i2con 必须将i2en 置位使能 i2c 功能,sta、sto 和 si 必须设置为 0,crsel 定义串行位速率。如果 aa 位为 0,而另一个器件成为总线的控制器时,i2c 将不会对它自身的从地址或通用调用地址产生应答。换句话说,如果 aa 复位,i2c 不能进入从模式。第一个发送的数据包含接收器件的从地址(7 位)和

40、数据方向位。在此模式下,数据方向位(r/w)为 0 表示执行写操作。因此第一个发送的字节为 sla+w。数据每次发送 8 位。每发送一个字节,都接收到一个应答位。起始和停止条件用于指示串行传输的起始和结束。通过置位 sta 进入 i2c 主发送模式。i2c 逻辑在总线空闲后立即发送一个起始条件。当发送完起始条件后,si 置位。此时状态寄存器(i2stat)中的状态代码应当为08h。该状态码用于指向一个中断服务程序。该中断程序将从地址和数据方向位(sla+w)装入 i2dat。si 位必须在数据传输能够进行之前清零。当从地址和方向位已经发送且接收到应答位之后,si 位再次置位,并且对于主模式,可

41、能的状态代码为 18h、20h 或 38h。图 3-7 为主发送器模式和从接收器模式的发送格式。图 3-7 主发生器和主接收器模式格式在图中,各种符号的意义为:s:开始位(start);sla:从机地址(slave address),7 位从机地址;w:写标志位(write),1 位写标志;r:读标志位(read),1 位读标志;陕西科技大学毕业论文(设计说明书)12a:应答位(acknowledge),1 位应答;:非应答位(not acknowledge),1 位非应答;ad:数据位(data),每个数据都必须是 8 位;p:停止位(stop);阴影:主机产生的信号;无阴影:从机产生的信号

42、。每个状态代码对应的执行动作见表 3-1。表 3-1 主发送器模式写 i2con状态代码i2stati2c 总线硬件状态stastosiaa硬件执行的下一个动作08h已经发送起始条件x00 x将发送 sla+w,接收 ack位18h已经发送 sla+w;已经接收到 ack20h已经发送 sla+w;已经接收到非 ack28h已经发送 i2dat 中的数据字节;已接收 ack30h已经发送 i2dat 中的数据字节;已接收非 ack010100110000 xxxx将发送数据字节,接收 ack位将发送重复起始条件将发送停止条件;sto 标志将复位将发送停止条件,然后发送起始条件;sto 标志将复

43、位38h在 scl+r/w 或数据字节中丢失仲裁010000 xxi2c 总线被释放;进入不可寻址从模式,当总线为空闲时发送起始条件3.7 总结 本章节主要介绍了核心 mcu lpc922 单片机的特性以及片内资源,还有对其内部的i2c总线接口相关的寄存器如何配置来确保i2c总线的通信。基于 i2c 总线的远程数据采集系统134 硬件电路设计4.1 单片机控制电路本设计中采用 philips lpc922 单片机作为主控器,配以外部 rc 复位电路和晶振电路构成了单片机系统。晶体振荡电路在微控制器系统中非常重要,它决定了整个微控制器系统能否稳定工作。p89lpc922 提供几个可由用户选择的振

44、荡器选项。这样就满足了从高精度到低成本的不同需求。这些选项在对 flash 进行编程时配置,包括片内看门狗振荡器、片内rc 振荡器、使用外部晶振的振荡器或外部时钟源。晶振可选择低、中或高频晶振,频率范围为 20khz 到 12mhz。本系统中选用 6mhz 的晶振,可以保证精度达到系统要求。p1.5/rst 管脚可作为低有效复位输入或数字输入口。当 ucfg1 寄存器中的位rpe(复位管脚使能)置位时,使能外部复位输入功能。当清零时,复位脚可作为一个输入管脚。每一个复位源在复位寄存器 rstsrc 中都有一个对应的标志。用户可读取该寄存器以判断最近的复位源是哪一个。这些标志位可通过软件写入0清

45、零。p0.0p0.4 键盘中断口连接 5 个按键,用来控制的数据的传输和采集。 单片机的外围电路如下所示: r12330led5s1r11330r13330r9330r10330s5s4s3s2led1led2led3led4p00p01p02p03p04v cc3.3 图 4-1 单片机键盘电路陕西科技大学毕业论文(设计说明书)14cmp2/p0.0/kbi01p1.72p1.63p1.5/rest4v ss5x tal1/p3.16x tal2/p3.0/clkout7p1.48p1.39p1.210p0.6/cm p114rx d/p1.111tx d/p1.012t1/p0.713v

46、dd15cmpref /p0.5/kbi516cin 1a /p0.4/kbi417cin 1b/p0.3/k bi318cin 2a /p0.2/kbi219cin 2b/p0.1/k bi120p89lpc922c122pc222pr110ks1y16mc34.7ufsdasclp00p01p02p03p04v cc3.3v cc3.3图 4-2 单片机复位及键盘电路4.2 led 显示模块数字 led 显示屏由显示数字 0 9 的数码管和驱动数码管的芯片 zlg7290 两大部分组成,。zlg7290 外围电路包括晶振电路、复位电路和 i2c 接口电路。数码管是 4 位联体式数码管。zl

47、g7290 是带有 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 和

48、c2 通常取值在 30pf 左右。复位信号是低电平有效, 一般只需外接简单的 rc 复位电路, 也可以通过直接拉低 rst 引脚的方法进行复位。因为芯片可直接驱动 led 数码管显示, 电流较大, 且为动态扫描方式, 为尽量消除电源噪声干扰, 提高电路抗干扰能力, 应用时可在电源 vcc 的正负极间并入一个 100uf 的电容。vcc 选用+ 3. 3v。数码管必须是共阴式的, 不能直接使用共阳式的, 这里采用 4 位联体式数码管。数码管在工作时要消耗较大的电流, rp2 是限流电阻, 阻值是 220 欧姆。如果要增大数码管的亮度, 可以适当减小电阻值。基于 i2c 总线的远程数据采集系统15

49、 sega23segb24 segc1segd2sege7segf8segg9segdp10scl19sda20x218x117rst15gnd11v cc16dig713dig612dig5 21dig422dig33dig24dig15dig06uz lg7290c130pc230pr110ky18mc44.7ufv cc3.3abfcgdedpabfcgdedpabfcgdedpabfcgdedpcom16com28com39com412a11b7c4d2e1f10g5dp3dpy112345678161514131211109rp2220segasegasegbsegbsegcsegc

50、segdsegdsegesegesegfsegfseggseggsegdpsegdpdig0dig1dig2dig3dig3dig2dig1dig0v cc3.3c30.1ur210k r310kv cc3.3sclsda 图 4-3 led 显示电路电路4.3 远程传输模块 在使用i2c器件的过程中,i2c总线在应用中常受到限制,例如:信号传输距离有限,常用于一个pcb板;总线上挂接的节点器件有限,受容性负载最大值400pf的限制;挂接多个器件时速度只能取最低值,高速i2c器件速度发挥不出来等。i2c总线扩展器p82b96的开发扩展了总线容量,从400pf扩展到4000pf,增加了总线可支持

51、器件的数目。而且扩展了通讯距离,利用线缆在i2c总线的速率为31khz时传输距离可长达1000米。 p82b96是一款双极性i2c扩展芯片,在保持i2c系统的工作模式和特性不变的情况下,通过缓冲sda和scl总线上的数据来扩展通信距离,同时i2c扩展器p82b96提供了一种在标准i2c总线和其他总线配置间的无锁存、双向性的逻辑接口,它可以把i2c总线连接到215v的逻辑器件上,且不受i2c总线协议的限制和时钟速率的限制。能增加陕西科技大学毕业论文(设计说明书)16i2c总线的传输距离和节点上的负载数目。i2c扩展器p82b96彻底地解决了i2c总线在远距离传输的不足。 管脚描述如表 4-1。表

52、 4-1 p82b96 管脚描述符号管脚描述sx1i2c 总线(sda 或 scl)rx2接收信号tx3发送信号gnd4地ty5发送信号ry6接收信号sy7i2c 总线(sda 或 scl)vcc8电源作用为增加 i2c 通信距离时,两个 p82b96 必须匹配使用。电路设计时必须加上拉电阻,p82b96 的具体连接方法如图 4-4 所示。 3.3v5v3.3v5v5vsdascl1 sx 7 sy rx 2tx 3 ty 5 ry 6 8vcc gnd 4 p82b965v5v3.3v5v5vsdasclsx 1 sy 7 2 rx 3 tx 5 ty 6 ry 8vcc gnd 4p82b

53、96长线缆主机端远程控制端 图 4-4 p82b96 实现远距离 i2c 通信在系统中的应用如下图所示:基于 i2c 总线的远程数据采集系统17 r710kr610kr8330r5330sclsdasdaxsclyv cc5v cc5v cc5sx1rx2t x3gnd4t y5ry6sy7v cc8u2p82b96t pv cc3.3v cc3.3图 4-5 i2c 通信扩展电路4.4 电源模块本系统电源用到 3.3v、5v 两种电源。lpc922 单片机供电需要 3.3v,zlg9270 的工作电压也用到 3.3v,为了降低延时,为 p82b96 提供 3.3v、5v 两种电源。pcf85

54、91和 ad590 都采用 5v 供电即可。利用电池供电引出 5v 电压,经 spx3819 后输出 3.3v 提供单片机的工作电压。电路简单,只需在输入输出端分别接上 10f 滤波电容,电路设计如图 4-6。error! reference source not found.v in1v out5gnd2en3byp4u3spx 3819c1110uf/16vc1010uf/16vv cc3.3j1v cc5图 4-6 电源转换电路spx3819 是一个具有低压差电压和低噪声输出电压调节器。它有一个小于 1以下的初始误差和逻辑兼容的 on / off 切换输入。禁用时,电力消耗下降到几乎为零

55、。其他主要功能包括电池反向保护,限流和热关机。它具有非常低的输出温度系数,输出设备需要一个很稳定的电容。4.5 温度测量模块 本系统设计目的在于采集现实环境的温度信息,所以需要利用单片机采集温度传感器的数据,温度传感器使用美国模拟器件公司生产的 ad590,采集的信号需要经过放大和信号调理,再传送到 a/d 转换器 pcf8951,即把模拟信号转换成数字信号,转换陕西科技大学毕业论文(设计说明书)18后通过 i2c 总线传输给处理中心。4.5.1 a/d 转换器 pcf8591pcf8591 是一款单电源、低功耗 8 位 coms 型 a/d、d/a 转换芯片,它具有 4 路模拟量输入通道、一

56、路模拟量输出通道和 1 个 i2c 总线接口。该器件 i2c 从地址的低三位由芯片的 a0、a1 和 a2 三个地址引脚决定,所以在不增加任何硬件的情况下同一条i2c 总线最多可以连接 8 个同类型的器件。该器件具有多路模拟量输入、片上跟踪保持、8 位 a/d 转换和 8 位 d/a 转换等功能。a/d 与 d/a 的最大转换速率由 i2c 总线的最大传输速率决定。 pcf8591 采用的是单电源供电,正常工作电源电压范围为 2.5v6v;重要的是通过 i2c 总线完成数据的输入/输出,采样频率是由 i2c 总线传输速率决定的。pcf8591进行数据转换时需要外接一参考电压。 pcf8591

57、采用典型的 i2c 总线接口器件寻址方法,即总线地址由器件地址、引脚地址和方向位组成。飞利蒲公司规定 a/d 器件地址为 1001。引脚地址为aaa012,其值由用户选择,因此 i2c 系统中最多可接23=8 个具有 i2c 总线接口的 a/d 器件。地址的最后一位为方向位wr/,当主控器对 a/d 器件进行读操作时为 1,进行写操作时为0。总线操作时,由器件地址、引脚地址和方向位组成的从地址为主控器发送的第一字节。 在进行数据操作时,首先是主控器发出起始信号,然后发出读寻址字节,被控器做出应答后,主控器从被控器读出第一个数据字节,主控器发出应答,主控器从被控器读出第二个数据字节,主控器发出应

58、答一直到主控器从被控器中读出第 n 个数据字节,主控器发出非应答信号,最后主控器发出停止信号。4.5.2 温度传感器 ad590 集成温度传感器实质上是一种半导体集成电路,它是利用晶体管的b-e结压降的不饱和值vbe与热力学温度t和通过发射极电流i的下述关系实现对温度的检测: lnibeqkitv ( 4 1) 式中:k波尔兹常数; q电子电荷绝对值。 ad590 是美国模拟器件公司生产的单片集成两端感温电流源。流过器件的电流(ma)等于器件所处环境的热力学温度(开尔文)度数,即: kmarti1 ( 4 2) 式中:ir流过器件(ad590)的电流,单位为ma;基于 i2c 总线的远程数据采

59、集系统19 t热力学温度,单位为k。 ad590的测温范围为-55+150,电源电压范围为4v30v。其输出电流是以绝对温度零度(-273)为基准,每增加1,它会增加1a输出电流。ad590可以承受44v正向电压和20v反向电压,因而器件反接也不会被损坏。ad590精度很高,在-55+150范围内,非线性误差为0.3。 温度测量电路如下:ain01ain12ain23ain34a05a16a27v ss8sda9scl10osc11ex t12agnd13v ref14aout15v dd16u4pcf8591sdasclr3d1z ener3v dd1v ss3v out2u1ad590r1

60、1.2kr210kr6100kr410kr510kr7100kr810k567u2blm324321411u2alm324v cc5v cc5v cc5v cc5r910kd1图 4-7 温度测量电路图ad590 的输出电流 i=(273+t)a(t 为摄氏温度) ,因此测量的电压 v 为(273+t)a10k=(2.73+t/100)v。为了将电压测量出来又务须使输出电流 i 分流,我们使用 lm324 作为电压跟随器输出电压等于输入电压 v;由于电源供应多器件之后,是带杂波的,因此我们使用齐纳二极管作为稳压管,得到 3v 的稳压电源,再利用可变电阻分压,其输出电压 v1 需调整至 2.73

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论