通过spi模块读取四路max6675温度数据
max6675.lua文件:
SpiPinCS1 = 8--GPIO15
SpiPinCS2 = 7--GPIO13
SpiPinCS3 = 0--GPIO16
SpiPinCS4 = 1--GPIO5 --定义四路spi片选引脚
spi.setup(1, spi.MASTER, spi.CPOL_HIGH, spi.CPHA_HIGH, 8, 8)
gpio.mode(SpiPinCS1, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS2, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS3, gpio.OUTPUT, gpio.PULLUP)
gpio.mode(SpiPinCS4, gpio.OUTPUT, gpio.PULLUP) --设置片选引脚模式
local SpiCount = 0 --计数定时1秒 把数据发送到ESP8266模块串口
tmr.alarm(1,100,1,function()
SpiCount = SpiCount + 1
if SpiCount >= 10 and SpiCount <= 11 then
SpiCount = 11
gpio.write(SpiPinCS1,0) --拉低片选开始读数据
--spi.send(1,0xff)
SpiData1 = spi.recv(1,1)
SpiData2 = spi.recv(1,1) --读取max6675原始数据
num=SpiData1:byte(1)*256 + SpiData2:byte(1) --byte(1)转换为整数
num=num*2
num= num/16
num=num*0.25 --计算得出实际温度
print("temperture1:"..num)--串口打印温度数据
gpio.write(SpiPinCS1,1) --拉高片选,停止读数据
elseif SpiCount >=20 and SpiCount <= 21 then
SpiCount = 21
gpio.write(SpiPinCS2,0)
--spi.send(1,0xff)
SpiData1 = spi.recv(1,1)
SpiData2 = spi.recv(1,1)
num=SpiData1:byte(1)*256 + SpiData2:byte(1)
num=num*2
num= num/16
num=num*0.25
print("temperture2:"..num)
gpio.write(SpiPinCS2,1)
elseif SpiCount >=30 and SpiCount <= 31 then
SpiCount = 31
gpio.write(SpiPinCS3,0)
--spi.send(1,0xff)
SpiData1 = spi.recv(1,1)
SpiData2 = spi.recv(1,1)
num=SpiData1:byte(1)*256 + SpiData2:byte(1)
num=num*2
num= num/16
num=num*0.25
print("temperture3:"..num)
gpio.write(SpiPinCS3,1)
elseif SpiCount >=40 and SpiCount <= 41 then
SpiCount = 0
gpio.write(SpiPinCS4,0)
--spi.send(1,0xff)
SpiData1 = spi.recv(1,1)
SpiData2 = spi.recv(1,1)
num=SpiData1:byte(1)*256 + SpiData2:byte(1)
num=num*2
num= num/16
num=num*0.25
print("temperture4:"..num)
gpio.write(SpiPinCS4,1)
end
end)