历史上的今天
今天是:2025年02月12日(星期三)
2020年02月12日 | STM32程序之MAX6675热电偶温度读取
2020-02-12 来源:elecfans
第一次编写STM32程序,有很多问题请教,我想把MAX6675的SO的数据读出来转换成实际温度,用串口工具读出来。
电路是标准的SPI接法,SO没有上拉电阻。
MISO脚配置为浮空,没有做内部上拉。
用HAL很简单,CS拉低以后,一个SPI读两个字节进来,然后就是凑成12位,换算。
MAX6675文档强调是在时钟下降沿读取数据,因此将SPI2配置为:
view plain copyhspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128;
端口定义根据实际进行修改,这里使用了spi2
/*
*
* max667.h
*/
#ifndef _MAX6675_H
#define _MAX667_H
#include “stm32f1xx_hal.h”
#include “pinname.h”
#define K_PORT GPIOC
typedef struct {
int16_t v;
int8_t error;
} K_Value;
K_Value read_k(void);
#endif
不考虑前导D15,只是直接读。
[cpp] view plain copy/*
* max6675.c
*
*/
#include “max6675.h”
extern SPI_HandleTypeDef hspi2;
K_Value read_k(void)
{
uint8_t data_temp[2]; // [0] 高位 [1]低位
K_Value k;
// 拉低
HAL_GPIO_WritePin(K_PORT, K_CS, GPIO_PIN_RESET);
// 读取
HAL_SPI_Receive(&hspi2, &data_temp[0], 2, 1);
// D2 low: 正常 high: 开路
if (data_temp[1] & 0x4) {
// printf(“No Probern”);
k.v = 0;
k.error = 1;
}
else {
k.v = (int16_t)(( (data_temp[0] 《《 5) | (data_temp[1] 》》 3) ) * 0.25);
k.error = 0;
}
// 拉高
HAL_GPIO_WritePin(K_PORT, K_CS, GPIO_PIN_SET);
return k;
}
使用一个结构体,返回K的状态和读数。
因为热电偶是电阻测量,因此热电偶和MAX6675之间的连接必须可靠,连接处的电阻会影响读数。
史海拾趣
|
由于LCD本质上是一种选择性的滤光器,且环境照明产生的显示亮度往往不够,因此,必须在LCD的背面放置光源。放置背面光源的方法有好几种,不同的背面照明光源应用的场合有所不同。 早期的LCD背面照明主要用于膝上型电脑或笔记本电脑,由于这些设备 ...… 查看全部问答> |
|
请教一下我手头有个电路板上有个IC,5脚封装,上面两脚下面三脚,特小的封装,上面的字符貌似是CO-60Y又或者是CO-GOY,字太小看不清楚,搜索这两个都找不到相关资料。通过测量得知它的功能大概是这样:电源从3脚输入1脚输出,1脚跟5脚是通路,4脚输 ...… 查看全部问答> |
|
请教MAXII高手,maxii 570系列芯片的jatg下载电缆问题 我是刚刚接触CPLD的新手 我最近在尝试altera公司max2芯片570系列的作开发 用的软件是QII 到下载的时候 首先是不能识别硬件 装完驱动之后识别硬件,下载的时候有 “start”但是点了就ERROR 是不是MAXII570系列的JATG下载电缆不能 ...… 查看全部问答> |
|
EEWORLD大学堂----WEBENCH FPGA Architect功能导览 WEBENCH FPGA Architect功能导览:https://training.eeworld.com.cn/course/165… 查看全部问答> |
|
肖吉特我用了SS14,R1我用了2个100K的滑变,R2用了18K的电阻, 输入电压设置为6V输出调节滑变使之为9V,Vout接有51Ω的负载,不 断降低输入电压直到3.8V没有9V输出,把输入电压不断上升直到6.2v 才有9V输出,我想把5V升压到9,从6.2V降到5V时有9V ...… 查看全部问答> |




