Hayırlı günler,
Kart belgelendirmesinde LPS22DF Kart Özellikleri - T3 Foundation Gemstone Project barometresi yer aldığı söylenmekte ancak başka sayfada ise PX4 - T3 Foundation Gemstone Project burada katta barometre bulunmadığı yazıyor. Ek olarak bir süredir px4 sürücüleri üzerinden barometreden veri almaya çalışsam da veri gelmemekte. lps22df: no instance started (no device on bus?) ek olarak device tree üzerinden linux erişimine px4 ile karışmasın diye kapatıldı.
k3-am67a-t3-gem-o1-px4-r5f.dtso
// SPDX-License-Identifier: GPL-2.0-only OR MIT
/*
* PX4-R5F mode: disable Linux drivers for peripherals owned by MAIN R5F.
*
* Mutually exclusive with edgeai-apps.dtbo and ArduPilot enable overlays
* (spidev, pwm-*, uart-ttys*).
*
* Copyright (C) 2026 T3 Foundation - https://www.t3vakfi.org/
*/
/dts-v1/;
/plugin/;
/*
* Helper to show loaded overlays under: /proc/device-tree/chosen/overlays/
*/
&{/chosen} {
overlays {
k3-am67a-t3-gem-o1-px4-r5f.kernel = __TIMESTAMP__;
};
};
/ {
fragment@0 {
target = <&mcu_spi0>;
__overlay__ { status = "disabled"; };
};
fragment@1 {
target = <&main_uart0>;
__overlay__ { status = "disabled"; };
};
fragment@2 {
target = <&main_uart1>;
__overlay__ { status = "disabled"; };
};
fragment@3 {
target = <&main_uart6>;
__overlay__ { status = "disabled"; };
};
fragment@4 {
target = <&mcu_i2c0>;
__overlay__ { status = "disabled"; };
};
fragment@5 {
target = <&epwm0>;
__overlay__ { status = "disabled"; };
};
fragment@6 {
target = <&epwm1>;
__overlay__ { status = "disabled"; };
};
fragment@7 {
target = <&ecap0>;
__overlay__ { status = "disabled"; };
};
fragment@8 {
target = <&ecap1>;
__overlay__ { status = "disabled"; };
};
fragment@9 {
target = <&ecap2>;
__overlay__ { status = "disabled"; };
};
/* IMU_EN (mcu_gpio0 pin 12): base DTS gpio-hog conflicts with R5F GPIO_IMU_EN */
fragment@10 {
target = <&mcu_gpio0>;
__overlay__ { status = "disabled"; };
};
};
Beklenen
LPS22DF, MCU_MCSPI0 channel 1. WHO_AM_I register 0x0F, değer 0xB4. SPI mode 3, 10 MHz. Command byte 0x8F (0x0F | 0x80).
Ölçülen
Aynı boot, aynı MCSPI (0x04b00000):
- Channel 3, ICM-20948: WHO_AM_I
0xEA. - Channel 1,
0x0Fdata phase, iki kez: RX word0x00000000.0xB4kelimenin hiçbir byte’ında yok. - Channel 1,
0x11(CTRL_REG2) data phase, iki kez:0x00000003. Datasheet reset değeri0x00. - Transfer bitiyor:
TXS=1,RXS=1.REVISION=0x2b.
Sürücü RX0 low 8 bitini kullanıyor. 0x03 o low byte’ta. Kimlik kelimesinin tamamı sıfır olduğu için yanlış byte seçimi değil.
Yazılımın o anda yazdığı
- CS1 pad A10 mux 0. Okunan pad
0x00010000. - Channel 1
CHCONF=0x201603d3:FORCE=1,EPOL=1, mode 3. TRM SPRUJB3C 12.1.3.4.3.5.2: bu kombinasyonSPIENlow. SINGLE=1.SPIENSLV=0channel 1 ve channel 3’te. ICM0xEAverdiği için bu alan CS3’ü de seçmiyor.
Soru
Controller mode, SINGLE=1, channel 1 FORCE=1 iken RX0 neden bir register için 0x00000003, kimlik register’ı için 0x00000000 oluyor? Channel register bankası ve FORCE bu SoC’ta CS1’i seçmek için yeterli mi, yoksa channel 1’den önce EOT veya başka bir CHCONF adımı şart mı?
sürücü kısmında LPS22DF ıkısmında ve spi kısmında debub logları bıraksam da bir sonuç alamadım. Bundan sonrasında ne yapılabilir.