我们正在尝试使用 Yocto Linux 将ST VL53L8CX ToF(飞行时间)传感器通过SPI集成到NXP i.MX8MP LPDDR4 EVK上。
最初的目标是实现基本的 SPI 通信,并从自定义 Linux 内核驱动程序中成功检测到 VL53L8CX 设备。现阶段不需要全部功能。
当前设备树配置使用:
&ecspi2 {
pinctrl-0 = <&pinctrl_ecspi2 &pinctrl_ecspi2_cs>;
cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
status = "okay";
stmvl53l8cx: spi@0 {
reg = <0>;
compatible = "st,stmvl53l8cx";
spi-max-frequency = <1000000>;
};
};SPI设备创建成功:
root@imx8mp-lpddr4-evk:~# ls -l /sys/bus/spi/devices/
spi0.0
spi1.0自定义驱动程序也已注册:
root@imx8mp-lpddr4-evk:~# ls -l /sys/bus/spi/drivers/
stmvl53l8cx驱动程序 probe() 函数已成功调用。
请问有人可以指导一下,为了确保 VL53L8CX 通过 SPI 正确通信,我们应该检查i.MX8MP EVK ECSPI2/J21 硬件和设备树配置中的哪些内容吗?
我们尤其想确认以下几点:
我们还附上了自定义的 driver.c 驱动程序和内核日志供您参考。
任何关于i.MX8MP EVK + J21 + ECSPI2 + VL53L8CX SPI 配置的正确指导都将不胜感激。
我已附上自定义驱动程序文件driver.c
另外,我还附上了日志。
谢谢!
感谢您的反馈,
在进行任何进一步配置之前,我们尝试读取设备 ID。但是,我们无法成功读取设备 ID。
我们的 SPI 驱动程序探测正常,但读取芯片 ID 的寄存器没有返回预期值。因此,我们无法验证与 VL53L8CX 的通信,也无法继续进行传感器初始化。
我们目前正在检查 SPI 配置、设备树和硬件连接,以确定问题所在。
我们还会附上驱动程序、日志和模块镜像,以便您查看。如果您对我们应该验证 VL53L8CX 基本 SPI 通信的哪些方面有任何建议,我们将非常感谢您的指导。
此致,
yogi96
你好@yogi96
希望你一切都好。
总的来说,你采取的所有步骤看起来都不错。
下一步你可以尝试读取传感器的任何寄存器,例如,在你的 probe() 函数中,读取芯片的 ID。
如果读取的 ID 正确,则继续配置。
另外,我没能看到连接的驱动器。
如果可以,请附上附件。
顺祝商祺!
萨拉斯。