Skocz do zawartości

Błąd sternika RFID - Raspberry pi zero 2 w + LCD 3.5 inch goodtft + RFID RC522


marinwold41

Pomocna odpowiedź

Cześć mam problem, próbuje podłączyć Raspberry pi zero 2 w + LCD 3.5 inch goodtft + RFID RC522 raspberry.
Wgrane sterowniki z https://github.com/goodtft/LCD-show.git dla LCD.
Wgrane sterowniki pythona dla RC522.
Komponenty działają osobno.

Próba ze sparowania razem:

RC522 :

SDA connects to Pin 36.

SCK connects to Pin 23.

MOSI connects to Pin 19.

MISO connects to Pin 21.

GND connects to Pin 6.

RST connects to Pin 22.

3.3v connects to Pin 1.

LCD:
Standardowo na przylutowanym (przyklejonym) złączu.

config:

dtparam=spi=on
dtoverlay=tft35a:rotate=90
dtoverlay=spi0-2cs,cs0_pin=8,cs1_pin=16
dtparam=audio=on
camera_auto_detect=1
display_auto_detect=1
#dtoverlay=vc4-kms-v3d
max_framebuffers=2
arm_64bit=1
disable_overscan=1

[cm4]
otg_mode=1

[pi4]
arm_boost=1

[all]
hdmi_force_hotplug=1
dtparam=i2c_arm=on
dtparam=spi=on
enable_uart=1
#dtoverlay=tft35a:rotate=90
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0
hdmi_drive=2


Dodatkowo skanuje wszystkie kanały:

import RPi.GPIO as GPIO
from mfrc522 import MFRC522
import time

# Testowanie różnych kombinacji bus i device
def test_rfid_reader():
    for bus in [0, 1]:
        for device in [0, 1, 2]:
            try:
                print(f"Testowanie: bus={bus}, device={device}")
                reader = MFRC522(bus=bus, device=device)
                time.sleep(1)  # Poczekaj na inicjalizację czytnika
                # Próbuj odczytać tag RFID
                (status, TagType) = reader.MFRC522_Request(reader.PICC_REQIDL)
                if status == reader.MI_OK:
                    (status, uid) = reader.MFRC522_Anticoll()
                    if status == reader.MI_OK:
                        print(f"Znaleziono działającą konfigurację: bus={bus}, device={device}")
                        print(f"ID: {uid}")
                        return
            except Exception as e:
                print(f"Błąd dla bus={bus}, device={device}: {e}")
            time.sleep(3)  # Poczekaj 3 sekundy przed testowaniem kolejnej konfiguracji

    print("Nie znaleziono działającej konfiguracji.")

try:
    test_rfid_reader()
except KeyboardInterrupt:
    print("Zakończono program.")
finally:
    GPIO.cleanup()


Niestety przy takiej konfiguracji ekran działa ale system nie widzi czytnika RFID.
Ma ktoś może jakiś pomysł ?

Dziękuje za pomoc.

Link do komentarza
Share on other sites

(edytowany)
/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2835";

    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
            #address-cells = <1>;
            #size-cells = <0>;

            spidev@0 {
                reg = <0>;  // CS0
                status = "okay";
            };

            spidev@1 {
                reg = <1>;  // CS1
                status = "okay";
            };

            spidev@2 {
                reg = <2>;  // Ustawienie na CS2
                status = "okay";
            };
        };
    };

    fragment@1 {
        target = <&gpio>;
        __overlay__ {
            waveshare35a_pins: waveshare35a_pins {
                brcm,pins = <17 25 24>;
                brcm,function = <0 0 0>;
            };
        };
    };

    fragment@2 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;

            waveshare35a: waveshare35a@0 {
                compatible = "ilitek,ili9486";
                reg = <0>;
                pinctrl-names = "default";
                pinctrl-0 = <&waveshare35a_pins>;
                spi-max-frequency = <16000000>;
                txbuflen = <32768>;
                rotate = <90>;
                bgr = <0>;
                fps = <30>;
                buswidth = <8>;
                regwidth = <16>;
                reset-gpios = <&gpio 25 1>;
                dc-gpios = <&gpio 24 0>;
                debug = <0>;

                init = <0x10000b0 0x00
                        0x1000011
                        0x20000ff
                        0x100003a 0x55
                        0x1000036 0x28
                        0x10000c2 0x44
                        0x10000c5 0x00 0x00 0x00 0x00
                        0x10000e0 0x0f 0x1f 0x1c 0x0c 0x0f 0x08 0x48 0x98 0x37 0x0a 0x13 0x04 0x11 0x0d 0x00
                        0x10000e1 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
                        0x10000e2 0x0f 0x32 0x2e 0x0b 0x0d 0x05 0x47 0x75 0x37 0x06 0x10 0x03 0x24 0x20 0x00
                        0x1000036 0x28
                        0x1000011
                        0x1000029>;
            };

            waveshare35a_ts: waveshare35a-ts@1 {
                compatible = "ti,ads7846";
                reg = <1>;
                spi-max-frequency = <2000000>;
                interrupts = <17 2>;
                interrupt-parent = <&gpio>;
                pendown-gpio = <&gpio 17 1>;
                ti,x-plate-ohms = <60>;
                touchscreen-max-pressure = <255>;
            };
        };
    };

    __overrides__ {
        speed = <&waveshare35a>,"spi-max-frequency:0";
        txbuflen = <&waveshare35a>,"txbuflen:0";
        rotate = <&waveshare35a>,"rotate:0";
        fps = <&waveshare35a>,"fps:0";
        bgr = <&waveshare35a>,"bgr:0";
        debug = <&waveshare35a>,"debug:0";
        invertx = <&waveshare35a_ts>,"touchscreen-inverted-x?";
        inverty = <&waveshare35a_ts>,"touchscreen-inverted-y?";
        swapxy = <&waveshare35a_ts>,"touchscreen-swapped-x-y?";
    };
};

Zmieniłem także na sterowniku spidev z disabled na okay ale nadal nie można się dostać do spi przy włączonym LCD w config.txt

Edytowano przez marinwold41
Link do komentarza
Share on other sites

Dnia 26.09.2024 o 13:10, marinwold41 napisał:

SDA connects to Pin 36.

SCK connects to Pin 23.

MOSI connects to Pin 19.

MISO connects to Pin 21.

GND connects to Pin 6.

RST connects to Pin 22.

3.3v connects to Pin 1.

Gotowe płytki z RC522 mają zazwyczaj ustawienie komunikacji tylko po SPI, choć układ może zostać ustawiony również na I2C oraz UART.
W trybie SPI, pin SDA pełni funkcję Chip Select (CS).
 

Dnia 26.09.2024 o 13:18, marinwold41 napisał:

dtoverlay=spi0-2cs,cs0_pin=8,cs1_pin=16
przełączyłem SDA z Pin 24 na Pin 36.

To nie jest prawidłowe ustawienie dla pinu 36 ani 24.
 

50 minut temu, marinwold41 napisał:

Zmieniłem także na sterowniku spidev z disabled na okay ale nadal nie można się dostać do spi przy włączonym LCD w config.txt

Tam na razie nic nie grzeb, o ile w ogóle będzie tam cokolwiek koniecznego do modyfikacji...

Edytowano przez KatzePL
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.