咚咚咚————【封装驱动】MAX6675热电偶温度传感器,分享交流自己编写的程序。
#ifndef _MAX6675_H
#define _MAX6675_H
#include "sys.h"
#include "delay.h"
void MAX6675_Init(void);
u16 MAX6675_Read_Temp(void);
#endif
#include "max6675.h"
#define SCK_H (HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET))
#define SCK_L (HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET))
#define NCE_H (HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_SET))
#define NCE_L (HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET))
#define SDA_R (HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_5))
void MAX6675_Init(void)
{
GPIO_InitTypeDef GPIO_Initure;
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_Initure.Pin=GPIO_PIN_3|GPIO_PIN_4;
GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;
GPIO_Initure.Pull=GPIO_PULLUP;
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
GPIO_Initure.Pin=GPIO_PIN_5;
GPIO_Initure.Mode=GPIO_MODE_INPUT;
GPIO_Initure.Pull=GPIO_PULLUP;
GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB,&GPIO_Initure);
}
u16 MAX6675_SoftSpi_Read(void)
{
u8 i;
u16 value;
NCE_L;
SCK_L;
delay_us(1);
for(i=0;i<16;i++)
{
SCK_H;
delay_us(1);
value<<=1;
if(SDA_R)value++;
SCK_L;
delay_us(1);
}
delay_us(1);
NCE_H;
return value;
}
u16 MAX6675_Read_Temp(void)
{
u16 value;
u8 flag;
value = MAX6675_SoftSpi_Read();
flag = (value&0x04);
value = value<<1;
value = value>>4;
return value/4;
}