基于STM32F103——XGZP6847D压力传感器+串口打印

这篇具有很好参考价值的文章主要介绍了基于STM32F103——XGZP6847D压力传感器+串口打印。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基本介绍

概述

XGZP6847D 型压力传感器尺寸小、易安装,广泛用于医疗电子、汽车电子、消费电子、运动健身器材、
物联网等领域

产品特点

基于STM32F103——XGZP6847D压力传感器+串口打印

引脚的连接 (IIC通信)

基于STM32F103——XGZP6847D压力传感器+串口打印

名称含义的介绍

基于STM32F103——XGZP6847D压力传感器+串口打印

I2C通信协议 (设备地址是 0x6D)

基于STM32F103——XGZP6847D压力传感器+串口打印

寄存器描述

基于STM32F103——XGZP6847D压力传感器+串口打印

工作模式

寄存器

Reg0x30(测量命令寄存器)

  • Measurement_control<2:0>(工作模式)
  • 010b,组合采集模式(一次温度采集后立即进行一次传感器压力信号采集)。
  • 011b,休眠工作模式(定期的执行一次组合采集模式,间隔时间由‘sleep_time’决定)
  • Sleep_time<7:4>: 0001:62.5ms, 0010:125ms … 1111: 1s, 0000:无意义。(仅在休眠工作模式下有效)
  • Sco:数据采集完成标志位。1, 开始数据采集;0,采集结束(休眠工作模式除外)。

Reg0xA5

  • Aout_config<7:4>:模拟输出配置(建议保留默认配置)
  • LDO_config:内部 LDO 配置。0,配置成 1.8V;1,配置成 3.6V
  • Unipolar:0,ADC 原始数据以有符号数格式输出;1: ADC 原始数据以无符号格式输出。(仅当‘Data_out_control’=1 有效)
  • Data_out_control:0,输出校准数据;1,输出 ADC 原始数据(默认配置为 0)
  • Diag_on:0,关闭诊断功能;1,开启诊断功能(默认开启)

Reg0xA6

  • Input Swap:在传感器内部交换差分信号极性。
  • Gain_P<5:3>:采集传感器信号时 PGA 增益,000:增益=1X。001:增益=2X。010:增益=4X。011:增益=8X。100: 增益=16X。101:增益=32X。110: 增益=64X。111:增益=128X。
  • OSR_P<2:0>:采集传感器信号时的过采样,000:1024X, 001:2048X, 010:4096X, 011:8192X,100:256X, 101:512X, 110:16384X, 111:32768X。

模式说明

组合数据采集模式

基于STM32F103——XGZP6847D压力传感器+串口打印

休眠数据采集模式

基于STM32F103——XGZP6847D压力传感器+串口打印

代码编写

  • 这里我是选择 组合采集模式

    • Measurement_control<2:0>(工作模式) 设置为010b
  • 组合模式读取数据按照如下指令顺序进行操作(其他模式参考 0x30 寄存器定义相应调整即可):

    • 1、发送指令 0x0A(即 00001010)到 0x30 寄存器进行一次温度采集,一次压力数据采集。
    • 2、读取 0x30 寄存器地址,若 Sco 位为 0 代表采集结束,可以读取数据, 否则等待延迟 20ms 读取。
    • 3、读取 0x06、0x07、0x08 三个寄存器地址数据构成 24 位 AD 值(压力数据 AD 值),读取 0x09、0x0A
      两个寄存器地址数据构成 16 位 AD 值(温度数据 AD 值)。

等待模式可读

/**
 *	描述: XGZP6847模块等待可读压力和温度
 *	参数: 无
 * 	返回: 0:可读 1:不可读
 */
unsigned char xgzp6847_wait(void)
{
	unsigned char ack, data, status;

	/* 设置组合数据采集模式 */
	ack = xgzp6847_write_byte(0x30, 0x0A);
	if (ack)
	{
		return 1;
	}

	ack = xgzp6847_read_byte(0x30, &data);
	if (ack)
	{
		return 1;
	}
	
	/* 若 Sco 位为 0 代表采集结束 否则等待延迟 20ms 读取 */
	status = data & 0x08;
	if (status)
	{
		delay_ms(20);
	}	

	return 0;	
}

读取压力值

/**
 *	描述: XGZP6847模块读取压力
 *	参数: 无
 * 	返回: 读取到的压力(Pa)
 */
int xgzp6847_read_pressure(void)
{

	int pressure = 0;
	unsigned char pressure_H, pressure_M, pressure_L;
	
	xgzp6847_read_byte(DATA_MSB_ADDR, &pressure_H);	/* <23:16> */
	xgzp6847_read_byte(DATA_CSB_ADDR, &pressure_M);	/* <15:8> */
	xgzp6847_read_byte(DATA_LSB_ADDR, &pressure_L);	/* <7:0> */

	pressure |= (unsigned int)pressure_H << 16;
	pressure |= (unsigned int)pressure_M << 8;
	pressure |= (unsigned int)pressure_L << 0;

	
	/* 超过 8388606 为负压值 */
	if (pressure > 8388608)	//0x800000
	{
		pressure = (pressure - 16777216) / 64;
	}
	else
	{
		pressure = pressure / 64;
	}
	
	return pressure;	//单位为 Pa
}

读取温度值

/**
 *	描述: XGZP6847模块读取温度
 *	参数: 无
 * 	返回: 读取到的温度
 */
