I2C实践(一)-LM75A温度传感器_第1页
I2C实践(一)-LM75A温度传感器_第2页
I2C实践(一)-LM75A温度传感器_第3页
I2C实践(一)-LM75A温度传感器_第4页
I2C实践(一)-LM75A温度传感器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、 FPGA/CPLD开发套件实验教程 PERI2-4DI 篇实验四、I 2C 实践(一)-LM75A 温度传感器实验目的:在这一课里,我们一起来学习I2C 协议,以及I2C 驱动的编写方法,并通过FPGA/CPLD来驱动LM75A 温度传感器,读出当前温度信息。实验原理:(1 I2C串行总线概述采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。常用的串行扩展总线有: I2C (Inter IC BUS )总线、单总线(1WIRE BUS )、SPI (Serial Peripheral Interface )总线及Microwire/PL

2、US等。 本课仅讨论I2C 串行总线。I2C 总线是PHLIPS 公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C 总线只有两根双向信号线。一根是数据线SDA ,另一根是时钟线SCL 。 I2C 总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA 及SCL 都是线“与”关系。 每个接到I2C 总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主FPGA/CPLD开发套件实验教程 PERI2-4DI 篇机即为发送器,总线上接

3、收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据,为了避免混乱, I2C 总线要通过总线仲裁,以决定由哪一台主机控制总线。在FPGA/CPLD应用系统的串行总线扩展中,我们经常遇到的是以FPGA/CPLD为主机,其它接口器件为从机的单主机情况。(2I2C总线的数据传送1)、数据位的有效性规定I2C 总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 2)、起始和终止信号SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL 线为高电平期间,SDA 线

4、由低电平向高电平的变化表示终止信号。 起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。连接到I2C 总线上的器件,若具有I2C 总线的硬件接口,则很容易检测到起始和终止信号。接收器收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL 线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL 线使之为高电平,从而使数据传送可以继续进行。3)、数据传送格式1、字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传送最高位(M

5、SB ),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,

6、从机释放SDA 线,以允许主机产生终止信号。2、数据帧格式I2C 总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T ),“1”表示主机接收数据(R )。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次数据传送过程中,可以有以下几种组合方式:a 、主机向从机发送数据,数据传送方向在整个传送过程中不变: 注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示

7、数据由从机向主机传送。A 表示应答, A 非表示非应答(高电平)。S 表示起始信号,P 表示终止信号。b 、主机在第一个字节后,立即从从机读数据 c 、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。 4)总线的寻址I2C 总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 D7D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。 主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,

8、如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C 总线系统中。(4)LM75A 温度传感器简介LM75A 是一个使用了内置带隙温度传感器和-模数转换技术的温度-数字转换器。它也是一个温度检测器,可提供一个过热检测输出。LM75A 包含许多数据寄存器:配置寄存器(Conf ),用来存储器件的某些配置,如器件的工作模式、OS

9、 工作模式、OS 极性和OS 故障队列等(在功能描述一节中有详细描述);温度寄存器(Temp ),用来存储读取的数字温度;设定点寄存器(Tos & Thyst),用来存储可编程的过热关断和滞后限制,器件通过2 线的串行I2C 总线接口与控制器通信。LM75A 还包含一个开漏输出(OS ),当温度超过编程限制的值时该输出有效。LM75A 有3个可选的逻辑地址管脚,使得同一总线上可同时连接8个器件而不发生地址冲突。LM75A 可配置成不同的工作条件。它可设置成在正常工作模式下周期性地对环境温度进行监控或进入关断模式来将器件功耗降至最低。OS 输出有2 种可选的工作模式:OS 比较器模式和O

10、S 中断模式。OS 输出可选择高电平或低电平有效。故障队列和设定点限制可编程,为了激活OS 输出,故障队列定义了许多连续的故障。温度寄存器通常存放着一个 11 位的二进制数的补码,用来实现0.125的精度。这个高精度在需要精确地测量温度偏移或超出限制范围的应用中非常有用。正常工作模式下,当器件上电时,OS 工作在比较器模式,温度阈值为80,滞后75,这时,LM75A 就可用作一个具有以上预定义温度设定点的独立的温度控制器。其功能框图如下:FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 1) LM75A 管脚描述LM75A 的管脚描述见下图。 LM75A 管脚描述FPGA/CPLD开

