0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32H5開發(fā)(7)----LCD顯示TOF檢測(cè)數(shù)據(jù)

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2023-12-01 16:46 ? 次閱讀

概述

"自主模式"(Autonomous mode)通常指的是設(shè)備或系統(tǒng)能夠在沒有外部輸入的情況下獨(dú)立完成任務(wù)。對(duì)于傳感器,如VL53L5,自主模式可能意味著傳感器可以獨(dú)立、定期地進(jìn)行測(cè)量,而不需要來自主控制器或主機(jī)的每一次單獨(dú)指令。

最近在弄ST的課程,需要樣片的可以加群申請(qǐng):615061293 。

在這里插入圖片描述
選擇使用自主模式的原因可能包括:
簡(jiǎn)化控制:一旦配置完成,傳感器可以獨(dú)立工作,減少主控制器與傳感器之間的通信需求。
穩(wěn)定的測(cè)量頻率:在自主模式下,傳感器可以以固定的頻率進(jìn)行測(cè)量,從而確保數(shù)據(jù)的穩(wěn)定性和連續(xù)性。
減少響應(yīng)延遲:由于傳感器持續(xù)地或定期地進(jìn)行測(cè)量,數(shù)據(jù)可能會(huì)更快地準(zhǔn)備好,從而減少了從請(qǐng)求到獲取數(shù)據(jù)的延遲。
主控制器工作量減少:主控制器可以被釋放出來執(zhí)行其他任務(wù),而不是持續(xù)地向傳感器發(fā)送測(cè)量命令。
低功耗應(yīng)用:對(duì)于某些傳感器,自主模式可能更加能效,因?yàn)樗梢栽跍y(cè)量之間進(jìn)入低功耗狀態(tài)。
實(shí)現(xiàn)預(yù)定任務(wù):自主模式允許傳感器在特定條件下執(zhí)行預(yù)定的任務(wù),例如當(dāng)檢測(cè)到某個(gè)特定值時(shí)觸發(fā)警報(bào)。
然而,是否使用自主模式取決于特定的應(yīng)用需求。有些應(yīng)用可能更傾向于連續(xù)模式,其中主控制器更頻繁地與傳感器交互,以獲得實(shí)時(shí)數(shù)據(jù)或更高的控制精度。

視頻教學(xué)

[https://www.bilibili.com/video/BV1xc411d79n/](

樣品申請(qǐng)

[https://www.wjx.top/vm/OhcKxJk.aspx#]

在這里插入圖片描述

源碼下載

[https://download.csdn.net/download/qq_24312945/88482187]

自主模式與連續(xù)模式區(qū)別

VL53L5CX 傳感器的自主模式 (AUTONOMOUS) 和連續(xù)模式 (CONTINUOUS) 都允許連續(xù)的測(cè)量操作,但它們的工作方式和使用場(chǎng)景略有不同:
連續(xù)模式 (CONTINUOUS):
● 在此模式下,傳感器連續(xù)進(jìn)行測(cè)量,每次測(cè)量后,就會(huì)產(chǎn)生一個(gè)新的結(jié)果。
● 傳感器會(huì)盡可能快地測(cè)量,基于所設(shè)置的時(shí)間預(yù)算。
● 主機(jī)通常需要周期性地從傳感器中讀取數(shù)據(jù)。
● 適用于需要高更新率或?qū)崟r(shí)響應(yīng)的應(yīng)用。
自主模式 (AUTONOMOUS):
● 傳感器獨(dú)立地進(jìn)行測(cè)量,而無需主機(jī)的常規(guī)干預(yù)。
● 主機(jī)可以進(jìn)入低功耗休眠模式,而傳感器仍然獨(dú)立地執(zhí)行測(cè)量。當(dāng)傳感器完成測(cè)量時(shí),它可以通過中斷喚醒主機(jī),通知它讀取數(shù)據(jù)。
● 這種模式特別適用于低功耗應(yīng)用,因?yàn)榇蟛糠謺r(shí)間主機(jī)可以處于休眠狀態(tài)。
● 這種模式可能與設(shè)置的測(cè)量頻率或時(shí)間間隔一起使用,以確定傳感器執(zhí)行測(cè)量的頻率。
總的來說,選擇哪種模式取決于應(yīng)用的需求。如果需要實(shí)時(shí)的高更新率數(shù)據(jù),則連續(xù)模式可能更合適;而對(duì)于低功耗或不需要實(shí)時(shí)數(shù)據(jù)的應(yīng)用,自主模式可能是更好的選擇。

硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是自己繪制的開發(fā)板,需要的可以進(jìn)行申請(qǐng)。
在這里插入圖片描述

串口配置

查看原理圖,PB14和PB15設(shè)置為開發(fā)板的串口。

在這里插入圖片描述

配置串口。

在這里插入圖片描述

IIC配置

在這個(gè)應(yīng)用中,VL53L5CX模塊通過I2C(IIC)接口與主控器通信。具體來說,VL53L5CX模塊的I2C引腳連接到主控器的PC8和PC9兩個(gè)IO口。

在這里插入圖片描述

配置IIC為快速模式,速度為400k。

在這里插入圖片描述

INT設(shè)置

自主模式可以通過獲取INT管腳進(jìn)行判斷數(shù)據(jù)是否準(zhǔn)備好。

在這里插入圖片描述

配置PA8為輸入模式。

在這里插入圖片描述

配置使能與復(fù)位

驅(qū)動(dòng)中有對(duì)模塊進(jìn)行復(fù)位的操作。

在這里插入圖片描述

配置PC7和PA9為輸出管腳。

在這里插入圖片描述

X-CUBE-TOF1

本節(jié)介紹在不需要使用樣例應(yīng)用時(shí)如何使用STM32CubeMX將X-CUBE-TOF1軟件包添加到項(xiàng)目中。有了這樣的設(shè)置,就只配置了驅(qū)動(dòng)層。

在這里插入圖片描述

由于需要自主模式,所以可以不開啟主程序TOF執(zhí)行代碼。

在這里插入圖片描述

串口重定向

打開魔術(shù)棒,勾選MicroLIB
在這里插入圖片描述

在main.c中,添加頭文件,若不添加會(huì)出現(xiàn) identifier "FILE" is undefined報(bào)錯(cuò)。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數(shù)聲明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
	HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}
