在B-L475E-IOT01A和B-U585I-IOT02A
上使用传感器 60分钟
目标描述
本教程的目的是说明如何使用 stm32L4 Discovery 套件和 B-U585I-IOT02A Discovery 套件中的传感器进行测量。可对温度传感器进行分步配置。
完成本教程后,您将能够使用B-L475E-IOT01A板和B-U585I-IOT02A板上的传感器收集值。
本教程的附录提供了有关如何将AC6示例移植到STM32CubeIDE的指南。
先决条件
您已经遵循了:
硬件
文献
[隐藏]
STM32L4探索套件物联网节点(B-L475E-IOT01A)中提供的主要传感器包括:
本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。
1.2.1使用STM32CubeMX创建工作项目↑起点是使用STM32CubeMX生成的项目,如Step3教程: B-L475E-IOT01A上的UART I/F简介中所述。
BSP(板级支持包)驱动程序采用STM32CubeL4封装。这提供了与主板的硬件组件相对应的 API。
默认情况下,STM32CubeL4软件包的最新版本下载在STM32CubeMX存储库中:
C:\Users\user_name\STM32Cube\Repository\STM32Cube_FW_L4_Vx.xx.x。
下图显示了 BSP 位置及其内容:
信息 |
在本例中,使用的STM32CubeL4版本为1.11.0。版本可能会随着时间的推移而增加。 |
按照以下步骤将 BSP 驱动程序复制到您的项目:
* Keep only the following files under L4_IOT_Sensors\Drivers\BSP\B-L475E-IOT01:
* Keep only the following files under L4_IOT_Sensors\Drivers\BSP\Components:
添加的文件夹会自动显示在STM32CubeIDE工作区中:
更新路径以支持新的头文件:
以下屏幕截图总结了要遵循的步骤:
1.2.5更新源文件↑编辑 main.c,如下所示:
/* USER CODE BEGIN includes */
#include "stm32l475e_iot01.h"
#include "stm32l475e_iot01_tsensor.h"
#include <math.h>
/* USER CODE END Includes */
/* USER CODE BEGIN PV */
/* Private variables -------------------------------------------------------*/
float temp_value = 0; // Measured temperature value
char str_tmp[100] = ""; // Formatted message to display the temperature value
uint8_t msg1[] = "****** Temperature values measurement ******\n\n\r";
uint8_t msg2[] = "=====> Initialize Temperature sensor HTS221 \r\n";
uint8_t msg3[] = "=====> Temperature sensor HTS221 initialized \r\n ";
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart1,msg1,sizeof(msg1),1000);
HAL_UART_Transmit(&huart1,msg2,sizeof(msg2),1000);
BSP_TSENSOR_Init();
HAL_UART_Transmit(&huart1,msg3,sizeof(msg3),1000);
/* USER CODE END 2 *//
/* USER CODE BEGIN 3 */
temp_value = BSP_TSENSOR_ReadTemp();
int tmpInt1 = temp_value;
float tmpFrac = temp_value - tmpInt1;
int tmpInt2 = trunc(tmpFrac * 100);
snprintf(str_tmp,100," TEMPERATURE = %d.d\n\r", tmpInt1, tmpInt2);
HAL_UART_Transmit(&huart1,( uint8_t *)str_tmp,sizeof(str_tmp),1000);
HAL_Delay(1000);
/* USER CODE END 3 */
信息 |
只能对所需的USER CODE部分进行更新,以避免使用新的STM32CubeMX代码生成覆盖所有内容。 |
现在,您可以:
B-U585I-IOT02A 物联网节点探索套件中提供的主要传感器包括:
本节的目的是逐步说明如何与 HTS221 传感器连接以获取温度值并将其显示在终端上。
2.2.1使用STM32CubeMX创建工作项目↑使用 STM32CubeMX 创建一个新项目:
BSP(板级支持包)驱动程序采用STM32CubeU5封装。这提供了与主板的硬件组件相对应的 API。
默认情况下,STM32CubeU5 软件包的最新版本在 SMT32CubeMX 存储库中下载:
C:\Users\user_name\STM32Cube\Repository\STM32Cube_FW_U5_Vx.xx.x。
下图显示了 BSP 位置及其内容:
信息 |
在本例中,使用的STM32CubeU5版本为1.1.1。版本可能会随着时间的推移而增加。 |
以下是将 BSP 驱动程序复制到项目时要遵循的步骤:
* Keep only the following folders under U5_IOT_Sensors\Drivers\BSP\Components:
*Keep only the following folders under U5_IOT_Sensors\Drivers\BSP\B-U585-IOT02:
添加的文件夹会自动显示在STM32CubeIDE工作区中:
更新路径以支持新的头文件:
以下屏幕截图总结了要遵循的步骤:
2.2.5更新源文件↑编辑 main.c,如下所示:
/* USER CODE BEGIN Includes */
#include "b_u585i_iot02a.h"
#include "b_u585i_iot02a_env_sensors.h"
#include <math.h>
/* USER CODE END Includes */
/* USER CODE BEGIN PV */
/* Private variables -------------------------------------------------------*/
float temp_value = 0; // Measured temperature value
char str_tmp[100] = ""; // Formatted message to display the temperature value
uint8_t msg1[] = "****** Temperature values measurement ******\n\n\r";
uint8_t msg2[] = "=====> Initialize Temperature sensor HTS221 \r\n";
uint8_t msg3[] = "=====> Temperature sensor HTS221 initialized \r\n";
/* USER CODE END PV */
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart1,msg1,sizeof(msg1),1000);
HAL_UART_Transmit(&huart1,msg2,sizeof(msg2),1000);
BSP_ENV_SENSOR_Init(0, ENV_TEMPERATURE);
BSP_ENV_SENSOR_Enable(0, ENV_TEMPERATURE);
HAL_UART_Transmit(&huart1,msg3,sizeof(msg3),1000);
/* USER CODE END 2 *//
/* USER CODE BEGIN 3 */
BSP_ENV_SENSOR_GetValue(0, ENV_TEMPERATURE, &temp_value);
int tmpInt1 = temp_value;
float tmpFrac = temp_value - tmpInt1;
int tmpInt2 = trunc(tmpFrac * 100);
snprintf(str_tmp,100," TEMPERATURE = %d.d\n\r", tmpInt1, tmpInt2);
HAL_UART_Transmit(&huart1,( uint8_t *)str_tmp,sizeof(str_tmp),1000);
HAL_Delay(1000);
/* USER CODE END 3 */
信息 |
只能对所需的USER CODE部分进行更新,以避免使用新的STM32CubeMX代码生成覆盖所有内容。 |
现在,您可以:
DataLogTerminal 是本附录中使用的示例。 它位于:STM32CubeExpansion_MEMS1_V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal
信息 |
STM32CubeExpansion_MEMS1_V7.1.0 是 X-CUBE-MEMS 的提取物。随着时间的推移,可以从同一链接获得此包的最新版本。 |
警告 |
为了防止将来由于路径过长而导致的编译错误,建议将软件包放在 C: 下。 |
The X-NUCLEO-IKS01A2[4]是用于STM32 64引脚Nucleo的运动MEMS和环境传感器扩展板。它通过 I²C 总线引脚与 NUCLEO-L476RG 连接。
3.2示例:使用HTS221传感器获取温度值并显示在终端上(从AC6移植到STM32CubeIDE)↑本节的目的是逐步说明如何连接X-NUCLEO IKS01A2 HTS221传感器和NUCLEO-L476RG板,以获得温度值并将其显示在终端上。
3.2.1硬件设置↑readme.txt文件中的 STM32CubeExpansion_MEMS1_ V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal 下提供了 DataLogTerminal 示例的描述:
@par Example Description
Main function is to show how to use sensor expansion board to send sensor data from a Nucleo board using UART to a connected PC or desktop, and display it on generic applications like TeraTerm.
After connection has been established:
- The user can view the data from various on-board environment sensors such as temperature, humidity, and pressure
- The user can also view data from various on-board MEMS sensors such as accelerometer, gyroscope, and magnetometer.
3.2.3将示例移植到STM32CubeIDE↑
将基于 SW4STM32 的 DataLogTerminal 示例导入 STM32CubeIDE:STM32CubeExpansion_MEMS1_V7.1.0\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal
必须转换项目,并显示以下消息:
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved