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

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

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

基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180與VL6180X(3)----修改設(shè)備地址

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

概述

本章主要介紹如何修改VL6180X傳感器I2C地址,并成功驅(qū)動(dòng)設(shè)備以使用新的地址。VL6180X是一種多功能、高性能的接近和環(huán)境光傳感器,常用于測(cè)量物體與傳感器之間的距離、檢測(cè)物體的接近程度以及測(cè)量環(huán)境光強(qiáng)度等應(yīng)用。

在某些情況下,可能需要在同一I2C總線上使用多個(gè)VL6180X傳感器,或與其他I2C設(shè)備共享總線資源。由于每個(gè)VL6180X傳感器具有默認(rèn)的固定I2C地址,這可能導(dǎo)致地址沖突,從而阻礙多個(gè)傳感器的同時(shí)使用。為了解決這個(gè)問題,可以通過(guò)修改傳感器的I2C地址來(lái)避免沖突,并使其能夠在同一總線上與其他設(shè)備共存。

修改VL6180X傳感器的I2C地址,通過(guò)配置傳感器內(nèi)部寄存器來(lái)修改I2C地址。將提供具體的寄存器配置值和步驟,確保能夠成功更改傳感器的地址。然后驅(qū)動(dòng)新地址的VL6180X傳感器,使用新的I2C地址與VL6180X傳感器進(jìn)行通信。

最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):615061293 。
在這里插入圖片描述

樣品申請(qǐng)

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

視頻教程

https://www.bilibili.com/video/BV1xP411k7H2//

完整代碼下載

https://download.csdn.net/download/qq_24312945/88051584

修改設(shè)備地址

VL6180X使用I2C總線進(jìn)行通信。默認(rèn)情況下,VL6180X的7位地址為0x29。然而,為了避免地址沖突并允許多個(gè)傳感器共享相同的I2C總線,用戶可以通過(guò)向寄存器I2C_SLAVE__DEVICE_ADDRESS(寄存器地址為0x212)寫入自定義的7位地址來(lái)修改傳感器的地址。
在使用I2C總線和修改傳感器地址時(shí)注意以下事項(xiàng):確保正確連接上拉電阻、避免短路或接線錯(cuò)誤、提供穩(wěn)定的電源供應(yīng)等。
在這里插入圖片描述

查看寄存器I2C_SLAVE__DEVICE_ADDRESS {0x212}可以得知每次上電之后地址會(huì)恢復(fù)為初始值。

在這里插入圖片描述

首先,找到并打開VL6180.h文件,該文件包含了VL6180X傳感器的相關(guān)定義和配置。
在VL6180.h文件中,可以定義4個(gè)設(shè)備的地址常量,分別表示不同的傳感器。例如,可以使用以下方式定義地址常量:

#define VL6180X_DEFAULT_I2C_ADDR1 0x29  ///< The fixed I2C addres
#define VL6180X_DEFAULT_I2C_ADDR2 0x2A  ///< The fixed I2C addres
#define VL6180X_DEFAULT_I2C_ADDR3 0x2B  ///< The fixed I2C addres
#define VL6180X_DEFAULT_I2C_ADDR4 0x2C  ///< The fixed I2C addres

這里的地址值是根據(jù)實(shí)際需求和硬件連接情況選擇的,確保每個(gè)設(shè)備具有唯一的地址。
通過(guò)使用定義的設(shè)備地址常量,可以輕松地管理和操作多個(gè)VL6180X傳感器。
首先使用VL6180X_Init函數(shù)初始化傳感器,接下來(lái)通過(guò)調(diào)用VL6180X_SetDeviceAddress函數(shù)來(lái)修改設(shè)備地址。這個(gè)函數(shù)需要兩個(gè)參數(shù):舊的設(shè)備地址(即初始的設(shè)備地址)和新的設(shè)備地址(你希望將傳感器的地址修改為的值)。

/* USER CODE BEGIN 2 */

	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);	
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET);	

	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);	
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);	

	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET);	
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);	
	
	
//VL6180_4
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);	
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);

	HAL_Delay(1);
	VL6180X_Init(VL6180X_DEFAULT_I2C_ADDR1);
