Hello,
I have some issues to do work a VL53L1X with NRF54L15 dev board.
Here are my codes
# Configuration de la Console (Sortie sur Port COM USB) CONFIG_SERIAL=y CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=n # Désactivation ABSOLUE de RTT (sinon rien ne sortira sur l'UART) CONFIG_USE_SEGGER_RTT=y CONFIG_RTT_CONSOLE=y # Driver Capteur CONFIG_PRINTK=y CONFIG_GPIO=y CONFIG_I2C=y CONFIG_SENSOR=y CONFIG_NEWLIB_LIBC=y CONFIG_VL53L1X=y # Support Mathématique (Évite les crashs de calcul) CONFIG_FPU=y CONFIG_CBPRINTF_FP_SUPPORT=y # Mémoire (Le driver VL53L1X est lourd) CONFIG_MAIN_STACK_SIZE=4096 CONFIG_LOG=y CONFIG_LOG_DEFAULT_LEVEL=4 CONFIG_TFM_SECURE_UART=n CONFIG_TFM_LOG_LEVEL_SILENCE=y
/* 1. Désactiver les périphériques qui causent des erreurs de pinctrl */
&spi22 { status = "disabled"; };
&spi21 { status = "disabled"; };
/* Désactivation spécifique du nœud incriminé dans l'erreur (spi@c7000) */
&spi20 { status = "disabled"; };
/* 2. Configuration propre de l'I2C */
&i2c22 {
status = "okay";
pinctrl-0 = <&i2c22_default>;
pinctrl-1 = <&i2c22_sleep>;
pinctrl-names = "default", "sleep";
clock-frequency = <I2C_BITRATE_STANDARD>;
vl53l1x_sensor: vl53l1x@29 {
compatible = "st,vl53l1x";
reg = <0x29>;
status = "okay";
};
};
/* 3. Définition des broches (P1.08 et P1.15) */
&pinctrl {
i2c22_default: i2c22_default {
group1 {
psels = <NRF_PSEL(TWIM_SCL, 1, 8)>,
<NRF_PSEL(TWIM_SDA, 1, 13)>;
bias-pull-up;
/* Utilisation de la valeur numérique pour éviter les erreurs de macro */
nordic,drive-mode = <6>;
};
};
i2c22_sleep: i2c22_sleep {
group1 {
psels = <NRF_PSEL(TWIM_SCL, 1, 8)>,
<NRF_PSEL(TWIM_SDA, 1, 13)>;
low-power-enable;
};
};
w1: w1 {
compatible = "zephyr,w1-gpio";
gpios = <&gpio2 10 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
status = "okay";
};
};
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/sys/printk.h>
int main(void) {
const struct device *const vl53 = DEVICE_DT_GET_ANY(st_vl53l1x);
if (vl53 == NULL) {
printk("Erreur : Aucun capteur trouvé dans le device tree\n");
return;
}
if (!device_is_ready(vl53)) {
printk("Erreur : Le capteur %s n'est pas prêt\n", vl53->name);
return;
}
struct sensor_value dist;
printk("HELLO\n");
if (!device_is_ready(vl53)) {
// Si le capteur n'est pas prêt, on boucle pour ne pas crasher
while(1) {
printk("0,0,0,0,0,0,0,0\n");
k_msleep(1000);
}
}
while (1) {
sensor_sample_fetch(vl53);
printk("HELLO\n");
sensor_channel_get(vl53, SENSOR_CHAN_DISTANCE, &dist);
// On formate la ligne avec 8 colonnes pour ton script Python
// Distance dans la première colonne, le reste à zéro
printk("%d.0,0.0,0.0,0.0,0.0,0.0,0,0\n", dist.val1);
k_msleep(200); // 5Hz (Fréquence par défaut de ton script Python)
}
}
And here is the RTT console response :
SEGGER J-Link V8.86 - Real time terminal output SEGGER J-Link (unknown) V1.0, SN=1057791783 Process: JLink.exe [00:00:00.002,148] <dbg> os: z_impl_k_mutex_lock: 0x20000e88 took mutex 0x200007bc, count: 1, orig prio: 0 [00:00:00.002,156] <dbg> os: z_impl_k_mutex_lock: 0x20000e88 took mutex 0x20000780, count: 1, orig prio: 0 --- 11 messages dropped --- [00:00:00.002,162] <dbg> cracen: cracen_acquire: Powered on CRACEN. [00:00:00.002,168] <dbg> os: z_impl_k_mutex_unlock: mutex 0x20000780 lock_count: 1 [00:00:00.002,174] <dbg> os: z_impl_k_mutex_unlock: new owner of mutex 0x20000780: (nil) (prio: -1000) [00:00:00.002,196] <dbg> os: z_impl_k_mutex_lock: 0x20000e88 took mutex 0x20000780, count: 1, orig prio: 0 [00:00:00.002,203] <dbg> cracen: cracen_release: Powered off CRACEN. [00:00:00.002,209] <dbg> os: z_impl_k_mutex_unlock: mutex 0x20000780 lock_count: 1 [00:00:00.002,215] <dbg> os: z_impl_k_mutex_unlock: new owner of mutex 0x20000780: (nil) (prio: -1000) [00:00:00.002,221] <dbg> os: z_impl_k_mutex_unlock: mutex 0x50m 113
Someone can help me please?
Thank you !
Best regards