vl53l1x激光测距模块移植
1前言:
关于vl53l1x激光模块的使用原理和程序建议参考这篇博文

https://blog.csdn.net/tiramisu_l/article/details/90729964

我只介绍前面那篇博文的程序怎么从STM32F1移植到F4,由于之前参加电赛需要测量2-3米的距离,但手上有的GY53测距模块只能测2米所以便买了这个模块,由于时间仓促和未接触过IIC只能硬着头皮找资料,移植程序,好在花了一个下午给弄了出来。

2.正文:
先提供程序链接(这个程序也是之前那篇博主提供的,谢谢大佬):

vl53l1x测距代码下载链接:https://download.csdn.net/download/tiramisu_l/11221225
百度云链接
链接:https://pan.baidu.com/s/1sTO7fDVjQXbX3YCAtpy_Mg 提取码:5aik

其实移植这个程序非常简单,由于是模拟IIC,连IO也不用改直接可以用F1之前的IO。

SDA->PA2
SCL->PA3
XShut->PA4:

唯一要注意的几个点的是:
1.虽然这个模块用了api,看起来程序非常多 但是直接copy就行过去 先不用管这么东西。
在这里插入图片描述

2. 在i2c.h的里面有2个地方需要改一下

#define STATUS_OK       0x00
#define STATUS_FAIL     0x01
#define VL_SDA_IN()  {GPIOA->CRL&=0XFFFFF0FF;GPIOA->CRL|=8<<8;}
#define VL_SDA_OUT() {GPIOA->CRL&=0XFFFFF0FF;GPIOA->CRL|=3<<8;}
#define VL_IIC_SCL    PAout(3)      //SCL
#define VL_IIC_SDA    PAout(2) 		//SDA	 
#define VL_READ_SDA   PAin(2) 		//输入SDA 

VL_SDA_IN()和VL_SDA_OUT直接操作 GPIOx_CRL/GPIOx_CRH (x:A~F)寄存器用来对GPIO进行端口设置,其实就是设置这两个io口为输入和输出,在F4中直接将括号里面的程序给删掉就行,F4可以自动设置输入和输出。

3.就是头文件的添加,这个也没什么难点,自己照着原F1的程序改就行。

4.在main.c中有2个初始化程序被注释掉了,需要自己打开
VL53l1_GPIO_Init(); VL53L1_I2C_Init();
还有的是在主程序里面有很多的print()函数,可以不把它删除掉,自己在调试这个程序的时候可以看下那一步成功了 那一步失败了
在这里插入图片描述

非常感谢 tiramisu_L 这位博主的无私分享,也非常赞同他的那句话“人在求助的时候是非常无助的”。