论文部分内容阅读
摘要:本文介绍了12C串行总线控制器PCF8584的结构、功能。
结合我们一个课题,给出了PCF8584在系统中的应用。
关键词:FC总线;控制器;PCF8584;DS1624
PCF8584
PCF 8584是PHILIPS(后更名为NXP)公司生产的CMOS低功耗I2总线控制电路,作为大多数标准并行总线的微处理器/微控制器与串行的I2C,总线间的接口。带有主从模式,它可与I2C串行总线的器件进行通讯,允许并行总线系统与I2C串行总线间进行双向通讯,可采用中断或查询模式,完成所有12C总线规范的序列、协议、仲裁及定时控制。它有两种工作模式,分别是Intel和Motorola(后更名为Freescale)模式,不论是Intel或Motorola公司的微处理器,皆可方便与PCF 8584接口,这由芯片内部自动对第一个写信号序列进行检测来实现的。默认方式为Intel模式。

PCF8584内部有5个寄存器,其中的三个(自地址寄存器SO’,时钟寄存器S2,中断向量寄存器S3)用于对PCF8584进行初始化。正常情况下,这三个寄存器用于在设备复位后初始化该芯片。另外两个寄存器是复用的,分别是数据缓冲/移位寄存器SO,控制/状态寄存器S1,用于实际的数据传送和接收。使用复用功能的寄存器,由读写来加以区别,减少了寄存器的使用量。寄存器S0兼具移位和数据缓冲的功能。寄存器SO在I2C总线中执行所有串一并转换的功能。寄存器S1包括了I2C,总线状态信息。
I2C总线
I2C总线用两条线(SDA和SCL)在芯片和模块间传递信息。SDA为串行数据线,SCL为串行时钟线,这两条线必须用一个上拉电阻与正电源相连,其数据只有在总线不忙时才可传送。12C总线的系统配置参见图1,产生信号的设备是传送器,接收信号的设备是接收器,控制信号的设备是主设备,受控制信号的设备是从设备。

启动和停止条件
总线不忙时,数据线和时钟线保持在高电平。数据线(SDA)在下降沿而时钟线(SCL)为高电平时,为起动条件(START);数据线在上升沿而时钟线为高电平时为停止条件(STOP),参见图2、图3。
标志位
在起动条件和停止条件之间,传送器传送给接收器的数据数量没有限制。在每个8位字节后加一个标志位,传送器便产生一个高电平的标志位,这时主设备产生一个附加标志位时钟脉冲。
从接受器必须在接收到每个字节后产生一个标志位,主接收器也必须在接收从传送器传送的每个字节后产生一个标志位。在标志位时钟脉冲出现时,SDA线应保持低电平(应考虑起动和保持时间)。传送器应在从设备接收到最后一个字节时变为低电平,而使接收器产生标志位,这时主设备即可产生停止条件。

I2C总线协议
用VC总线传递数据前,接收的设备应先标明地址,在I2C总线起动后,这个地址与第一个传送字节一起被传送出去。PCF8584可以作为一个从接收器或从传送器,此时的时钟信号线SCL只能输入信号线,数据信号线SDA则为一条双向信号线。
应用实例
在我们的一个课题中,需要实现检测装置的恒温控制,同时对电路工作环境也需要进行温度检测,共需要检测、四路温度值。我们选用了DALLS公司的数字温度集成芯片DS1624,此芯片可测量的温度范围是-55到+125℃,以0.03125℃为增量,提供13位的温度值,转换时间最大为1秒;此芯片采用2线串行接口,具有布线方便等优点,完全能满足我们的设计需要。此芯片的A0、A1、A2用于芯片选择,可接最多8片温度传感器。
在之前的一项设计中,我们也选用了DS1624构成系统,与微处理器的接口通过两个端口,直接编程实现对DS1624的访问。有次调试控制板时,一旦选择到温度菜单,系统就会发生死机现象。经分析,是DS1624虚焊造成的。通过图2、3分析得知,微处理器在发送完控制字、命令字后,要接收DS1624的ACK信号,一旦DS1624虚焊或损坏,微处理器接收不到正确的ACK信号,软件就会进入死循环状态,造成系统“死机”。为了避免这种现象的发生,经比较,选用了通过12C总线控制器PCF8584来对DS1624进行访问,就不会发生这样的情况,控制器会自动完成数据的读取。如果发生错误,也会置位相应的状态位,避免了因器件损坏或接触不良而造成的系统死机现象。
系统中,PCF8584采用主模式,DSl624采用从模式。
系统设计
系统原理图见图4。PCF8584的访问通过端口地址实现,其地址通过软件编程进行定义,占用800H,801H两个端口。四片DS1624的地址分别为0-3。
为了实现数据的发送和接收功能,定义了以下一些函数:初始化函数,用于主要寄存器的初始化;发送数据、接收数据函数;设置起动位及停止位的函数等。
结语
I2C总线以其接口简单,PCB布线方便等方面的优点,得到了越来越多的应用。本系统中,使用PCF8584实现了I2C串行总线与微处理器的接口,满足了系统设计要求,也简化了系统设计,取得了很好的效果。
结合我们一个课题,给出了PCF8584在系统中的应用。
关键词:FC总线;控制器;PCF8584;DS1624
PCF8584
PCF 8584是PHILIPS(后更名为NXP)公司生产的CMOS低功耗I2总线控制电路,作为大多数标准并行总线的微处理器/微控制器与串行的I2C,总线间的接口。带有主从模式,它可与I2C串行总线的器件进行通讯,允许并行总线系统与I2C串行总线间进行双向通讯,可采用中断或查询模式,完成所有12C总线规范的序列、协议、仲裁及定时控制。它有两种工作模式,分别是Intel和Motorola(后更名为Freescale)模式,不论是Intel或Motorola公司的微处理器,皆可方便与PCF 8584接口,这由芯片内部自动对第一个写信号序列进行检测来实现的。默认方式为Intel模式。

