STM32 SPI通信协议3——读取MAX6675温度传感器

         在上两章中,我们已经配置了相应的GPIO和SPI功能。这里说一下MAX6675如何读取温度。

 

        从MAX6675手册中我们可以看到,当\overline{CS}==0的时候SCK启动,数据线开始发送信息,此时可以读取数据,当数据读完后,再拉高电平停止发送。

int main(void)
{u16 max6675;SPI1_Configuration();while(1){MAX6675_CS_LOW;max6675 = SPI_read();MAX6675_CS_HIGH;}
}
#ifndef __BSP_SPI_H__
#define __BSP_SPI_H__
#include <stm32f10x.h>#define MAX6675_CS_LOW GPIO_WriteBit(GPIOA,GPIO_Pin_4,Bit_RESET)
#define MAX6675_CS_HIGH GPIO_WriteBit(GPIOA,GPIO_Pin_4,Bit_SET)void SPI1_Configuration(void);
u16 SPI_read(void);
#endif

    SPI_I2S_SendData():通过外设SPIx发送一个数据。

参数一:SPIx,例如SPI1,SPI2。

参数二:Data(待发送数据)

        当\overline{CS}==0的时候,MAX6675启动,此时你需要发送一个激励给他,让他启动,启动后MAX6675开始发送数据,这时候就要用到SPI_I2S_ReceiveData开始接收数据。

        SPI_I2S_ReceiveData():通过SPIx接收数据。

参数一:SPIx,例如SPI1,SPI2。

u16 SPI_read(void)
{SPI_I2S_SendData(SPI1,0x00);return SPI_I2S_ReceiveData(SPI1);
}

        SPI_GetFlagStatus():判断SPI标志位。

参数一:SPIx,例如SPI1,SPI2。

参数二:SPI_FLAG,待检查的SPI标志位

SPI_FLAG描述
SPI_FLAG_BSY忙标志位
SPI_FLAG_OVR超出标志位
SPI_FLAG_MODF模式错位标志位
SPI_FLAG_CRCERRCRC错误标志位
SPI_FLAG_TXE发送缓存空标志位
SPI_FLAG_RXNE接受缓存非空标志位

        无论是发送还是接收都要判断一下标志位,因为串行通信的缓冲区只有一个,即是发送缓冲区,也是接收缓冲区。所以我们要判断一下标志位看一下标志位是否为空(使用SPI_FLAG_TXE),如果不为空就一直等待。接收的时候也是如此。

u16 SPI_read(void)
{while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);SPI_I2S_SendData(SPI1,0x00);while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);return SPI_I2S_ReceiveData(SPI1);
}

从MAX6675的数据手册能看到D15是虚假的位,D14-D3是我们的温度数据位,D2在正常工作时为0(低电平)。

温度值=1023.75*转换后的数字量/4095

