日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出

發(fā)布時(shí)間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pt100測(cè)溫精度可達(dá)0.1度,測(cè)溫范圍-40度~125度

?

?

?

max31865.c文件

#include "max31865.h" #include "math.h" #include "usart.h" #include "delay.h" /* MAX31865 初始化 */ void MAX31865_Init(void) {GPIO_InitTypeDef GPIO_InitStructure ;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin = MAX31865_CS|MAX31865_SCLK|MAX31865_SDI;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(MAX31865_CONTROL_PORT,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = MAX31865_SDO|MAX31865_DRDY;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(MAX31865_CONTROL_PORT,&GPIO_InitStructure);MAX31865_CS_SET;MAX31865_SCLK_SET; }/* MAX31865 寫(xiě)寄存器 addr:寄存器地址 data:數(shù)據(jù) */ void MAX31865_Write(unsigned char addr, unsigned char data) {unsigned char i;MAX31865_CS_CLR;for(i=0;i<8;i++) //寫(xiě)地址{MAX31865_SCLK_CLR;if(addr&0x80) MAX31865_SDI_SET;else MAX31865_SDI_CLR;MAX31865_SCLK_SET;addr<<=1;}for(i=0;i<8;i++) //寫(xiě)數(shù)據(jù){MAX31865_SCLK_CLR;if(data&0x80) MAX31865_SDI_SET;else MAX31865_SDI_CLR;MAX31865_SCLK_SET;data<<=1;}MAX31865_CS_SET; }/* MAX31865 讀寄存器 addr:寄存器地址 */ unsigned char MAX31865_Read(unsigned char addr) {unsigned char i;unsigned char data=0;MAX31865_CS_CLR;for(i=0;i<8;i++) //寫(xiě)地址{MAX31865_SCLK_CLR;if(addr&0x80) MAX31865_SDI_SET;else MAX31865_SDI_CLR;MAX31865_SCLK_SET;addr<<=1;}for(i=0;i<8;i++) //讀數(shù)據(jù){MAX31865_SCLK_CLR;data<<=1; MAX31865_SCLK_SET; if(MAX31865_SDO_READ) data|=0x01;else data|=0x00;}MAX31865_CS_SET;return data; }/* MAX31865 配置*/ void MAX31865_Cfg(void) {MAX31865_Write(0x80, 0xC3); //BIAS ON,自動(dòng),4線(xiàn),50HZ 根據(jù)文件修改四線(xiàn)還是三線(xiàn) }/* MAX31865 獲取溫度 */ float MAX31865_GetTemp(void) { unsigned int data;float Rt;float Rt0 = 100; //PT100 float Z1,Z2,Z3,Z4,temp;float a = 3.9083e-3;float b = -5.775e-7;float rpoly;// MAX31865_Write(0x80, 0xD3);data=MAX31865_Read(0x01)<<8;data|=MAX31865_Read(0x02);data>>=1; //去掉Fault位printf("Read=%02X\r\n",data);Rt=(float)data/32768.0*RREF;printf("Rt=%.1f\r\n",Rt);Z1 = -a;Z2 = a*a-4*b;Z3 = 4*b/Rt0;Z4 = 2*b;temp = Z2+Z3*Rt;temp = (sqrt(temp)+Z1)/Z4;if(temp>=0) return temp;rpoly = Rt;temp = -242.02;temp += 2.2228 * rpoly;rpoly *= Rt; // squaretemp += 2.5859e-3 * rpoly;rpoly *= Rt; // ^3temp -= 4.8260e-6 * rpoly;rpoly *= Rt; // ^4temp -= 2.8183e-8 * rpoly;rpoly *= Rt; // ^5temp += 1.5243e-10 * rpoly;return temp; }

main.c文件

#include "max31865.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h"int main(void) { float temp;delay_init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);uart_init(115200);LED_Init();KEY_Init();MAX31865_Init();MAX31865_Cfg();printf("MAX31865 test\r\n");while(1){temp=MAX31865_GetTemp();printf("temp=%.3f\r\n",temp);}}

?

?

?

總結(jié)

以上是生活随笔為你收集整理的stm32f103c8t6通过max31865-pt100测温,软件spi通信串口1输出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。