/************修改VL6180_4地址為VL6180X_DEFAULT_I2C_ADDR2(0x2A)*********************/
	VL6180X_WriteByte(VL6180X_DEFAULT_I2C_ADDR1,0x0212,VL6180X_DEFAULT_I2C_ADDR4);
//	HAL_Delay(100);
	uint8_t ii=VL6180X_ReadByte(VL6180X_DEFAULT_I2C_ADDR4,0x0212);	
	printf("地址為=0x%Xn",ii);		
	VL6180x_UpscaleSetScaling(VL6180X_DEFAULT_I2C_ADDR4,3);//縮放x3
	uint8_t id=VL6180X_Read_ID(VL6180X_DEFAULT_I2C_ADDR4);
	printf("id=%dn",id);	


  /* USER CODE END 2 */

主程序

在主程序的while循環(huán)中,使用VL6180X_Read_Range函數(shù)從傳感器讀取距離數(shù)據(jù)。這個(gè)函數(shù)需要傳入設(shè)備的新地址VL6180X_DEFAULT_I2C_ADDR4作為參數(shù)。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		
		VL6180_L1=VL6180X_Read_Range(VL6180X_DEFAULT_I2C_ADDR4);

		printf("VL6180_L1=%dmmn",VL6180_L1*3);
		HAL_Delay(1000);			
		
		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

測(cè)試結(jié)果

