历史上的今天
今天是:2025年04月23日(星期三)
2018年04月23日 | STM32F103C8T6通过MAX31865读取PT100电阻值
2018-04-23 来源:eefocus
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();//清屏
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
史海拾趣
|
我需要一个放大电路,它的要求是把我现有的一个0.6V的开关,放大成3.0V的开关,最后是要控制发光二极管亮灭,可以提供12.0V电源,哪位高人可以帮忙设计或有成品电路可以用请提供一下信息啊?… 查看全部问答> |
|
我是一个嵌入式linux开发的新手,现在想自学驱动开发,但是我一直有个疑问,请您指教: 我到底先读《linux设备驱动程序(第三版)》和宋老师编著的《linux设备驱动开发详解》哪一本书?我很苦恼。。。… 查看全部问答> |
|
c8051f 单片机(c2 ,jtag)和at89s5x单片机(isp)二合一串口编程下载线,支持3伏(c8051f 单片机),5伏(at89s5x单片机)电源, 目前通过实际验证可编程下载的芯片:c8051f310、c8051f320、c8051f330D、c8051f340、c8051f350、c8051f360、c8051f4 ...… 查看全部问答> |
|
1. 何处可以得到 STM32L151 的片子; 2. STM32L151 的内部时钟可以支持 USB吗? 3. IAR5.3 +jilink 7 可以支持STM32L151? 谢谢!… 查看全部问答> |
|
我设置了开机密码但是无法弹出软键盘,这样没办法进入系统也没办法关机,请教如何关闭密码或者调出软键盘 是windows CE6.0的 谢谢各位大大了! [ 本帖最后由 qty0 于 2011-7-28 20:21 编辑 ]… 查看全部问答> |




