日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

## stm32F1 VL53L0X例程及部分代码讲解(可调工作模式版)

發布時間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ## stm32F1 VL53L0X例程及部分代码讲解(可调工作模式版) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stm32F1 VL53L0X例程及部分代碼講解(可調工作模式版)

前段時間為了使用這個模塊,翻看手冊,發現全是英文看不太懂,就到處從網上找VL53L0X的例程,發現下載的很多個例程都不能用。為了避免大家少走彎路,我在這里總結一下容易出錯誤的地方。順便在介紹一下多個I2C工作的基本配置。

1.1 模塊初始化

VL53L0X_Error vl53l0x_init(VL53L0X_Dev_t *dev) {GPIO_InitTypeDef - GPIO_InitStructure;VL53L0X_Error Status = VL53L0X_ERROR_NONE;VL53L0X_Dev_t *pMyDevice = dev;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能IOpMyDevice->I2cDevAddr = VL53L0X_Addr;//I2C地址pMyDevice->comms_type = 1; //I2C通信模式pMyDevice->comms_speed_khz = 400; //I2C通信速率VL53L0X_i2c_init();//初始化I2CVL53L0X_Xshut=0;//使能端0為傳感器不工作delay_ms(30);VL53L0X_Xshut=1;//使能端1為傳感器工作delay_ms(30);==vl53l0x_Addr_set(pMyDevice,0x52)==;//I2C地址/******************這個地方大家記得設成0x52之前有個博主提供的例程是默認0x54的************/

1.2 I2C接口的速率設置

void VL53L0X_i2c_init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;==GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;==//這個地方記得設置成2MHZ 50MHZ是不能用的GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;==GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;==//也需要設置成2MHZ 50MHZ是不能用的GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;GPIO_Init(GPIOB, &GPIO_InitStructure);

還有一點,大家從網下下載的例程記得把他們設置的I2C接口更改一下,很多人的接口都是不一樣的。

1.3 I2C的時間設置

那段時間模塊不能用,一直在糾結于I2C的delay_us(4)和delay_us(1)的問題,其實這兩個并不影響。這兩個的差別在I2C的SDA和SCL發送和接收時間段是允許。希望大家不要糾結這個,節約時間。

2 激光測距模塊的模式配置問題

網上代碼分兩種,有一種是閹割版的不能配置工作模式,另一種是可以配置的。
可以配置的我已經上傳了大家可以下載。
順便提一句,高速率模式對于智能小車定位有很好的響應效果,其它模式延遲大,不建議使用

3 多個激光模塊的共同工作

我采用的是通過配置使能端口實現的,還有一種是配置地址(暫時沒有成功)。
XSHUT接高電平為工作狀態,接低電平為休眠狀態。可以給不同的傳感器配置不同的IO來實現讀取每個傳感器的值。

另外,可以把多個模塊的SCL和SDA并在一起,一起接到開發板上的I2C口上,這樣可以節省端口,想用哪個的時候使能它的端口就行了。

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //PA4端口GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);?GPIO_ResetBits(GPIOA,GPIO_Pin_4); //PA.4配置GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PA5端口GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_P ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_5); //PA.5配置

//該文章僅僅是拋磚引玉,因為本人水平有限,如果大家可以看了本文之后可以少走一些彎路就OK了//

總結

以上是生活随笔為你收集整理的## stm32F1 VL53L0X例程及部分代码讲解(可调工作模式版)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。