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

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

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


主要找到了主机地址以及存温度值的寄存器,
主要就是温度值存在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.展示测出值
福禄克表测出的值
好像差的不错哈,那天闲了上个云,检测一下家里的暖气,这次就到这吧.

我要赚赏金
