总结——STM32F103C8T6通过MAX31865读取PT100电阻值

先看这个: 资料

                  申请软件著作权步骤_正在格式化……-CSDN博客_申请软件著作权

                  软件著作权的申请流程_正在格式化……-CSDN博客_软著补正邮寄地址

10月17日——10月23日调试总结

1.MAX31865

(1)简介

MAX31865是简单易用的热敏电阻至数字输出转换器,优化用于铂电阻温度检测器(RTD)。外部电阻设置RTD灵敏度,高精度Δ- Σ ADC将RTD电阻与基准电阻之比转换为数字输出。MAX31865输入具有高达±45V的过压保护,提供可配置的RTD及电缆开路、短路条件检测。

(2)特点和优点

集成更低系统功耗,简化设计,减少设计周期:
简便的RTD铂电阻之数字转换器;
支持100Ω至1kΩ (0°C时)铂电阻RTD (PT100至PT1000);
兼容于2线、3线和4线传感器连接;
SPI兼容接口;
20引脚TQFN和SSOP封装;
高精度设备满足误差预算:
15位ADC分辨率,标称温度分辨率为0.03125°C (随RTD非线性变化);
整个工作条件下,总精度保持在0.5°C (0.05%满量程);
全差分VREF输入;
转换时间:21ms (最大值);
集成故障检测,增加系统稳定性:
±45V输入保护;

故障检测(RTD开路、RTD短路到量程范围以外的电压或 RTD元件短路)。

(3)引脚图和引脚说明

(4)SPI读写数据传输时序图

(5)转换温度原理

(6)内部寄存器

(7)典型应用电路

          

(8)实际电路图(三线制)

2.PT100温度传感器

图中的两个红线中的任意一个和蓝线之间即为PT100电阻,二线制时只需要将两根红线中的一根和蓝线接入到电路即可,三线制时需要将三根线都接入电路。

3.液晶显示屏显示

使用TB1621驱动LCD进行显示。

4.程序代码

主函数:

#include "stm32f10x.h"
#include "usart.h"
#include "max31865.h"
#include "HT1621.h"
#include "stm32f10x_gpio.h"
#include "spi.h"

extern uint8_t  Data_Buffer[8];  
extern uint8_t DRDY_Status(void);
//extern void Inital_MAX31865(void) ;
extern uint8_t MAX31865_Config; 


 extern float Temperature;
int main(void)
{  
 
	GPIO_InitTypeDef GPIO_InitStructure;
	RCC_DeInit();	
	//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA , ENABLE);   
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);   

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PA.8
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;	//推挽式输出
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	//用PB0读取MAX31865的状态
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //PB.0
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ;	//浮空输入
	GPIO_Init(GPIOB, &GPIO_InitStructure); 
	
	uart_init(9600);
	printf("\r\nDetect\r\n");	
	
	GPIO_ResetBits(GPIOA, GPIO_Pin_8);//set 0
	
	delay_init();	 
	ht1621_GPIO_Init();
 	ht1621_Init();
	lcd_clear();//清屏
	
  <span style="white-space:pre">	</span>SPI1_Init();
	Max31865_Init();
	
	while(1)
	{
		Temperature = Get_Temperature();
		printf("temp=%f\r\n",Temperature);
		ht1621_TempDisplay(Temperature);
	}
}

5.总结

(1)PA4、PA5、PA6、PA7端口可以复用重映像为SPI的CS、SCK、MISO、MOSI,只需要将这四个端口配置为复用推挽输出GPIO_Mode_AF_PP即可:

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
 

(2)三线制中MAX31865的5引脚和6引脚应该是连接起来的,之前的PCB上由于马虎未连接;

(3)端口的输入模式

GPIO_Mode_AIN:模拟输入模式

GPIO_Mode_IN_FLOATING:浮空输入模式(复位后的状态)

GPIO_Mode_IPD:下拉输入模式

GPIO_Mode_IPU :上拉输入模式

(4)端口的输出模式

GPIO_Mode_Out_OD :通用开漏输出模式

GPIO_Mode_Out_PP:通用推挽输出模式

GPIO_Mode_AF_OD :复用开漏输出模式

GPIO_Mode_AF_PP: 复用推挽输出模式

(5) 在输出模式下,有2M、10M、50MHz三种输出速度可选择,这个速度是指I/O端口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关。

  GPIO_Speed_10MHz,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz


代码

有需要请加QQ:1447491726,进行详细的技术交流,共同进步。

  • 46
    点赞
  • 282
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大师兄电子工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值