short xgzp6847_read_temperature(void)
{
	unsigned char temperature_H, temperature_L;
	unsigned short temperature = 0;

	xgzp6847_read_byte(TEMP_MSB_ADDR, &temperature_H);	/* <15:8> */
	xgzp6847_read_byte(TEMP_LSB_ADDR, &temperature_L);	/* <7:0> */

	temperature |= (unsigned short)temperature_H << 8;
	temperature |= temperature_L << 0;

	if (temperature > 32786)	//0x8000
	{
		temperature = (temperature - 65536) / 256;
	}
	else
	{
		temperature = temperature / 256;
	}
	
	return temperature;	/* °C */

}

主程序

/**
 *	描述: 读取压力和温度 并串口输出
 *	参数: 无
 *	返回: 无	 
 */
void xgzp6847_handler(void)
{
	int pressure = 0;
	short temperature = 0;

	pressure    = xgzp6847_read_pressure();
	temperature = xgzp6847_read_temperature();

	printf("pressure: %6d  temperature:%3d\r\n", pressure, temperature);	
}


int main()
{
	usart1_init(115200);	//串口1初始化   用于输出
	xgzp6847_init();

	while(1)
	{
		if (xgzp6847_wait())
		{
			continue;
		}
		xgzp6847_handler();	
		delay_ms(100);	/* 只是防止打印太快我看不清 */
	}  
}

最终效果

print("需要代码 +meQQ 844797079")

基于STM32F103——XGZP6847D压力传感器+串口打印

如果觉得这篇文章对你有用。欢迎大家点赞、评论哈哈文章来源地址https://www.toymoban.com/news/detail-424005.html

到了这里,关于基于STM32F103——XGZP6847D压力传感器+串口打印的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F103实现激光测距传感器测距WT-VL53L0 L1

    目录 本博客将采用标准库和HAL库实现 所用设备选择 引脚说明 与单片机的接线表 标准库实现  HAL库实现 本博客将采用 标准库 和 HAL库 实现 所用设备选择 单片机型号:STM32F103C8T6  激光测距传感器型号:WT-VL53L0 L1   采用串口TTL电平输出,可以接USB-TTL串口到电脑,或者直接接

    2024年02月14日
    浏览(19)
  • 【正点原子STM32连载】 第三十二章 光敏传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    本章,我们将学习使用STM32开发板板载的一个光敏传感器。我们还是要使用到ADC采集,通过ADC采集电压,获取光敏传感器的电阻变化,从而得出环境光线的变化,并在TFTLCD上面显示出来。 本章分为如下几个小节: 32.1 光敏传感器简介 32.2 硬件设计 32.3 程序设计 32.4 下载验证

    2024年02月03日
    浏览(39)
  • 【正点原子STM32连载】 第四十二章 DS18B20数字温度传感器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 本章,我们将介绍STM32F103如何读取外部温度传感器的温度,来得到较为准确的环境温度。我们将学习

    2024年02月04日
    浏览(21)
  • 基于stm32F103的座面声控台灯

            设计一个放置在桌面使用的台灯,使用220v交流电供电。具备显示屏能够实时显示日期(年、月、日和星期),时间(小时、分钟、秒)和温度(摄氏度);能够通过语音交互播报实时日期、时间或者温度;能够通过语音交互控制桌面台灯的开启与关闭(或者明暗

    2024年04月29日
    浏览(21)
  • 基于stm32F103的蜂鸣器周期发声实验

    蜂鸣器作为一种声音报警器件,应用广泛。本实验基于stm32F103单片机,通过控制蜂鸣器的IO口电平电压,使其周期性地进行电平翻转,从而驱动蜂鸣器发出周期性的鸣叫声。该实验主要运用了stm32的GPIO和定时器TIM的相关功能,不仅可以巩固这些外设的使用,也可以通过改变时间参数,控

    2024年02月21日
    浏览(18)
  • 基于STM32F103——AS608指纹模块+串口打印

    最近用STM32F103做一个智能门锁小玩意,其中用到指纹模块,我这里也单独的写一下笔记,不过我只是了解了基本的,就是我做门禁卡要用到的几个东西,其它还没了解。为了方便,做一下记录。我这里没有用到按键和显示屏,所以还是串口输出输入来控制了 哈哈哈哈 这里就

    2023年04月09日
    浏览(18)
  • 全网最全的MCU面试经(基于STM32F103)

    提示:写本文章的缘由:本人在秋招时复习STM32有关的知识点,便顺势记录下来。本文章的知识均属于各大论坛的大佬回答,其中也有我的一些补充,本文主要以自己对STM32的理解作为框架,并积极整理各个大佬的文章,因此属于借花献佛,也不存在任何牟利,分享的初衷是便

    2024年02月09日
    浏览(17)
  • 基于STM32F103HAL库的声音定位系统

    这是一道学校出的电赛题目,要求在100*100cm的平面上实现定位实现声音定位。由于一米太大了,我们就做了40cm的,下面的讲解我按照40厘米的写。用到的处理器是stm32f103c8t6接下来分享一下调试心得。 硬件部分需要制作发声装置和接收装置,详细可以

    2024年02月14日
    浏览(21)
  • 2021校赛基于stm32f103多功能台灯

    起源 又到了一学期一次的校内电子设计大赛,又到了激动人心的时刻每次电子设计大赛都会出现各种大佬展现他们的作品,对于我这种菜鸟也只能默默观望,但是呢,积极参与还是要有的,记得上一次参加做的基于51的避障小车直接买的套件焊好 然后在烧入程序就直接上战场

    2023年04月20日
    浏览(21)
  • STM32--基于STM32F103的MAX30102心率血氧测量

    本文介绍基于STM32F103ZET6+MAX30102心率血氧测量+0.96寸OLED(7针)显示(完整程序代码见文末链接) 一、简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。 MA

    2024年01月16日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包