Hej,
Mam połączonego procka STM32F103C8 z modułem ENC28J60 (ATB ETH 2.0). Napisałem krótki i prościutki program w celu sprawdzenia czy procek dogaduje się z modułem:
Konfiguracja SPI:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Taktowanie ustawione jest wprost z HSE 8MHz, CPOL i CPHA ustawione na 0.
Kod odczytujący rejestr ERDPTL (adres 0x08 Bank 0):
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wg noty katalogowej modułu ENC28J60 rejestr ten zawiera wartość równą 1111 1010 (0xFA):
Natomiast ja dostaję wartości 0x00, 0xFF, 0x80
Ale żeby nie było za nudno mam też analizator stanów logicznych i dla ustawień CPOL i CPHA = 0 wyskakuje mi komunikat, że stan bezczynności (idle state) dla sygnału CLK jest niezgodny z ustawieniami:
Natomiast dopiero po zmianie CPOL na 1 mogę podglądnąć wartości wysyłane na magistrali SPI (co jest niezgodne z moją konfiguracją SPI - patrz wyżej) :
Może macie jakiś pomysł dlaczego tak się dzieje?
Dlaczego w analizatorze muszę mieć inne ustawienia względem tego co mam kodzie ?
Dlaczego mogę dostawać inne wartości niż 0xFA?
Może moduł ENC28J60 jest uszkodzony?
Może coś mam źle napisane w kodzie ?
Może źle rozumiem datasheeta, chociaż tutaj znalazłem filmik potwierdzający moje rozumowanie
https://www.youtube.com/watch?v=9Wac0tJUMsE&ab_channel=MutexEmbedded-Education - patrz od 3:00)
Wszelkie pomysły/rady/uwagi mile widziane