PCF8584内部有5个寄存器,其中的三个(自地址寄存器SO’,时钟寄存器S2,中断向量寄存器S3)用于对PCF8584进行初始化。正常情况下,这三个寄存器用于在设备复位后初始化该芯片。另外两个寄存器是复用的,分别是数据缓冲/移位寄存器SO,控制/状态寄存器S1,用于实际的数据传送和接收。使用复用功能的寄存器,由读写来加以区别,减少了寄存器的使用量。寄存器S0兼具移位和数据缓冲的功能。寄存器SO在I2C总线中执行所有串一并转换的功能。寄存器S1包括了I2C,总线状态信息。
I2C总线
I2C总线用两条线(SDA和SCL)在芯片和模块间传递信息。SDA为串行数据线,SCL为串行时钟线,这两条线必须用一个上拉电阻与正电源相连,其数据只有在总线不忙时才可传送。12C总线的系统配置参见图1,产生信号的设备是传送器,接收信号的设备是接收器,控制信号的设备是主设备,受控制信号的设备是从设备。

启动和停止条件
总线不忙时,数据线和时钟线保持在高电平。数据线(SDA)在下降沿而时钟线(SCL)为高电平时,为起动条件(START);数据线在上升沿而时钟线为高电平时为停止条件(STOP),参见图2、图3。
标志位
在起动条件和停止条件之间,传送器传送给接收器的数据数量没有限制。在每个8位字节后加一个标志位,传送器便产生一个高电平的标志位,这时主设备产生一个附加标志位时钟脉冲。
从接受器必须在接收到每个字节后产生一个标志位,主接收器也必须在接收从传送器传送的每个字节后产生一个标志位。在标志位时钟脉冲出现时,SDA线应保持低电平(应考虑起动和保持时间)。传送器应在从设备接收到最后一个字节时变为低电平,而使接收器产生标志位,这时主设备即可产生停止条件。

I2C总线协议
用VC总线传递数据前,接收的设备应先标明地址,在I2C总线起动后,这个地址与第一个传送字节一起被传送出去。PCF8584可以作为一个从接收器或从传送器,此时的时钟信号线SCL只能输入信号线,数据信号线SDA则为一条双向信号线。
应用实例
在我们的一个课题中,需要实现检测装置的恒温控制,同时对电路工作环境也需要进行温度检测,共需要检测、四路温度值。我们选用了DALLS公司的数字温度集成芯片DS1624,此芯片可测量的温度范围是-55到+125℃,以0.03125℃为增量,提供13位的温度值,转换时间最大为1秒;此芯片采用2线串行接口,具有布线方便等优点,完全能满足我们的设计需要。此芯片的A0、A1、A2用于芯片选择,可接最多8片温度传感器。
在之前的一项设计中,我们也选用了DS1624构成系统,与微处理器的接口通过两个端口,直接编程实现对DS1624的访问。有次调试控制板时,一旦选择到温度菜单,系统就会发生死机现象。经分析,是DS1624虚焊造成的。通过图2、3分析得知,微处理器在发送完控制字、命令字后,要接收DS1624的ACK信号,一旦DS1624虚焊或损坏,微处理器接收不到正确的ACK信号,软件就会进入死循环状态,造成系统“死机”。为了避免这种现象的发生,经比较,选用了通过12C总线控制器PCF8584来对DS1624进行访问,就不会发生这样的情况,控制器会自动完成数据的读取。如果发生错误,也会置位相应的状态位,避免了因器件损坏或接触不良而造成的系统死机现象。
系统中,PCF8584采用主模式,DSl624采用从模式。
系统设计
系统原理图见图4。PCF8584的访问通过端口地址实现,其地址通过软件编程进行定义,占用800H,801H两个端口。四片DS1624的地址分别为0-3。
为了实现数据的发送和接收功能,定义了以下一些函数:初始化函数,用于主要寄存器的初始化;发送数据、接收数据函数;设置起动位及停止位的函数等。
结语
I2C总线以其接口简单,PCB布线方便等方面的优点,得到了越来越多的应用。本系统中,使用PCF8584实现了I2C串行总线与微处理器的接口,满足了系统设计要求,也简化了系统设计,取得了很好的效果。