int main(void)
{u16 max6675;u16 temp;float temperature;unsigned int flag_D2;SPI1_Configuration();Uart1_Configuration();while(1){MAX6675_CS_LOW;max6675 = SPI_read();MAX6675_CS_HIGH;flag_D2=(max6675 & 0x4); //取出max6675的第2位if(flag_D2 == 0){temp=max6675 << 1;temp=temp>>4;temperature=temp*=0.25;printf("Temperature = %4.2f\n",temperature);}elseprintf("MAX6675 Sensor is broken\n");Delay_s(1);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617366.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware workstation安装MX-23.1虚拟机并配置网络

VMware workstation安装MX-23.1虚拟机并配置网络 MX Linux是基于Debian稳定分支的面向桌面的Linux发行&#xff0c;采用Xfce作为缺省桌面&#xff0c;是一份中量级操作系统。该文档适用于在VMware workstation平台安装MX-23.1虚拟机。 1.安装准备 1.1安装平台 Windows 11 …

.nfsxxxxxx文件无法删除

先&#xff1a; sudo apt-get update sudo apt-get install lsof然后&#xff1a; lsof 文件路径 输出&#xff1a; 37012是id号 kill -9 id号 参考文章&#xff1a; 如何删除服务器出现的.nfs文件-CSDN博客 如何删除.nfs00000xxxx文件_.nfs0000000000004cca0000002a-CSDN博…

【MATLAB】MVMD_LSTM神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 MVMD-LSTM神经网络时序预测算法是一种结合了多变量经验模态分解&#xff08;Multivariate Multiscale Decomposition&#xff0c;MMD&#xff09;和长短期记忆神经网络&#xff08;LSTM&a…

虚幻UE 材质-材质编辑器节点 1

之前的几篇文章基本上都是对一些材质名词进行讲解 而这篇文章会对材质编辑器中的常用节点和常用用法进行讲解 文章目录 前言一、Add添加二、BumpOffset凹凸偏移三、Divide划分除法四、Power亮度/对比度五、MaterialFunctionCall材质函数六、If通道提取七、Lerp线性插值八、Mult…

Docker之概述与安装

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《Docker之概述与安装》。&#x1f3af;&#x1f…

13个自媒体文库平台(附通道链接)

​划到最后“阅读原文” ——进入官网 Hi&#xff0c;大家好&#xff0c;我是胡猛夫&#xff0c;每天分享实用运营工具&#xff01; 更多内容&#xff0c;更多资源&#xff0c;欢迎交流&#xff01; 公 号 | 微视角文化 》》精彩推荐 >>微视角文化知识库&#xff1a;移…

com.fasterxml.jackson.databind.exc.InvalidFormatException异常

报错 com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.xxx.BType` from number 3: index value outside legal index range [0..2]\n at [

深入理解UML中的继承关系

深入理解UML中的继承关系 在面向对象的设计中&#xff0c;继承关系是构建清晰、可维护系统的关键。统一建模语言&#xff08;UML&#xff09;提供了一种标准化的方法来可视化这些关系。本文将深入探讨UML中的继承关系&#xff0c;并探讨它如何在代码中体现。 什么是继承关系&a…

Selenium的使用

Selenium 是一个自动化测试工具&#xff0c;它主要用于自动化网络应用程序的测试。不过&#xff0c;除了测试之外&#xff0c;它也常用于自动执行各种浏览器操作&#xff0c;比如自动填写表单、抓取网页数据、点击、下拉等。同时还可以获取浏览器当前所呈现的页面的源代码&…

【VRTK】【Unity】【游戏开发】更多技巧

课程配套学习项目源码资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【概述】 本篇将较为零散但常用的VRTK开发技巧集合在一起,主要内容: 创建物理手震动反馈高亮互动对象【创建物理手】 非物理手状态下,你的手会直接…

Vue+ElementUI+Axios实现携带参数的文件上传(数据校验+进度条)

VueElementUIAxios实现携带参数的文件上传&#xff08;数据校验进度条&#xff09; 可以实现对上传文件的类型&#xff0c;大小进行数据校验&#xff0c;以及对上传文件所要携带的数据也进行的校验&#xff0c;也有文件上传进度的进度条。 一、Vue 结构部分 弹窗显示&#xff0…

【服务器数据恢复】服务器硬盘磁头损坏的数据恢复案例

服务器硬盘故障&#xff1a; 一台服务器上raid阵列上有两块硬盘出现故障&#xff0c;用户方已经将故障硬盘送到其他机构检测过&#xff0c;其中一块硬盘已经开盘&#xff0c;检测结果是盘片损伤严重&#xff1b;另一块硬盘尚未开盘&#xff0c;初步判断也存在硬件故障&#xff…

基于kafka_exporterprometheusgrafana的kafka监控实现

一、安装配置kafka_exporter 下载kafka_exporter wget http://*.*.*.45:10000/prometheus/kafka_exporter-1.4.2.linux-amd64.tar.gz tar -zxcf kafka_exporter-1.4.2.linux-amd64.tar.gz启动kafka_exporter ./kafka_exporter --kafka.server*.*.*.77:8423 --kafka.server*.…

【Java面试题】char 和 varchar 的区别

1. 最大长度 char 最大长度是 255字符&#xff0c;而 varchar 最大长度是 65535 个字节。 2.定长与可变长 char 是定长的&#xff0c;不足的部分用隐藏空格填充&#xff0c;而 varchar 是不定长的。 3.空间使用 char 会浪费空间&#xff0c;因为其长度固定&#xff0c;所以…

UCB Data100:数据科学的原理和技巧:第十三章到第十五章

十三、梯度下降 原文&#xff1a;Gradient Descent 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 学习成果 优化复杂模型 识别直接微积分或几何论证无法帮助解决损失函数的情况 应用梯度下降进行数值优化 到目前为止&#xff0c;我们已经非常熟悉选择模型和相应损…

机器学习-决策树

1、什么是决策树&#xff1f; 一种描述概念空间的有效的归纳推理办法。基于决策树的学习方法可以进行不相关的多概念学习&#xff0c;具有简单快捷的优势&#xff0c;已经在各个领域取得广泛应用。 决策树是一种树型结构&#xff0c;其中每个内部结点表示在一个属性上的测试&a…

Unity插件开发笔记

插件特点&#xff0c;无需运行可进行编译。 分为3大类插件&#xff1a;菜单项相关操作、自定义Inspector检视面板、自定义操作界面。 一.菜单项相关操作的插件分为4种&#xff1a;包含MenuItem菜单项插件、AddComponentMenu组件菜单插件、ContextMenu上下文菜单插件、Require…

[BUG] docker: unknown server OS: .

前言 我在运行docker时候&#xff0c;使用 docker run 出现了这样的bug 解决 可以先查看 docker images -a&#xff0c;然后提示我说 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2F…

【我的RUST库】get_local_info 0.2.0发布

get_local_info是一个获取linux本地信息的Rust三方库&#xff0c;其目标是降低获取本地linux系统信息的难度。支持银河麒麟10、UOS、鸿蒙等国产系统。 项目维护&#xff1a;长期 当前功能&#xff1a; 1.网络功能 1.1.获取网络接口信息 1.2 获取活动网卡信息&#xff1a;网…

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-tcp编程练习(物联技术666)

点赞+关注,功德无量。更多配套资料,欢迎私信。 网盘链接:百度网盘 请输入提取码 WebServer编程: -------------------------------------- #include <stdio.h> #include <stdlib.h> #include <string.h> #i…