信赖我们的数字压力测量解决方案,以提高您的运营效率,优化资源并最大化生产力。
A
A
硬件概览
它是如何工作的?
Pressure 9 Click基于Infineon的DPS422,这是一款数字气压传感器。它可用于测量300到1200hPa的绝对压力值。该传感器包含一个高度精确的基于电容的微机电系统(MEMS),以及一个高分辨率的24位Σ-Δ A/D转换器(ADC)。MEMS还具有一组工厂校准参数,存储在其OTP存储器中。这些参数允许进行高精度的压力和温度数据转换,生成以物理单位表示的结果。通过调整过采样比率,开发者可以根据应用需求在精度、速度(输出数据率)和功耗之间找到最佳平衡。MEMS由一组被膜覆盖的管状真空单元组成。施加压力时,单元的电容会成比例地变化。多个真空单元并联连接,以提高灵敏度并减少噪声。单元的电容被测量并转换为电压,该电压由内部24位ADC采样。结果可以通过I2C或SPI接口获取,具体取决于COMM SEL跳线的位置。转换公式会应用于
原始结果值,提供以人类可读格式表示的压力和温度值。Pressure 9 Click支持SPI和I2C通信接口,使其可以与各种不同的MCU一起使用。通过将分组在COM SEL下的SMD跳线移动到适当位置(SPI或I2C),可以选择通信接口。当在I2C模式下运行时,还可以通过SMD跳线配置从I2C地址:标记为ADD SEL的SMD跳线用于设置I2C地址的最低有效位(LSB)。设置为0时,7位I2C从机地址变为0b1110110x;设置为1时,地址变为0b1110111x。最后一位(x)是R/W位。请注意,每个跳线都应移动到相同的位置,否则可能无法与主机MCU通信。DPS422的一个显著特点是具有32个槽的FIFO缓冲区,可以缓冲压力和温度读数。FIFO缓冲区可以用作传入数据的临时存储,减少通过通信总线的数据流量。FIFO缓冲区在编写优化的MCU固件时非常有用。存储在
FIFO缓冲区中的结果的最低有效位(LSB)确定存储的数据是压力还是温度(1表示压力,0表示温度)。FIFO状态寄存器中的一位指示缓冲区是否已满或是否达到水位线。FIFO缓冲区也可以禁用,允许直接从输出寄存器获取数据。压力和热数据以24位二进制补码格式在输出中可用。要将原始数据转换为人类可读格式,主机MCU的固件必须获取校准数据。然后在压力或温度转换公式中使用校准系数。所需的公式可以在DPS422的数据手册中找到。然而,这个Click board™配备了与mikroSDK兼容的函数库,简化了固件开发。开发者可以使用简单的函数调用,执行所有必要的数据转换,返回以人类可读格式表示的压力和热数据。该Click Board™设计为仅使用3.3V逻辑电平。应在使用工作在5V的MCU之前进行适当的逻辑电压电平转换。
功能概述
开发板
Nucleo 32开发板搭载STM32F031K6 MCU,提供了一种经济且灵活的平台,适用于使用32引脚封装的STM32微控制器进行实验。该开发板具有Arduino™ Nano连接性,便于通过专用扩展板进行功能扩展,并且支持mbed,使其能够无缝集成在线资源。板载集成
ST-LINK/V2-1调试器/编程器,支持通过USB重新枚举,提供三种接口:虚拟串口(Virtual Com port)、大容量存储和调试端口。该开发板的电源供应灵活,可通过USB VBUS或外部电源供电。此外,还配备了三个LED指示灯(LD1用于USB通信,LD2用于电源
指示,LD3为用户可控LED)和一个复位按钮。STM32 Nucleo-32开发板支持多种集成开发环境(IDEs),如IAR™、Keil®和基于GCC的IDE(如AC6 SW4STM32),使其成为开发人员的多功能工具。

微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
32
硅供应商
STMicroelectronics
引脚数
32
RAM (字节)
4096
你完善了我!
配件
Click Shield for Nucleo-32是扩展您的开发板功能的理想选择,专为STM32 Nucleo-32引脚布局设计。Click Shield for Nucleo-32提供了两个mikroBUS™插座,可以添加来自我们不断增长的Click板™系列中的任何功能。从传感器和WiFi收发器到电机控制和音频放大器,我们应有尽有。Click Shield for Nucleo-32与STM32 Nucleo-32开发板兼容,为用户提供了一种经济且灵活的方式,使用任何STM32微控制器快速创建原型,并尝试各种性能、功耗和功能的组合。STM32 Nucleo-32开发板无需任何独立的探针,因为它集成了ST-LINK/V2-1调试器/编程器,并随附STM32全面的软件HAL库和各种打包的软件示例。这个开发平台为用户提供了一种简便且通用的方式,将STM32 Nucleo-32兼容开发板与他们喜欢的Click板™结合,应用于即将开展的项目中。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
实时跟踪您的结果
应用程序输出
1. 应用程序输出 - 在调试模式下,“应用程序输出”窗口支持实时数据监控,直接提供执行结果的可视化。请按照提供的教程正确配置环境,以确保数据正确显示。

