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位,