1.开箱
    
收到了论坛送的温度传感器Thermo 6 Click,开心开心,上图上图

听说是金主贸泽商城赞助的,咱直接去贸泽商城去找资料

 可惜没找到手册,但具体芯片型号可以找到,MAX31875
 可惜没找到手册,但具体芯片型号可以找到,MAX31875
顺藤摸瓜,我们直接搜索这个芯片,然后找手册.
找到手册,可惜是英文的,大概看了下手册


 主要找到了主机地址以及存温度值的寄存器,
主要就是温度值存在00H寄存器中,16位数据,是2的补码,以两个字节读出,位[15:3]包含温度数据,分辨率由01H寄存器决定,默认为40H,即为0.0625℃,有了这些数据,就开始写程序吧.
主要找到了主机地址以及存温度值的寄存器,
主要就是温度值存在00H寄存器中,16位数据,是2的补码,以两个字节读出,位[15:3]包含温度数据,分辨率由01H寄存器决定,默认为40H,即为0.0625℃,有了这些数据,就开始写程序吧.
我直接用STM32CUBEMX配置一个串口和IIC,这里硬件平台我用的是野火的霸道,配置如下 
 
 然后直接生成工程
然后直接生成工程
直接添加这一段函数重定向printf函数到串口输出   
#if 1
#include <stdio.h>
int fputc(int ch, FILE *stream)
{
/* 堵塞判断串口是否发送完成 */
while((USART1->SR & 0X40) == 0);
/* 串口发送完成,将该字符发送 */
USART1->DR = (uint8_t) ch;
return ch;
}
#endif6.编写Thermo 6 Click驱动#define     MAX31875_ADDR        0x48
#define     MAX31875_BATTERY_WRITE_ADDR    (MAX31875_ADDR << 1)
#define     MAX31875_BATTERY_READ_ADDR      ((MAX31875_ADDR << 1) + 1)
uint8_t MAX31875_Read_Byte(uint16_t addr, uint8_t* read_buf)
{
    return HAL_I2C_Mem_Read(&hi2c1, MAX31875_BATTERY_READ_ADDR, addr, I2C_MEMADD_SIZE_8BIT, read_buf, 2, 0xFFFF);
}
uint8_t MAX31875_Write_Byte(uint16_t addr, uint8_t* dat)
{
    return HAL_I2C_Mem_Write(&hi2c1, MAX31875_BATTERY_WRITE_ADDR, addr, I2C_MEMADD_SIZE_8BIT, dat, 1, 0xFFFF);
}
float MAX31875_Read_tem(void)
{
	uint8_t recv_buf[2];
	uint16_t temp_num;
	float temp;
	if(HAL_OK == MAX31875_Read_Byte(0X00,&recv_buf[0]))
	{
		temp_num = recv_buf[0]*256+recv_buf[1];
		temp = ((float)(temp_num>>4))/16.0;
		return temp;
	}
	return 0;
}下边是主函数
int main(void)
{
  /* USER CODE BEGIN 1 */
	float temp;
  /* USER CODE END 1 */
  /* MCU Configuration--------------------------------------------------------*/
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();
  /* USER CODE BEGIN Init */
  /* USER CODE END Init */
  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
	temp = MAX31875_Read_tem();
	printf("temp:%f\r\n",temp);
	HAL_Delay(1000);
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}7.展示测出值 福禄克表测出的值
福禄克表测出的值 好像差的不错哈,那天闲了上个云,检测一下家里的暖气,这次就到这吧.
好像差的不错哈,那天闲了上个云,检测一下家里的暖气,这次就到这吧.

 
					
				 
						
 
			
			
			
						
			 
					
				
 
					
				 
					
				 
					
				 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

