使用max31865读取PT100温度

max31865是一个SPI芯片 用STM32读取温度的步骤分为3步。

第一步:初始化STM32 的SPI


static void MX_SPI1_Init(void)
{
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 10;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }
}

第二步:配置max31865芯片,分为2线制和3线制

spi_config(0xD1);//3线制配置,0xC1为2线制配置
void spi_config(uint8_t cmd)
{
	CS_ENABLE;		//使能SPI
	SPI1_ReadWriteByte(0x80);	//配置指令
	SPI1_ReadWriteByte(cmd);	//配置参数
	CS_DISABLE;	
}
uint8_t SPI1_ReadWriteByte(uint8_t cmd)
{
	uint8_t RxData;
	HAL_SPI_TransmitReceive(&hspi1, &cmd, &RxData, 1, 1000);
	return RxData;
}

第三步:发送读温度的命令读取温度的MSB和LSB,然后组合出温度。

	uint8_t  Temp_H,Temp_L;
	uint16_t Temp_Hex;
	float Temp_Float;//最终摄氏温度
	while (1)
  {
	Temp_H=0;
	Temp_L=0;
	Temp_Hex=0;
	CS_ENABLE;	
	SPI1_ReadWriteByte(0x01); //读MSB命令
	Temp_H=SPI1_ReadWriteByte(0xFF);
	Temp_L=SPI1_ReadWriteByte(0xFF);
	CS_DISABLE;	
	Temp_Hex=((Temp_H<<8)|Temp_L)>>1;	
	Temp_Float = (((Temp_Hex*430.0)/32768)-100)/0.385055; 
  }

cf3b0e40a434865832f66983b2bab7d0

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值