TI MSP432P401R GY-906非接触式温度传感驱动程序

本文介绍了如何使用TI MSP432LaunchPad微控制器,结合GY-906非接触式温度传感器和OpenMV进行温度测量、报警阈值设置、人脸识别及口罩检测。通过SMBus协议与传感器交互,实现了四个按键控制的八页菜单系统。代码基于TI SDK和官方库函数,进行了STM32驱动程序的改编。
摘要由CSDN通过智能技术生成

        2022年电赛马上到了,笔者和队友这几天做了一下2020年的F题,简易温度测量和身份口罩学习的一个题目,总体完成情况还算可以,配合OpenMv,能够通过4个按键(上、下、确认、返回)进行八个页面之间的跳转,实现温度的测量、报警阈值上下限的修改、人脸的识别、现场人脸的学习以及口罩的识别和提醒。

        在此过程中用到了GY-906的非接触式温度传感器,所用协议是英特尔公司参照I2C协议设计的SMBus,我们用的主控芯片是ti公司免费申请的MSP432 LaunchPad,为了方便大家的学习和交流,在此附上msp432的gy906的驱动程序供大家参考,有不足欢迎大家指正。

说明:基于TI公司提供的SDK软件开发包,通过官方库函数,使用keil_5编写,环境不同可能需要修改相关配置

(源代码来自厂家提供的stm32的驱动程序,在此基础上修改而来)

gy-906_get_temp.h文件

#ifndef __MLX90614_H
#define __MLX90614_H

/* Includes ------------------------------------------------------------------*/
#include "driverlib.h"

/* Exported types ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
#define u8		uint8_t
#define u16		uint16_t
/* Exported functions ------------------------------------------------------- */

void SMBus_StartBit(void);
void SMBus_StopBit(void);
void SMBus_SendBit(u8);
u8 SMBus_SendByte(u8);
u8 SMBus_ReceiveBit(void);
u8 SMBus_ReceiveByte(u8);
void SMBus_Delay(u16);
void SMBus_Init(void);
u16 SMBus_ReadMemory(u8, u8);
u8 PEC_Calculation(u8*);
float SMBus_ReadTemp(void); //读取温度


#endif



gy-906_get_temp.c文件

/*******************************************************************************
* 文件名		: mlx90614.c
* 作  者	: 
* 版  本	: 
* 日  期	: 2013-08-07
* 描  述	: mlx90614函数
PB6:SCL
PB7:SDA
在主函数中先初始化SMBus_Init();
需要读取温度就调用temp=SMBus_ReadTemp();  //读取温度,temp是浮点数,转整数:i=ceil(temp); 
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "gy-906_get_temp.h"
#include "stdio.h"


/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define ACK	 	0 //应答
#define	NACK 	1 //无应答
#define SA				0x00 //Slave address 单个MLX90614时地址为0x00,多个时地址默认为0x5a
#define RAM_ACCESS		0x00 //RAM access command RAM存取命令
#define EEPROM_ACCESS	0x20 //EEPROM access command EEPROM存取命令
#define RAM_TOBJ1		0x07 //To1 address in the eeprom 目标1温度,检测到的红外温度 -70.01 ~ 382.19度
//P6.5->SCK
//P6.4->SDA
#define SMBUS_PORT				GPIO_PORT_P6	//P4端口(端口和下面的两个针脚可自定义)
#define SMBUS_SCK				GPIO_PIN5		//P6.5:SCK
#define SMBUS_SDA				GPIO_PIN4		//P6.4:SDA

#define SMBUS_SCK_H()	   		GPIO_setOutputHighOnPin(SMBUS_PORT,SMBUS_SCK)
#define SMBUS_SCK_L()	    	GPIO_setOutputLowOnPin(SMBUS_PORT,SMBUS_SCK)
#define SMBUS_SDA_H()	    	GPIO_setOutputHighOnP
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

m0_52552944

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

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

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

打赏作者

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

抵扣说明:

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

余额充值