MAX31855 热电偶 温度获取 C语言 STM32 HAL库

MAX31855 热电偶 温度获取 C语言 HAL库

STM32CubeMX SPI 配置
MAX31855 热电偶 温度获取 C语言 STM32 HAL库_第1张图片
增加CS(片选)引脚,设置为推挽输出模式
MAX31855 热电偶 温度获取 C语言 STM32 HAL库_第2张图片

MAX31855 SPI 数据格式
MAX31855 热电偶 温度获取 C语言 STM32 HAL库_第3张图片

HAL_StatusTypeDef read_max31855(SPI_HandleTypeDef *hspi, float *temp1, float *temp2, GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
	uint16_t 		t1 = 0; //热电偶温度临时变量
	uint16_t 		t2 = 0; //芯片内部温度临时变量
	HAL_StatusTypeDef status_hal = HAL_ERROR;
	uint8_t data[4] = {0}; //SPI数据存放临时变量
	
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_RESET); //片选拉低,开始读取SPI数据
	status_hal = HAL_SPI_Receive(hspi, data, sizeof(data), 255); //读取SPI数据,4个字节共32位
	HAL_GPIO_WritePin(SPI1_CS_GPIO_Port, SPI1_CS_Pin, GPIO_PIN_SET); //片选拉高,完成SPI数据读取
	
	t1 = data[0];
	t1 = (t1 << 8) | data[1];
	*temp1 = (t1 >> 2) * 0.25; //获取热电偶温度
	
	t2 = data[2];
	t2 = (t2 << 8) | data[3];
	*temp2 = (t2 >> 4) * 0.0625; //获取芯片内部温度
	return status_hal;
}

你可能感兴趣的:(嵌入式)