一.基本情况
做加热台的需要测温度,买了一个MAX6675带K型热电偶的模块实验。
项目使用micropython环境,硬件SPI总线读取数据。
MAX6675的读取时序如下:
二.源码
from machine import SPI,Pin
class max6675():
def __init__(self,spi,cs):
self.cs=Pin(cs,Pin.OUT)
self.cs.value(1)#看时序图,不读写数据时为高电平
self.spi=spi
self.temprature=0
def readData(self):
self.cs.value(0)#拉低CS开始读取数据
rawDataH=spi.read(1)#看时序图,先读取的一个字节为16位数据的高8位
rawDataL=spi.read(1)#低8位
self.temprature=(rawDataH[0]*256+rawDataL[0])*2/16*0.25#看datasheet,16位数据转为真实温度数据
self.cs.value(1)#读取完毕拉高CS
spi=SPI(2, baudrate=500000,sck=Pin(4), mosi=None, miso=Pin(6))
#避免IO浪费,初始化SPI总线时,把MOSI初始化为None,确定不占用引脚。
#如果不初始化为None,会缺省使用一些引脚,从而造成引脚占用
#可以这样测试:
#>>> s=SPI(2)
#>>> s
#SPI(id=2, baudrate=500000, polarity=0, phase=0, bits=8, firstbit=0, sck=36, mosi=35,miso=37)
#可以看到MOSI是会缺省占用引脚的
m=max6675(spi,cs=5)
#注意SPI模块没有CS引脚,所以要额外指定CS引脚
m.readData()
print(m.temprature)