11、发套件实验教程 PERI2-4DI 篇 LM75A 与FPGA 的接口电路如图所示, 由于SDA ,OS 与SCL 为开漏输出,必须加上拉电阻。 2)LM75A 的功能特点提供环境温度对应的数字信息,直接表示温度; 可以对某个特定温度作出反应,可以配置成中断或者比较器模式(OS 输出); 高速I2C 总线接口,有A2-A0 地址线,一条总线上最多可同时使用8 个LM75A ; 低功耗设计,工作电流典型值为250uA ,掉电模式为3.5uA ; 测量的温度最大范围为-55+125; 宽工作电压范围:2.8V 5.5V ; 提供了良好的温度精度(0.125); 可编程温度阈值和滞后设定点。(5)

12、LM75A 内部寄存器 指针寄存器指针寄存器包含一个 8 位的数据字节,低2 位是其它4个寄存器的指针值,高6位等于0,见指针寄存器表格和指针值表格。指针寄存器对于用户来说是不可访问的,但通过将指针数据字节包含到总线命令中可选择进行读/写操作的数据寄存器。由于当包含指针字节的总线命令执行时指针值被锁存到指针寄存器中,因此读LM75A 操作的语句中可能包含,也可能不包含指针字节。如果要再次读取一个刚被读取且指针已经预置好的寄存器,指针值必须重新包含。要读取一个不同寄存器的内容,指针字节也必须包含。但是,写LM75A 操作的语句中必须一直包含指针字节。总线通信协议详见数据通信一节。FPGA/CPL

13、D开发套件实验教程 PERI2-4DI 篇上电时,指针值等于0,选择Temp 寄存器;这时,用户无需指定指针字节就可以读取Temp 数据。 除了指针寄存器外,LM75A 包含4个数据寄存器,见下表。表中给出了寄存器的指针值、读/写能力和上电时的默认值。 温度寄存器Temp (地址0x00)温度寄存器是一个只读寄存器,包含2个8位的数据字节,由一个高数据字节(MS )和一个低数据字节(LS )组成。这两个字节中只有11位用来存放分辨率为0.125的Temp 数据(以二进制补码数据的形式),如表 1所示。对于8位的I2C 总线来说,只要从LM75A 的“00地址”连续读两个字节即可(温度的高8位在

14、前)。FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 根据11位的Temp 数据来计算Temp 值的方法:1. 若D100,温度值()Temp 数据)×0.125;2. 若D101,温度值()Temp 数据的二进制补码)×0.125。下表给出了一些Temp 数据和温度值的例子。FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 配置寄存器(地址0x01) 配置寄存器为 8 位可读写寄存器,其位功能分配如下表所示。 FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 以上OS 配置后面会详细介绍。滞后寄存器Thyst (0x02) 滞后寄存器是读/

15、写寄存器,也称为设定点寄存器,提供了温度控制范围的下限温度。每次转换结束后,Temp 数据(取其高9 位)将会与存放在该寄存器中的数据相比较,当环境温度低于此温度的时候,LM75A 将根据当前模式(比较、中断)控制OS 引脚做出相应反应。该寄存器都包含2个8位的数据字节,但2个字节中,只有9 位用来存储设定点数据(分辨率为0.5的二进制补码),其数据格式如下表所示,默认为75。 过温关断阈值寄存器Tos (0x03) 过温关断寄存器提供了温度控制范围的上限温度。每次转换结束后,Temp 数据(取其高9 位)将会与存放在该寄存器中的数据相比较,当环境温度高于此温度的时候,LM75A 将根据当前模

16、式(比较、中断)控制OS 引脚做出相应反应。其数据格式如表 4 所示,默认为80。Tos 和Thyst 表给出了一些限制数据和限制温度值的例子。 FPGA/CPLD开发套件实验教程 PERI2-4DI 篇OS 输出为开漏输出口。为了观察到这个输出的状态,需要接一个外部上拉电阻,其阻值应当足够大(高达200k),以减少温度读取误差。OS 输出可通过编程配置寄存器的B2位设置为高或低有效。如图所示,为LM75A 在不同模式下OS 引脚对温度做出的响应。OS 设为低有效。 *OS 可通过读寄存器或使器件进入关断状态来复位。假设故障队列在每个Tos 和Thyst 交叉点处都被满足。可以看出,当LM75