/* USER CODE END PFP */

代碼配置

在custom_ranging_sensor.c代碼中,有IO口驅(qū)動(dòng)VL53L5CX進(jìn)行復(fù)位的代碼,由于沒有配置對(duì)應(yīng)的IO,所以需要注釋掉。
在這里插入圖片描述

由于沒加載串口定義,所以注釋掉#include "custom.h"
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

TOF代碼配置

在main.c中添加刷新速率,500ms刷新一次,所以頻率為2Hz。

/* USER CODE BEGIN Includes */
#include "lcd_init.h"
#include "lcd.h"
#include "pic.h"

#include "stdio.h"
#include "custom_ranging_sensor.h"

#define TIMING_BUDGET (5U) /* 5 ms < TimingBudget < 1000 ms */
#define RANGING_FREQUENCY (200U) /* Ranging frequency Hz (shall be consistent with TimingBudget value) */
#define POLLING_PERIOD (1000U/RANGING_FREQUENCY) /* refresh rate for polling mode (milliseconds) */


/* USER CODE END Includes */

函數(shù)與變量定義:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
	HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
	return ch;
}

static uint8_t map_target_status(uint8_t status);
//將從VL53L5CX傳感器獲取的數(shù)據(jù)轉(zhuǎn)換
static int32_t convert_data_format(VL53L5CX_Object_t *pObj,VL53L5CX_ResultsData *data, RANGING_SENSOR_Result_t *pResult);
//打印數(shù)據(jù)
static void print_result(RANGING_SENSOR_Result_t *Result);
static RANGING_SENSOR_ProfileConfig_t Profile;
static int32_t status = 0;
static RANGING_SENSOR_Result_t Result;
/* USER CODE END PFP */

添加TOF初始化。
若需要為8*8,修改對(duì)應(yīng)vl53l5cx_set_resolution參數(shù)即可。
其中vl53l5cx_set_integration_time_ms和vl53l5cx_set_ranging_frequency_hz加載了對(duì)應(yīng)的刷新速率。

/* USER CODE BEGIN 2 */
	LCD_Init();//LCD初始化
	
	LCD_Fill(0,0,320,480,RED)	;	
	LCD_Fill(0,0,320,480,WHITE)	;		
	
	LCD_ShowString(0,0,"MCU:STM32H503RBT6",BLACK,WHITE,32,0);
	LCD_ShowString(0,32,"TOF:VL53L5CX",BLACK,WHITE,32,0);	
	LCD_ShowString(0,64,"MODE: ",BLACK,WHITE,32,0);	;	
