2.6 SPI串行接口

MAX6675采用标准的SPI串行外设总线与MCU接口,且MAX6675只能作为从设备。MAX6675 SO端输出温度数据的格式如图3所示,MAX6675 SPI接口时序如图4所示。MAX6675从SPI串行接口输出数据的过程如下:MCU使CS变低并提供时钟信号给SCK,由SO读取测量结果。CS变低将停止任何转换过程;CS变高将启动一个新的转换过程。一个完整串行接口读操作需16个时钟周期,在时钟的下降沿读16个输出位,第1位和第15位是一伪标志位,并总为0;第14位到第3位为以MSB到LSB顺序排列的转换温度值;第2位平时为低,当热电偶输入开放时为高,开放热电偶检测电路完全由MAX6675实现,为开放热电偶检测器操作,T-必须接地,并使能地点尽可能接近GND脚;第1位为低以提供MAX6675器件身份码,第0位为三态。

3、 测温应用

下面给出MAX6675应用于嵌入式系统的具体方法。这里以AT89C2051单片机为例,给出MAX6675与单片机接口构成的测温电路及相应的温度值读取、转换程序。

MAX6675为单片数字式热电偶放大器,其工作时无需外接任何的外围元件,这里为降低电源耦合噪声,在其电源引脚和接地端之前接入了1只容量为0.1μF的电容。

MAX6675与AT89C2051单片机的接口电路如图5所示。

由于AT89C2051不具备SPI总线接口,故这里采用模拟SPI总线的方法来实现与MAX6675的接口。其中P1.0模拟SPI的数据输入端(MISO),P1.1模拟SPI的串行时钟输出端SCK,P1.2模拟SPI的从机选择端SSB。下面给出相应的温度值读取程序及数据转换程序。

;温度值读取程序

;位定义

SO BIT T1.0 ;数据输入

CS BIT P1.1 ;从机选择

SCK BIT P1.2 ;时钟

;数据字节定义

DATAH DATA 30H ;读取数据高位

DATAL DATA 31H ;读取数据低位

TDATAH DATA 32H ;温度高位

TDATAL DATA 33H ;温度低位

;读温度值子程序

READY:CLR CS ;停止转换并输出数据

CLR CLK ;时钟变低

MOV R2,#08H

READH:MOV C,SO

RLC A ;读D15~D8高8位数据

SETB CLK

NOP

CLR CLK

DJNZ R2,READH

MOV DATAH,A;将读取的高8位数据保存

MOV R2,#08H

READL:MOV C,SO ;读D7~D0低8位数据

RLC A

SETB CLK

NOP

CLR CLK

DJNZ R2,READL

MOV DATAL,A;将读取的低8位数据保存

SETB CS

;启动另一次转换过程

RET

;数据转换子程序,将读得的16位数据转换为12位温度值,去掉无用的位。

D16T12:MOV A,DATAL

CLR C

RLC A

MOV DATAL,A

;数据整体右移1位,