17、A 工作在比较器模式时,当温度高于Tos 时,OS 输出低电平。此时采取了降温措施,启动降温设备(如风扇),直到温度再降到Thyst ,则停止降温,因此在这种模式下,LM75A 可以直接控制外部电路来保持环境温度;而在中断模式,则在温度高于Tos 或低于Thyst 时产生中断。注意:在中断模式下,只有当MCU 对LM75A 进行读操作后,其中断信号才会消失(图中OS 变为高电平)。2)LM75A 的I2C 串行接口在主控器的控制下,LM75A 可以通过SCL 和SDA 作为从器件连接到I2C 总线上。主控器必须提供SCL 时钟信号,可以通过SDA 读出器件数据或将数据写入到器件中。注意:必须在

18、SCL 和SDA 端分别连接一个外部上拉电阻,阻值大约为10k。LM75A 在I2C 总线的从地址的一部分由应用到器件地址管脚A2、A1 和A0 的逻辑来定义。这3 个地址管脚连接到GND (逻辑0)或Vcc (逻辑1)。它们代表了器件7 位地址中的低3 位。地址的高4 位由LM75A 内部的硬连线预先设置FPGA/CPLD开发套件实验教程 PERI2-4DI 篇为1001。表1 给出了器件的完整地址,从表中可以看出,同一总线上可连接8 个器件而不会产生地址冲突。由于输入管脚SCL 、SDA 、A2-A0 内部无偏置,因此在任何应用中它们都不能悬空(这一点很重要)。 主机和 LM75A 之间的

19、通信必须严格遵循I2C 总线管理定义的规则。LM75A 寄存器读/写操作的协议通过下列描述之后的各个图来说明:1. 通信开始之前,I2C 总线必须空闲或者不忙。这就意味着总线上的所有器件都必须释放SCL 和SDA 线,SCL 和SDA 线被总线的上拉电阻拉高。2. 由主机来提供通信所需的SCL 时钟脉冲。在连续的9 个SCL 时钟脉冲作用下,数据(8 位的数据字节以及紧跟其后的1 个应答状态位)被传输。3. 在数据传输过程中,除起始和停止信号外,SDA 信号必须保持稳定,而SCL 信号必须为高。这就表明SDA 信号只能在SCL 为低时改变。4. S:起始信号,主机启动一次通信的信号,SCL 为

20、高电平,SDA 从高电平变成低电平。5. RS:重复起始信号,与起始信号相同,用来启动一个写命令后的读命令。6. P:停止信号,主机停止一次通信的信号,SCL 为高电平,SDA 从低电平变成高电平。然后总线变成空闲状态。7. W:写位,在写命令中写/读位0。8. R:读位,在读命令中写/读位1。9. A :器件应答位,由LM75A 返回。当器件正确工作时该位为0,否则为1。为了使器件获得SDA 的控制权,这段时间内主机必须释放SDA 线。10. A:主机应答位,不是由器件返回,而是在读2字节的数据时由主控器或主机设置的。在这个时钟周期内,为了告知器件的第一个字节已经读走,并要求器件将第二个字节

21、放到总线上,主机必须将SDA 线设为低电平。11. NA:非应答位。在这个时钟周期内,数据传输结束时器件和主机都必须释放SDA 线,然后由主机产生停止信号。12. 在写操作协议中,数据从主机发送到器件,由主机控制SDA 线,但在器件将应答信号发送到总线的时钟周期内除外。13. 在读操作协议中,数据由器件发送到总线上,在器件正在将数据发送到总线和控制SDA 线的这段时间内,主机必须释放SDA 线,但在主器件将应答信号发送到总线的时间周期内除外。详细的读/写寄存器协议如下: 写配置寄存器(1 字节数据)FPGA/CPLD开发套件实验教程 PERI2-4DI 篇 读包含指针字节的配置寄存器(1 字节数据) 读预置指针的配置寄存器(1 字节数据) FPGA/CPLD 开发套件实验教程 PERI2-4DI 篇 写 Tos

温馨提示

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

最新文档

评论

0/150

提交评论