我们的解决方案使您能够自信且轻松地应对与温度相关的挑战,从食品安全到气候控制。
A
A
硬件概览
它是如何工作的?
Thermo 11 Click基于德州仪器的TMP117,这是一款具有2线接口的高精度温度传感器IC。由于大多数测量电路已经集成在TMP117传感器上,Click板™本身的组件数量相对较少。I2C/SMBus兼容的串行接口线路和INT引脚(也在开漏配置中工作)由板载电阻上拉。2线线路路由到mikroBUS™的相应I2C线路(SCK和SDA),而INT引脚路由到mikroBUS™的INT引脚。传感器IC使用I2C/SMBus兼容通信接口。有十个寄存器,用于设置高低温限值、中断事件的温度滞后、存储所有工作参数的配置寄存器、保存采样温度数据的只读寄存器等。有关所有寄存器的更多信息,请参阅TMP117数据手册。不过,提供的库包含简化Thermo 11 Click使用的函数。附带的应用示例展示了它们的功能,可以作为自定义设计的参考。来自热传感器的模拟信号由内部ADC转换器采样,分辨率为16
位。由于高分辨率ADC,步长可以小至0.0078°C,具体取决于测量温度范围。用户可以配置设备报告多个温度转换的平均值,以减少转换结果中的噪声。设备累积这些转换结果,并在过程结束时报告所有收集结果的平均值。INT引脚用于触发主机MCU上的中断事件。该引脚具有可编程极性:可以通过在配置寄存器中设置POL位将其设置为高逻辑电平或低逻辑电平。由于Click板™具有上拉电阻,建议将极性设置为断言状态驱动引脚至低逻辑电平。采用特殊机制减少误报警触发。该机制包括在温度超过限值的循环中排队。ALERT引脚可以设置为两种不同模式:比较器模式和热模式。在比较器模式下,只要超过温度限值,此引脚就会被触发。INT引脚保持断言状态,直到温度下降到滞后水平以下。两个值都在相应的温度寄存器(限值和滞后)中设置。此模式适用于类似恒温器的应用:可用于在过
热时关闭系统或在温度足够低时关闭冷却风扇。如果设置为热模式,当温度超过高限值寄存器中的值时,INT引脚将保持断言状态。当温度下降到滞后水平以下时,INT引脚将被清除。此模式用于在生成中断事件时触发主机MCU上的中断,MCU应读取传感器。设备可以设置为几种不同的电源模式。它可以设置为连续采样温度测量,可以设置为单次模式,也可以设置为保持在关机模式。关机模式消耗最少的电量,保持除通信部分外的所有内部部分不供电。单次模式允许设备保持在关机模式,根据需要运行单个转换周期,然后返回到关机模式。这可以降低功耗。Click板™本身的设计减少了其他组件的热辐射,这些组件可能会影响传感器的环境温度读数。板载的SMD跳线标记为VCC SEL,允许选择与3.3V和5V MCU接口的电压。
功能概述
开发板
Nucleo-64 搭载 STM32F103RB MCU 提供了一种经济高效且灵活的平台,供开发者探索新想法并原型设计他们的项目。该板利用 STM32 微控制器的多功能性,使用户能够为他们的项目选择最佳的性能与功耗平衡。它配备了 LQFP64 封装的 STM32 微控制器,并包含了如用户 LED(同时作为 ARDUINO® 信号)、用户和复位按钮,以及 32.768kHz 晶体振荡器用于精确的计时操作等基本组件。Nucleo-64 板设计考虑到扩展性和灵活性,它特有的 ARDUINO® Uno
V3 扩展连接器和 ST morpho 扩展引脚头,提供了对 STM32 I/O 的完全访问,以实现全面的项目整合。电源供应选项灵活,支持 ST-LINK USB VBUS 或外部电源,确保在各种开发环境中的适应性。该板还配备了一个具有 USB 重枚举功能的板载 ST-LINK 调试器/编程器,简化了编程和调试过程。此外,该板设计旨在简化高级开发,它的外部 SMPS 为 Vcore 逻辑供电提供高效支持,支持 USB 设备全速或 USB SNK/UFP 全速,并内置加密功能,提升了项目的功效
和安全性。通过外部 SMPS 实验的专用连接器、 用于 ST-LINK 的 USB 连接器以及 MIPI® 调试连接器,提供了更多的硬件接口和实验可能性。开发者将通过 STM32Cube MCU Package 提供的全面免费软件库和示例得到广泛支持。这些,加上与多种集成开发环境(IDE)的兼容性,包括 IAR Embedded Workbench®、MDK-ARM 和 STM32CubeIDE,确保了流畅且高效的开发体验,使用户能够充分利用 Nucleo-64 板在他们的项目中的能力。
微控制器概述
MCU卡片 / MCU
建筑
ARM Cortex-M3
MCU 内存 (KB)
128
硅供应商
STMicroelectronics
引脚数
64
RAM (字节)
20480
你完善了我!
配件
Click Shield for Nucleo-64 配备了两个专有的 mikroBUS™ 插座,使得所有的 Click board™ 设备都可以轻松地与 STM32 Nucleo-64 开发板连接。这样,Mikroe 允许其用户从不断增长的 Click boards™ 范围中添加任何功能,如 WiFi、GSM、GPS、蓝牙、ZigBee、环境传感器、LED、语音识别、电机控制、运动传感器等。您可以使用超过 1537 个 Click boards™,这些 Click boards™ 可以堆叠和集成。STM32 Nucleo-64 开发板基于 64 引脚封装的微控制器,采用 32 位 MCU,配备 ARM Cortex M4 处理器,运行速度为 84MHz,具有 512Kb Flash 和 96KB SRAM,分为两个区域,顶部区域代表 ST-Link/V2 调试器和编程器,而底部区域是一个实际的开发板。通过 USB 连接方便地控制和供电这些板子,以便直接对 Nucleo-64 开发板进行编程和高效调试,其中还需要额外的 USB 线连接到板子上的 USB 迷你接口。大多数 STM32 微控制器引脚都连接到了板子左右边缘的 IO 引脚上,然后连接到两个现有的 mikroBUS™ 插座上。该 Click Shield 还有几个开关,用于选择 mikroBUS™ 插座上模拟信号的逻辑电平和 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换器,使用任何 Click board™,无论 Click board™ 是否在 3.3V 或 5V 逻辑电压电平下运行。一旦将 STM32 Nucleo-64 开发板与我们的 Click Shield for Nucleo-64 连接,您就可以访问数百个工作于 3.3V 或 5V 逻辑电压电平的 Click boards™。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
原理图
一步一步来
项目组装
实时跟踪您的结果
通过调试模式的应用程序输出
1. 一旦代码示例加载完成,按下 "DEBUG" 按钮将启动构建过程,并将其编程到创建的设置上,然后进入调试模式。
2. 编程完成后,IDE 中将出现一个带有各种操作按钮的标题。点击绿色的 "PLAY" 按钮开始读取通过 Click board™ 获得的结果。获得的结果将在 "Application Output" 标签中显示。
软件支持
库描述
该库包含 Thermo 11 Click 驱动程序的 API。
关键功能:
thermo11_get_temp
- 获取温度函数thermo11_sw_reset
- 软件重置命令thermo11_set_temp
- 设置温度函数
开源
代码示例
这个示例可以在 NECTO Studio 中找到。欢迎下载代码,或者您也可以复制下面的代码。
/*!
* \file
* \brief Thermo11 Click example
*
* # Description
* The application measures temperature
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes I2C serial interface and performs a software reset command
* and device configurations.
*
* ## Application Task
* Waits until data was ready and conversion cycle was done, and then reads
* the temperature and status data. The both data will be sent to the uart terminal with the limit status messages.
*
* *note:*
* The temperature that can be measured or written to the registers is in range from -256 to 255.9921875 Celsius degrees.
*
* \author MikroE Team
*
*/
// ------------------------------------------------------------------- INCLUDES
#include "board.h"
#include "log.h"
#include "thermo11.h"
// ------------------------------------------------------------------ VARIABLES
static thermo11_t thermo11;
static log_t logger;
// ------------------------------------------------------ APPLICATION FUNCTIONS
void application_init ( void )
{
log_cfg_t log_cfg;
thermo11_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.
thermo11_cfg_setup( &cfg );
THERMO11_MAP_MIKROBUS( cfg, MIKROBUS_1 );
thermo11_init( &thermo11, &cfg );
thermo11_sw_reset( &thermo11 );
thermo11_default_cfg( &thermo11 );
log_printf( &logger, "** Thermo 11 is initialized ** \r\n" );
log_printf( &logger, "************************************************ \r\n \r\n" );
Delay_ms( 500 );
}
void application_task ( void )
{
uint8_t response_check;
float temperature;
response_check = thermo11_get_int( &thermo11 );
while ( response_check == THERMO11_FLAG_IS_CLEARED )
{
response_check = thermo11_get_int( &thermo11 );
}
temperature = thermo11_get_temp( &thermo11, THERMO11_TEMPERATURE_REG );
response_check = thermo11_check_status( &thermo11 );
log_printf( &logger, "*Temperature is: %.2f \r\n", temperature );
if ( ( response_check & THERMO11_HIGH_ALERT_FLAG ) != THERMO11_FLAG_IS_CLEARED )
{
log_printf( &logger, "*HIGH limit detection! \r\n" );
}
if ( ( response_check & THERMO11_LOW_ALERT_FLAG ) != THERMO11_FLAG_IS_CLEARED )
{
log_printf( &logger, "*LOW limit detection! \r\n" );
}
}
void main ( void )
{
application_init( );
for ( ; ; )
{
application_task( );
}
}
// ------------------------------------------------------------------------ END