sto testando una board appena progettata con microcontrollore STM32MP1 e PHY ethernet ADIN1200 della Analog Devices. Le connessioni fra il MAC a bordo del STM32MP1 e PHY ADIN1200 sono le seguenti:
Purtroppo non riesco a scrivere/leggere i registri del PHY in maniera corretta per cui chiedo un aiuto/consiglio a voi.
In particolare mi sto concentrando nella lettura di un registro "read only" che contiene informazioni del produttore e modello del device. Interrogando il registro 0x03 dell'ADIN1200 con PHY address 0x00 (impostato via HW) mi aspetterei di leggere il valore 0XBC08, come suggerisce il datasheet. I valori che riesco a leggere, a distanza di pochi secondo gli uni dagli altri, invece, sono molto variabili. Ad es. le ultime letture sono:
- 0000
- F782
- 5FC2
- BC20 (corretto!!)
- BE10
Ho misurato le forme d'onda molto vicino al PHY e, tralasciando un po' di ringing che ho parzialmente risolto (solo su MDC), non vedo grandissimi problemi. A dir la verità c'è il bit sulla destra nel canale dati MDIO che ha una forma arrotondata ma credo sia normale in quanto quello è il primo "1" inviato dal PHY verso il MAC e segue regole leggermente differenti. Approfondendo i dettagli sui tempi di campionamento e tempistihe di questi segnali sembra che comunque rientri tutto nello standard IEEE 802.3.
Nell'immagine sopra si possono notare (mi riferisco anche all'immagine sotto "MDIO frame format"):
- con il marker B la fine del preambolo di 32 bit "uni";
- con il marker b, la fine dell'indirizzo del registro che si vuole leggere (0b00011);
- il bit 1 nel canale MDIO nella parte destra della schermata (ossia la parte del frame che contiene i dati). Ovviamente si tratta di una lettura errata perché ho un solo bit "1" mentre mi aspetterei uno "0xBC08" che di "uni ne contiene diversi.
Il fatto che il PHY risponda al MAC con dati molto differenti mi fa pensare che sia il PHY stesso ad interpretare in maniera errata il comando di lettura che gli viene inviato dal MAC tuttavia il messaggio di richiesta di lettura ha questo formato:
e, se provo tramite MAC ad effettuare la richiesta di lettura di un PHY con indirizzo diverso dall'indirizzo dell'unico PHY connesso (0x00), non ricevo alcuna risposta. Segno che l'ADIN1200 che utilizzo interpreta correttaemnte la richiesta di lettura a lui inviata. A questo punto immagino che interpreterà bene anche la restante parte del pacchetto (reg. address + data)...
D'altra parte, anche il MAC sembra che interpreti bene la risposta del PHY. Con l'oscilloscopio posso infatti verificare la piena coerenza fra ciò che legge il MAC (tramtie terminale di debug uart connesso al microcontrollore) ed i livelli di tesnione del bus MDIO + MDC.
Grazie


Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