2. UART 终端 - 使用UART Terminal通过USB to UART converter监视数据传输,实现Click board™与开发系统之间的直接通信。请根据项目需求配置波特率和其他串行设置,以确保正常运行。有关分步设置说明,请参考提供的教程。

3. Plot 输出 - Plot功能提供了一种强大的方式来可视化实时传感器数据,使趋势分析、调试和多个数据点的对比变得更加直观。要正确设置,请按照提供的教程,其中包含使用Plot功能显示Click board™读数的分步示例。在代码中使用Plot功能时,请使用以下函数:plot(insert_graph_name, variable_name);。这是一个通用格式,用户需要将“insert_graph_name”替换为实际图表名称,并将“variable_name”替换为要显示的参数。

软件支持
库描述
该库包含Pressure 9 Click驱动程序的 API。
关键功能:
pressure9_get_pressure_data
- 获取以毫巴(mBar)为单位的压力数据pressure9_get_temperature_data
- 获取以摄氏度(C)为单位的温度数据pressure9_configuration
- 向配置寄存器写入数据
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* \file
* \brief Pressure9 Click example
*
* # Description
* The demo application displays the pressure and temperature
* measurement using Pressure 9 click.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization the driver, test comunication, and performs the click
* default configuration.
*
* ## Application Task
* Reads Temperature data in [C] and Pressure data in [mBar] and this
* data logs to the USB UART every 2 sec.
*
* \author Jovan Stajkovic
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "pressure9.h"
// ------------------------------------------------------------------ VARIABLES
static pressure9_t pressure9;
static log_t logger;
static float temperature;
static float pressure;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
pressure9_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
pressure9_cfg_setup( &cfg );
PRESSURE9_MAP_MIKROBUS( cfg, MIKROBUS_1 );
pressure9_init( &pressure9, &cfg );
Delay_ms ( 100 );
// Test comunication
uint8_t product_id = 0;
pressure9_generic_read( &pressure9, PRESSURE9_REG_PRODUCT_ID, &product_id, 1 );
if ( PRESSURE9_PRODUCT_ID != product_id )
{
log_error( &logger, "Read product ID." );
for ( ; ; );
}
pressure9_default_cfg( &pressure9 );
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
pressure = pressure9_get_pressure_data( &pressure9 );
log_printf( &logger, " Pressure: %.2f mBar\r\n", pressure );
temperature = pressure9_get_temperature_data( &pressure9 );
log_printf( &logger, " Temperature: %.2f degC\r\n", temperature );
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
/*!
* \file
* \brief Pressure9 Click example
*
* # Description
* The demo application displays the pressure and temperature
* measurement using Pressure 9 click.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initialization the driver, test comunication, and performs the click
* default configuration.
*
* ## Application Task
* Reads Temperature data in [C] and Pressure data in [mBar] and this
* data logs to the USB UART every 2 sec.
*
* \author Jovan Stajkovic
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "pressure9.h"
// ------------------------------------------------------------------ VARIABLES
static pressure9_t pressure9;
static log_t logger;
static float temperature;
static float pressure;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
pressure9_cfg_t cfg;
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
pressure9_cfg_setup( &cfg );
PRESSURE9_MAP_MIKROBUS( cfg, MIKROBUS_1 );
pressure9_init( &pressure9, &cfg );
Delay_ms ( 100 );
// Test comunication
uint8_t product_id = 0;
pressure9_generic_read( &pressure9, PRESSURE9_REG_PRODUCT_ID, &product_id, 1 );
if ( PRESSURE9_PRODUCT_ID != product_id )
{
log_error( &logger, "Read product ID." );
for ( ; ; );
}
pressure9_default_cfg( &pressure9 );
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
pressure = pressure9_get_pressure_data( &pressure9 );
log_printf( &logger, " Pressure: %.2f mBar\r\n", pressure );
temperature = pressure9_get_temperature_data( &pressure9 );
log_printf( &logger, " Temperature: %.2f degC\r\n", temperature );
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:压力