vl53L0X传感器的编写,(未完待续)

2021.5.11 驱动调试方法

官方文档
在这里插入图片描述

通常官方文档提供的文件路径就是放在linux设备当中应该设置的路径例如一下的路径就是如此
D:\VL53L0X\VL53L0X_1.0.2\LinuxDriverMassMarket_1.0.6\kernel\drivers\input\misc
在官方提供的文件当中会有两个文件
在这里插入图片描述

第一个是drivers,通常是指的是驱动文件,是需要放在linux当中调试运行的。下面的测试文件,是当内核调试完成以后,进行测试的文件。
在这里插入图片描述

这是需要配置在linux内核当中的文件。

首先是需要将设备挂在设备树下

通常在官方提供的文件中,需要更改的是Makefile,这是很重要的,也是非常容易出现错误的。打开Makefile在windows系统下,是千万不能用记事本之类的工具打开,因为这会打乱Makefile的格式。需要谨慎对待,通常我采用notepad++文件打开。

以下是官方提供的Makefile文件
在这里插入图片描述

开始运行make的时候一直报错,无法运行通过,
然后发现是在
\10.10.30.82\share\RK_PX30_workspace\px30_linux\kernel\drivers\input\misc路径下的Makefile文件最后一行是v153L0X.o而不是vl53l0x/,
在这里插入图片描述

因为我内核的驱动都是在vl53L0X文件当中,而不是在当前文件下的.c文件。
在这里插入图片描述

因为Makefile通过互相关联以此达到互相关联耦合的目的。

然后继续编译Makefile,依然发现很多问题,发现在vl53L0X文件下很多C文件没有问办法生成中间.o文件,发现在Makefile当中没有编译。所有加入了下面的语句ccflags-y += -Idrivers/input/misc/vl53L0X全部都要编译。
在这里插入图片描述

SRCS := $(wildcard ./src/*.c)
OBJS = $(SRCS:.c=.o)
所以掌握Makefile的编写是很重要的事情。
在这里插入图片描述

除此之外,因为这个传感器使用到了中断,所有在编写当中,需要注意中断口的应用,PCB板上的中断端口在115,所以在官方提供的文件下
在这里插入图片描述

定义了中断IRQ_NUM 为115

当以上的工作完成以后,就可以编译内核了
在这里插入图片描述

编写内核的方法如上所示。
当编写内核完成以后内核文件在px30-linux/output目录下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当使用VL53L0X传感器时,你可以使用HAL库编写代码。下面是一个使用HAL库的示例代码: ```c #include "vl53l0x_api.h" #include "vl53l0x_platform.h" // 定义I2C句柄和设备地址 I2C_HandleTypeDef hi2c1; #define VL53L0X_I2C_ADDRESS 0x29 VL53L0X_Dev_t vl53l0x_dev; void VL53L0X_Init() { // 配置I2C句柄 vl53l0x_dev.i2c = &hi2c1; vl53l0x_dev.i2c->Instance = I2C1; vl53l0x_dev.i2c->Init.ClockSpeed = 400000; vl53l0x_dev.i2c->Init.DutyCycle = I2C_DUTYCYCLE_2; vl53l0x_dev.i2c->Init.OwnAddress1 = 0; vl53l0x_dev.i2c->Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; vl53l0x_dev.i2c->Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; vl53l0x_dev.i2c->Init.OwnAddress2 = 0; vl53l0x_dev.i2c->Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; vl53l0x_dev.i2c->Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(vl53l0x_dev.i2c) != HAL_OK) { Error_Handler(); } // 配置VL53L0X传感器 VL53L0X_Error status = VL53L0X_RdWord(&vl53l0x_dev, VL53L0X_REG_IDENTIFICATION_MODEL_ID, &vl53l0x_dev.IdentificationModelID); if (status != VL53L0X_ERROR_NONE) { Error_Handler(); } } int main() { HAL_Init(); SystemClock_Config(); // 初始化VL53L0X传感器 VL53L0X_Init(); while (1) { // 读取测量数据 VL53L0X_RangingMeasurementData_t ranging_data; VL53L0X_PerformSingleRangingMeasurement(&vl53l0x_dev, &ranging_data); // 处理测量数据 if (ranging_data.RangeStatus == 0) { printf("Distance: %d mm\r\n", ranging_data.RangeMilliMeter); } HAL_Delay(100); } } ``` 请注意,上述代码仅为示例,并假定你已经配置了正确的I2C硬件和GPIO引脚。你需要根据你的硬件配置进行适当的更改。此外,你还需要在代码中包含VL53L0X的HAL库头文件和函数。这些文件通常由传感器供应商提供。 希望这可以帮助你开始使用VL53L0X传感器编写代码。如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值