这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 嵌入式开发» STM32» Thermo 6 Click + STM32 简单测温

共5条 1/1 1 跳转至

Thermo 6 Click + STM32 简单测温

高工
2020-12-01 13:02:34 打赏
1.开箱

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

2.找资料

听说是金主贸泽商城赞助的,咱直接去贸泽商城去找资料
可惜没找到手册,但具体芯片型号可以找到,MAX31875
顺藤摸瓜,我们直接搜索这个芯片,然后找手册.

3.分析手册

找到手册,可惜是英文的,大概看了下手册
主要找到了主机地址以及存温度值的寄存器, 主要就是温度值存在00H寄存器中,16位数据,是2的补码,以两个字节读出,位[15:3]包含温度数据,分辨率由01H寄存器决定,默认为40H,即为0.0625℃,有了这些数据,就开始写程序吧.

4.配置STM32

我直接用STM32CUBEMX配置一个串口和IIC,这里硬件平台我用的是野火的霸道,配置如下
然后直接生成工程

5.重定向printf函数到串口输出

直接添加这一段函数重定向printf函数到串口输出

#if 1 #include  int fputc(int ch, FILE *stream) { /* 堵塞判断串口是否发送完成 */ while((USART1->SR & 0X40) == 0); /* 串口发送完成,将该字符发送 */ USART1->DR = (uint8_t) ch; return ch; } #endif
6.编写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.展示

测出值福禄克表测出的值好像差的不错哈,那天闲了上个云,检测一下家里的暖气,这次就到这吧.




关键词: Click Thermo STM32

管理员
2020-12-01 13:42:42 打赏
2楼

前来打call


高工
2020-12-01 15:33:00 打赏
3楼

谢谢分享


专家
2020-12-02 22:19:16 打赏
4楼

动手能力强,加油



工程师
2020-12-09 22:42:20 打赏
5楼

测试搞的挺好


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]