//	
	LCD_ShowChinese32x32(96,64,"自",BLACK,WHITE,32,0);
	LCD_ShowChinese32x32(128,64,"主",BLACK,WHITE,32,0);
	LCD_ShowChinese32x32(160,64,"模",BLACK,WHITE,32,0);
	LCD_ShowChinese32x32(192,64,"式",BLACK,WHITE,32,0);
	
	HAL_Delay(500);	
	
	
  /*********************************/
  /*  Set ranging mode autonomous  */
  /*********************************/
  VL53L5CX_Object_t *pL5obj = CUSTOM_RANGING_CompObj[CUSTOM_VL53L5CX];
  static VL53L5CX_ResultsData data;
  uint8_t NewDataReady = 0;

  // 設(shè)置測(cè)距的配置文件為 4x4 的連續(xù)測(cè)量模式
  Profile.RangingProfile = RS_PROFILE_8x8_CONTINUOUS;

  // 設(shè)置測(cè)量的時(shí)間預(yù)算,這通常決定了測(cè)量的速度和準(zhǔn)確度
  Profile.TimingBudget = TIMING_BUDGET; /* 5 ms < TimingBudget < 1000 ms */

  // 設(shè)置測(cè)量的頻率,這決定了傳感器執(zhí)行測(cè)量的速率
  Profile.Frequency = RANGING_FREQUENCY; /* Ranging frequency Hz (shall be consistent with TimingBudget value) */

  // 確定是否啟用環(huán)境光測(cè)量,0為禁用,1為啟用
  Profile.EnableAmbient = 0; /* Enable: 1, Disable: 0 */

  // 確定是否啟用信號(hào)測(cè)量,0為禁用,1為啟用
  Profile.EnableSignal = 0; /* Enable: 1, Disable: 0 */

  pL5obj- >IsAmbientEnabled = Profile.EnableAmbient;
  pL5obj- >IsSignalEnabled = Profile.EnableSignal;

  /*
     use case VL53L5CX_PROFILE_4x4_CONTINUOUS:
  */
	// 設(shè)置傳感器的測(cè)量分辨率為 4x4
  status = vl53l5cx_set_resolution(&(pL5obj- >Dev), VL53L5CX_RESOLUTION_8X8);
	// 設(shè)置傳感器的測(cè)量模式為自主模式
  status |= vl53l5cx_set_ranging_mode(&(pL5obj- >Dev), VL53L5CX_RANGING_MODE_AUTONOMOUS);
	// 設(shè)置傳感器的集成時(shí)間,這通常關(guān)聯(lián)到測(cè)量的時(shí)間預(yù)算
	status |= vl53l5cx_set_integration_time_ms(&(pL5obj- >Dev), TIMING_BUDGET);
	// 設(shè)置傳感器的測(cè)量頻率,決定了傳感器執(zhí)行測(cè)量的速率
	status |= vl53l5cx_set_ranging_frequency_hz(&(pL5obj- >Dev), RANGING_FREQUENCY);

  if (status != VL53L5CX_STATUS_OK)
  {
    printf("ERROR : Configuration programming error!nn");
    while (1);
  }

  status = vl53l5cx_start_ranging(&(pL5obj- >Dev));
  if (status != VL53L5CX_STATUS_OK)
  {
    printf("vl53l5cx_start_ranging failedn");
    while (1);
  }	
	
	
  /* USER CODE END 2 */

積分時(shí)間/曝光時(shí)間(Integration time)

在這里插入圖片描述

積分時(shí)間是一項(xiàng)僅在使用自主測(cè)距模式時(shí)可用的功能(請(qǐng)參閱第 4.5 節(jié)測(cè)距模式)。 它允許用戶在啟用 VCSEL 時(shí)更改時(shí)間。 如果測(cè)距模式設(shè)置為連續(xù),則更改積分時(shí)間無效。 默認(rèn)積分時(shí)間設(shè)置為 5 ms。
對(duì)于 4x4 和 8x8 分辨率,積分時(shí)間的影響是不同的。 分辨率 4x4 由一個(gè)積分時(shí)間組成,8x8 分辨率由四個(gè)積分時(shí)間組成。 下圖表示兩種分辨率的 VCSEL 發(fā)射。
在這里插入圖片描述

