MAX6675驱动(STM32,K 热电偶)

一、前期准备
单片机:STM32F103ZET6
开发环境:MDK5.27
库函数:STM32Cube FW_F1 V1.8.0
MAX6675模块:淘宝有售
在这里插入图片描述

二、实验效果
在这里插入图片描述仿真:
在这里插入图片描述

三、驱动原理
参考MAX6675数据手册。
需要完整工程或者有问题的请加QQ:1002521871

四、驱动代码
max6675.h

#ifndef __MAX_6675_H__
#define	__MAX_6675_H__
#include "stm32f1xx_hal.h"
#include "gpio.h"
#include "stdio.h"
#define	CS	PAout(4)

typedef enum
{
	Device_Offline = 0,
	Device_Online = 1,
}MAX6675_Status;

typedef struct
{
	uint16_t Row_Data;
	MAX6675_Status Device_State;
	float Temperature;
}MAX6675_Data_T;

extern	SPI_HandleTypeDef hspi1;
extern MAX6675_Data_T Thermocouple_K;
extern void survice_MAX6675(void);
#endif

max6675.c

#include "max6675.h"

MAX6675_Data_T Thermocouple_K = 
{	0, 
	Device_Offline, 
	0.0f
};

void survice_MAX6675(void)
{
	uint8_t data[2] = {0};
	
	CS = 0;
	HAL_Delay(2);
	HAL_SPI_Receive(&hspi1, data, 2, 0xFFFF);
	CS = 1;
	HAL_Delay(2);
	
	Thermocouple_K.Row_Data = 0;
	Thermocouple_K.Row_Data = (data[1] << 8) | data[0];
	
	if ((Thermocouple_K.Row_Data >> 2) & 0x01)
	{
		Thermocouple_K.Device_State = Device_Offline;
	}
	else
	{
		Thermocouple_K.Device_State = Device_Online;
	}
	
	Thermocouple_K.Temperature = (float)(((Thermocouple_K.Row_Data >> 3) & ~(0xF << 12)) * 0.25f);
}


由于作者能力有限,有不妥之处欢迎指正,邮箱alex_hua@foxmail.com

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
这段代码是通过STM32的SPI2接口与MAX6675热电偶温度传感器进行通信,以测量K热电偶的温度。MAX6675是一种数字式热电偶温度传感器,通过SPI接口与STM32微控制器进行通信。 首先,在函数MAX6675_GPIO_Init中,配置了SPI2的引脚和相关参数。GPIO_InitStructure结构体用于配置GPIO引脚的模式、速度和复用功能。SPI_InitStructure结构体用于配置SPI的工作模式、数据大小、时钟极性和相位等参数。RCC_APB2PeriphClockCmd函数用于使能GPIOB的时钟。 接下来,在函数TEMP_ReadReg中,通过控制SCK和CS引脚的电平变化以及读取SO引脚的状态,逐位读取16位的温度值。具体的操作过程如下: 1. 置CS为高电平,SCK为低电平,进行一些延时。 2. 置CS为低电平,开始传输数据。 3. 循环读取16位数据: a. 左移Temp_2一位。 b. 置SCK为高电平,进行一些延时。 c. 判断SO引脚状态,如果为高电平,则将Temp_2最低位置为1,否则为0。 d. 置SCK为低电平,进行一些延时。 4. 置SCK为低电平,进行一些延时。 5. 置CS为高电平,进行一些延时。 6. 对Temp_2进行一些位操作,将其右移4位,以获得实际的温度值。 7. 返回温度值Temp_2。 需要注意的是,这段代码中的引脚操作和寄存器配置是基于特定的STM32F10x系列微控制器和MAX6675热电偶温度传感器,实际使用时需要根据具体的硬件和接口配置进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值