使用max31865读取PT100温度
生活随笔
收集整理的這篇文章主要介紹了
使用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; //使能SPISPI1_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
總結
以上是生活随笔為你收集整理的使用max31865读取PT100温度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀清明节维护服务器,王者荣耀4.4
- 下一篇: HCNP学习笔记之HCNP学习的几种境界