所有積分時(shí)間之和 + 1 ms 開銷必須低于測(cè)量周期,否則測(cè)距周期將自動(dòng)增加。

主程序

主程序來獲取對(duì)應(yīng)的INT位狀態(tài)來判定數(shù)據(jù)是否準(zhǔn)備好。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {	
    /* polling mode */
	if(HAL_GPIO_ReadPin  ( GPIOA, GPIO_PIN_8) ==0)		
	{
		do {
    (void)vl53l5cx_check_data_ready(&(pL5obj- >Dev), &NewDataReady);
    } while (!NewDataReady);
		
    if (NewDataReady != 0)
    {
      status = vl53l5cx_get_ranging_data(&(pL5obj- >Dev), &data);

      if (status == VL53L5CX_STATUS_OK)
      {
        /*
         Convert the data format to Result format.
         Note that you can print directly from data format
        */
        if (convert_data_format(pL5obj, &data, &Result) < 0)
        {
          printf("convert_data_format failedn");
          while (1);
        }
        print_result(&Result);
      }
    }				
	}					
	uint32_t colour=0;		
	if(LCD_flag)
	{
		LCD_flag=0;
		uint8_t H,L;
		for(int i=0;i< 64;i++)
		{
			H=7-i/8;
			L=7-i%8;
			if(tof_data[i]< 500)
			{
			LCD_ShowIntNum(L*40,H*40+160,tof_data[i],5,WHITE,RED,16);		
			LCD_Fill(L*40,H*40+160+16,L*40+40,H*40+160+40,  RED);
			}
			else if(tof_data[i] >=500&&tof_data[i]< 700)
			{
			LCD_ShowIntNum(L*40,H*40+160,tof_data[i],5,WHITE,GREEN,16);		
			LCD_Fill(L*40,H*40+160+16,L*40+40,H*40+160+40,  GREEN);				
			}
			else if(tof_data[i] >=700&&tof_data[i]< 9000)			
			{
			LCD_ShowIntNum(L*40,H*40+160,tof_data[i],5,WHITE,BLACK,16);	
			LCD_Fill(L*40,H*40+160+16,L*40+40,H*40+160+40,  BLACK);	
			}				
			else
			{
			LCD_ShowString(L*40,H*40+160,"  X  ",WHITE,BLACK,16,0);	
			LCD_Fill(L*40,H*40+160+16,L*40+40,H*40+160+40,  BLACK);					
			}	
		}
	
	}			
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

狀態(tài)說明

正常的數(shù)據(jù)返回狀態(tài)為5,為了保持?jǐn)?shù)據(jù)一致,用戶需要過濾無效的目標(biāo)器狀態(tài)。為了給出信心評(píng)級(jí),狀態(tài)為5的目標(biāo)被認(rèn)為是100%有效的。6或9的狀態(tài)可以用50%的置信度來考慮。所有其他狀態(tài)都低于50%置信度。

在這里插入圖片描述

演示結(jié)果

