MAX31865采集PT1000温度传感器应用电路和代码
一.概述
二.特点和优点
三:典型应用电路


四:代码解释:
void MAX31865_Write_REG(u8 addr,u8 dat)
{
u8 i;
CS=0;
for(i=0;i<8;i++) //写地址
{
SCLK=0;
if(addr&0x80) SDI=1;
else SDI=0;
SCLK=1;
addr<<=1;
}
for(i=0;i<8;i++) //写数据
{
SCLK=0;
if(dat&0x80) SDI=1;
else SDI=0;
SCLK=1;
dat<<=1;
}
CS=1;
}
SPI读寄存器函数:
u8 MAX31865_Read_REG(u8 addr)
{
u8 i,dat;
CS=0;
for(i=0;i<8;i++) //写地址
{
SCLK=0;
if(addr&0x80) SDI=1;
else SDI=0;
SCLK=1;
addr<<=1;
}
for(i=0;i<8;i++) //读数据
{
SCLK=0;
dat<<=1;
SCLK=1;
if(SDO) dat|=0x01;
else dat|=0x00;
}
CS=1;
return dat;
}
max31865有8个寄存器如下:


void MAX31865_INIT()
{
MAX31865_Write_REG(0x80,0xc3); //1100 0011
}
我没有进行故障检测,所以其他的寄存器用不到。只需读取RTD MSB和LSB两个寄存器就行了,读取地址为0x01和0x02. LSB D0位为故障位代码中需屏蔽掉。

u16 MAX31865_RTD_Get_ADC()
{
u16 temp1;
temp1=MAX31865_Read_REG(0x01); //MSB
temp1=temp1<<8;
temp1|=MAX31865_Read_REG(0x02); //LSB
temp1=temp1>>1;//去掉D0 Fault位
return temp1;
}
通过上面这个函数就可以得到当前温度下的RTD电阻对应的ADC值了。
如何通过ADC的值得到RTD电阻值。手册上有个公式:


文章目录
关闭