測(cè)試距離結(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)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50260

    瀏覽量

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

    關(guān)注

    9

    文章

    475

    瀏覽量

    36198
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    280

    瀏覽量

    14684
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180VL6180X(2)----修改測(cè)量范圍

    當(dāng)使用VL6180傳感器進(jìn)行測(cè)距時(shí),可以通過(guò)修改縮放因子來(lái)改變可測(cè)量的距離范圍。VL6180是一種基于飛行時(shí)間原理的傳感器,通過(guò)測(cè)量光信號(hào)的往返時(shí)間來(lái)確定物體與傳感器之間的距離。
    的頭像 發(fā)表于 12-01 13:52 ?538次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL6180</b>與<b class='flag-5'>VL6180X</b>(2)----<b class='flag-5'>修改</b>測(cè)量范圍

    基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180VL6180X(4)----測(cè)量環(huán)境光

    在本章中,我們將介紹如何配置VL6180X傳感器以測(cè)量環(huán)境光,并獲取環(huán)境光的強(qiáng)度值。VL6180X是一種多功能、高性能的接近和環(huán)境光傳感器,其環(huán)境光測(cè)量功能可以用于檢測(cè)周圍環(huán)境的亮度水平。
    的頭像 發(fā)表于 12-01 14:34 ?723次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL6180</b>與<b class='flag-5'>VL6180X</b>(4)----測(cè)量環(huán)境光

    基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180VL6180X(5)----驅(qū)動(dòng)多個(gè)VL6180X

    驅(qū)動(dòng)多個(gè)VL6180X傳感器進(jìn)行距離測(cè)量和光強(qiáng)測(cè)量。VL6180X傳感器在VL6180的基礎(chǔ)上增加了光強(qiáng)測(cè)量功能,這使得它們能夠提供關(guān)于環(huán)境光強(qiáng)度的有用信息。對(duì)于那些需要考慮光照條件的
    的頭像 發(fā)表于 12-01 14:36 ?922次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL6180</b>與<b class='flag-5'>VL6180X</b>(5)----<b class='flag-5'>驅(qū)動(dòng)</b>多個(gè)<b class='flag-5'>VL6180X</b>

    尋找手冊(cè)中引用的F401和VL6180板的mbed資源

    我正在尋找手冊(cè)中引用的F401和VL6180板的mbed資源。 可以嗎?#vl6180x以上來(lái)自于谷歌翻譯以下為原文 I was looking for mbed resources
    發(fā)表于 09-21 16:57

    VL6180X設(shè)備的功耗是多少?

    親, VL6180X的功耗是多少? 問候。 一個(gè)。#proximity-sensor#vl6180x以上來(lái)自于谷歌翻譯以下為原文 Dear, What is the power
    發(fā)表于 09-25 17:21

    VL6180X包含多少個(gè)傳感器?

    VL6180X包含多少個(gè)傳感器? #vl6180x#vl6180x-outline-drawing #sensor以上來(lái)自于谷歌翻譯以下為原文 How many sensors does
    發(fā)表于 09-25 17:14

    VL6180X操作如何測(cè)量距離

    的問題是:由于VL6180X計(jì)算距離作為發(fā)射和接收紅外線之間的時(shí)間,它如何測(cè)量距離(例如約1cm),其對(duì)應(yīng)于皮秒級(jí)的飛行時(shí)間? 謝謝#vl6180x以上來(lái)自于谷歌翻譯以下為原文 I
    發(fā)表于 10-10 10:47

    VL6180X:什么是線性誤差率?

    親, VL6180X的線性誤碼率是多少? Tks和問候。 一個(gè)。 #proximity-sensor#vl6180x以上來(lái)自于谷歌翻譯以下為原文 Dear, What
    發(fā)表于 10-22 16:29

    VL6180X范圍偏移怎么更改

    大家好我在自定義主板上使用了一些VL6180X設(shè)備。 然后,它們的范圍偏移似乎每次啟動(dòng)都會(huì)改變大約mm5mm,盡管我按應(yīng)用說(shuō)明中的指示調(diào)整了偏移。什么影響范圍偏移?在正常情況下,只需一次調(diào)整就夠了嗎
    發(fā)表于 10-23 16:52

    VL6180X寄存器的基址是什么?

    查看VL6180X的數(shù)據(jù)手冊(cè)(p49-50),列出了寄存器的“偏移”地址。這是否意味著我必須在偏移地址中添加基地址?如果是這樣,請(qǐng)?jiān)谖臋n中找到哪個(gè)位置?并且,是否存在具有實(shí)際寄存器
    發(fā)表于 03-01 13:32

    VL6180X增加了范圍

    嗨,我想增加VL6180X的范圍,但我不知道我必須修改哪個(gè)寄存器。我看到RangingAndALS_NucleoXXX樣本中的代碼,但我不明白VL6180X寄存器是如何被修改的,以便增
    發(fā)表于 04-08 16:02

    請(qǐng)問VL6180X的基本功能有哪些?

    VL6180X的基本功能有哪些? #vl6180x #features以上來(lái)自于谷歌翻譯以下為原文 What are the basic features of VL6180X ?#vl61
    發(fā)表于 06-05 09:26

    Vl6180x 官方蓋玻片模型的使用

    本帖最后由 yppc 于 2019-12-31 12:09 編輯 我最近在使用Vl6180x芯片,因?yàn)閼?yīng)用環(huán)境,我準(zhǔn)備增加蓋玻片防塵,我在ST官網(wǎng)上查詢到Vl6180芯片的蓋玻片模型,我想咨詢
    發(fā)表于 12-31 11:41

    使用VL6180X ToF傳感器與Particle Argon控制伺服器

    電子發(fā)燒友網(wǎng)站提供《使用VL6180X ToF傳感器與Particle Argon控制伺服器.zip》資料免費(fèi)下載
    發(fā)表于 10-19 09:52 ?0次下載
    使用<b class='flag-5'>VL6180X</b> <b class='flag-5'>ToF</b>傳感器與Particle Argon控制伺服器

    基于STM32CUBEMX驅(qū)動(dòng)TOF模塊VL6180VL6180X(1)----單模塊距離獲取的最佳實(shí)踐

    VL6180X是基于ST FlightSense?專利技術(shù)的最新產(chǎn)品。作為一項(xiàng)突破性技術(shù),它實(shí)現(xiàn)了獨(dú)立于目標(biāo)反射率的絕對(duì)距離測(cè)量。傳統(tǒng)的測(cè)量方法通過(guò)測(cè)量反射光的光量來(lái)估算距離,然而這種方法存在一個(gè)
    的頭像 發(fā)表于 07-27 09:47 ?1817次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL6180</b>與<b class='flag-5'>VL6180X</b>(1)----單<b class='flag-5'>模塊</b>距離獲取的最佳實(shí)踐