在這里插入圖片描述

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355981
  • LCD顯示
    +關(guān)注

    關(guān)注

    0

    文章

    132

    瀏覽量

    18364
  • TOF
    TOF
    +關(guān)注

    關(guān)注

    9

    文章

    483

    瀏覽量

    36344
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32H5開發(fā)(1)----總覽

    STM32H5系列微控制器是意法半導(dǎo)體公司推出的一款高性能MCU, CortexM33內(nèi)核的微控制器產(chǎn)品。 他和STM32F2、F4、F7、H7同屬于高端系列產(chǎn)品線。同時(shí)他的主頻能夠
    的頭像 發(fā)表于 12-01 14:52 ?853次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(1)----總覽

    STM32H5開發(fā)(2)----新特性

    STM32H5開發(fā)(2)----新特性
    的頭像 發(fā)表于 12-01 14:53 ?783次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(2)----新特性

    STM32H5開發(fā)(3)----電源控制和RCC

    STM32H5開發(fā)(3)----電源控制和RCC
    的頭像 發(fā)表于 12-01 14:59 ?1041次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(3)----電源控制和RCC

    STM32H5開發(fā)(4)----開發(fā)板介紹

    STM32H503RBTx_LQFP64是STM32H5系列微控制器的一款出色評(píng)估套件,它采用了先進(jìn)的40nm工藝制造,為開發(fā)者提供了卓越的性能和能效。主頻高達(dá)250MHz的Arm? Cortex?-M33內(nèi)核使其處理能力非常強(qiáng)
    的頭像 發(fā)表于 12-01 15:00 ?853次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(4)----<b class='flag-5'>開發(fā)</b>板介紹

    STM32H5開發(fā)(5)----串口打印配置

    在使用STM32CUBEIDE開發(fā)STM32H5項(xiàng)目時(shí),串口打印被證明是一項(xiàng)極其有益的調(diào)試工具,能夠在開發(fā)過程中實(shí)時(shí)輸出信息和調(diào)試數(shù)據(jù),起到
    的頭像 發(fā)表于 12-01 15:04 ?999次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(<b class='flag-5'>5</b>)----串口打印配置

    STM32H5開發(fā)(6)----SPI驅(qū)動(dòng)TFT-LCD

    在嵌入式領(lǐng)域,TFT-LCD屏是最常用的顯示解決方案之一,因?yàn)樗鼈兲峁┝素S富的顏色和高分辨率的圖像顯示能力。STM32H5作為ST的高性能微控制器系列,具備了強(qiáng)大的處理能力和多種通信接
    的頭像 發(fā)表于 12-01 16:45 ?2705次閱讀
    <b class='flag-5'>STM32H5</b><b class='flag-5'>開發(fā)</b>(6)----SPI驅(qū)動(dòng)TFT-<b class='flag-5'>LCD</b>屏

    STM32H5 DA初體驗(yàn)

    本文是接著之前文檔《STM32H5 DA 之初體驗(yàn)(帶 TrustZone)》的后續(xù)之作。
    的頭像 發(fā)表于 01-17 13:39 ?1170次閱讀
    <b class='flag-5'>STM32H5</b> DA初體驗(yàn)

    請(qǐng)問STM32L5STM32H5對(duì)trustzone有哪些不同?

    STM32L5STM32H5對(duì)trustzone有哪些不同?
    發(fā)表于 07-04 08:08

    STM32H5STM32U5在trustzone上有哪些不同?

    我要做空調(diào)的空中升級(jí)FOTA的方案,需要加密,對(duì)于trustzone功能,采用那款芯片比較合適?STM32H5STM32U5在trustzone上有哪些不同?
    發(fā)表于 07-05 07:03

    高性能系列MCU STM32H5介紹

    內(nèi)容包含:STM32 MCU/MPU產(chǎn)品系列、STM32H5 系列、STM32H5 系列亮點(diǎn)、STM32H5 系列產(chǎn)品等。
    發(fā)表于 09-05 06:39

    全新高性價(jià)比STM32H5讓性能和安全觸手可及

    全新高性價(jià)比STM32H5,引入STM32H5 MCU系列用于高性能設(shè)計(jì),提高應(yīng)用程序性能,有靈活的電源模式,安全性可擴(kuò)展
    發(fā)表于 09-05 06:51

    高性能系列MCU STM32H5介紹

    電子發(fā)燒友網(wǎng)站提供《高性能系列MCU STM32H5介紹.pdf》資料免費(fèi)下載
    發(fā)表于 07-29 10:59 ?0次下載
    高性能系列MCU <b class='flag-5'>STM32H5</b>介紹

    高性價(jià)比STM32H5 MCU系列手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《高性價(jià)比STM32H5 MCU系列手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 07-29 16:15 ?2次下載
    高性價(jià)比<b class='flag-5'>STM32H5</b> MCU系列手冊(cè)

    【話題風(fēng)暴】看看新品STM32H5那些事

    ST推出了STM32H5系列,該系列作為新標(biāo)桿服務(wù)于工業(yè)應(yīng)用市場(chǎng)。用于高性能設(shè)計(jì)的STM32H5系列基于強(qiáng)大的Arm Cortex-M33內(nèi)核 ,將給用戶帶來更強(qiáng)勁的性能和安全性,提供更多設(shè)計(jì)自由
    的頭像 發(fā)表于 09-21 09:30 ?1012次閱讀
    【話題風(fēng)暴】看看新品<b class='flag-5'>STM32H5</b>那些事

    STM32H5 DA 之初體驗(yàn)(帶 TrustZone)

    電子發(fā)燒友網(wǎng)站提供《STM32H5 DA 之初體驗(yàn)(帶 TrustZone).pdf》資料免費(fèi)下載
    發(fā)表于 02-19 14:19 ?0次下載
    <b class='flag-5'>STM32H5</b> DA 之初體驗(yàn)(帶 TrustZone)