B-U585I-IOT02A带了一颗VL53L5CX的TOF测距传感器,我对这颗传感器比较感兴趣,可惜STM32Cube_FW_U5_V1.0.0里边并没有提供这颗传感器的例程(我是通过搜索VL53L*确定)。不过好在所有的STM32都叫STM32,不同型号的代码移植起来非常方便,STM32U585也不例外。
下载VL53L5CX页面下的STSW-IMG023 Ultra Lite Driver (ULD) for VL53L5CX multi-zone sensor驱动。
然后新建stm32u585的cubemx工程,启用I2C2和USART1,生成工程,将里边的CubeIDE_F401RE_Example复制到u585工程下做相应的修改。
下载程序,打开串口就能看到VL53L5CX测量到的距离数据。我把它平放在桌面上,使用激光测距仪测量桌面到棚顶的距离 是1.924米。
VL53L5CX测量到的距离会有些波动,基本在1.9米左右。
取二组中间区域的5,6,9,10数据用EXCEL求平均得到的距离是1.918米。
然后在桌面上垫一个B-U585I-IOT02的包装盒,用激光测距仪测量到棚顶的高度为1.879米,1.924-1.879=45mm这也正好是包装盒的大概高度。
VL53L5CX平均后的结果是1.879米,和激光测距仪的结果一致。
不过这里需要注意的是VL53L5CX因为是焊接在PCB上的,算上PCB下边的接口实际它距离桌面还有9mm。所以实际结果还要再加上9mm才是真实数据。原因应该是因为VL53L5CX测量的是一个面的平均距离,这个距离肯定要比桌面到棚顶的直线距离长一些。
整体上VL53L5CX的测量结果令人非常满意,实际应用中使用4*4或8*8点阵它还可以实现更复杂的功能。
回归正题,这是一个STM32U585的评测,不过因为STM32之间的移植非常方便,我在创建项目和移植工程时几乎没写一行代码,因为没有应用到STM32U585特有的功能,所以只是简单的把UART和I2C的配置做了修改就能顺利的把例程跑起来。也正是因为这个特性才让用户能够学会一颗STM32就能驾驭几乎所有的STM32。