Gestione scheda I2C custom connessa come estensione
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Gestione scheda I2C custom connessa come estensione
- Questo topic ha 8 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 8 anni, 1 mese fa da
Sergio Bertana.
-
AutorePost
-
Febbraio 17, 2015 alle 6:12 pm #35735
Giulio
PartecipanteStò disegnando una applicazione che prevede l’utilizzo di un modulo R/W RFID con I/F I2C. Nelle librerie LogicLab ho trovato il FB SysI2CWrRd che mi sembrava potesse essere utilizzato “così comè” per comunicare con la scheda.
Per caso c’è già qualche esperienza in merito alla gestione di moduli RFID 13,5 Mh (MIFARE 1KB) ? Ho individuato degli hardware di riferemento ma, essendo ancora in fase di progetto se trovassi qualcosa di già “avviato” su altri hardware potrei cambiare pur di risparmiare tempo di sviluppo e test.
Febbraio 18, 2015 alle 7:54 am #38740Sergio Bertana
Amministratore del forumHai visto bene per la gestione di periferiche custom connesse al bus di estensione di SlimLine abbiamo realizzato una specifica funzione SysI2CWrRd che permette di gestire l’accesso in lettura e scrittura di un qualsiasi dispositivo I2C. Utilizzando questa funzione è possibile fare coesistere senza problemi il dispositivo custom con i nostri moduli di estensione (Topic).
Per ulteriori informazioni sulla connessione di periferiche custom al bus di estensione puoi fare riferimento al Manuale hardware CPU SlimLine ARM7 OEM.
Unica esperienza sui moduli di interfaccia RFID è quella con il lettore RFID ProxPoint Plus della HID, questo modulo si connette tramite due ingressi digitali (Clock e Data) a due ingressi del sistema ed il FB HIDClkDtaReader ne provvede alla lettura (Topic). In questo topic un esempio pratico di utilizzo.
Febbraio 18, 2015 alle 10:22 pm #38742Giulio
PartecipanteDal manuale hardware (che non avevo ancora visto) leggo, par. 2.1, che non è possibile inserire sul bus I2C Slimline delle periferiche standard I2C! In realtà il paragrafo non mi risulta chiarissimo: Questo vuol dire che non è possibile utilizzare i moduli che stavo valutando che presentano, appunto, una interfaccia I2C “standard” con il loro indirizzo e un set di comandi per la gestione ? O forse il problema è solo relativo alla gestione degli I/O ? Tra l’altro ho visto delle vostre applicazioni (gestione del display alfanumerico e dello step motor) che mi sembra utilizzino hardware ‘standard’…
Contavo di utilizzare proprio un PIO I2C per comandare una semplice schedina con display a 7 segmenti ma davo per scontato l’immediato interfacciamento del modulo lettore RFID sul bus. Per la prima realizzazione, tutto “vicino”, non prevedevo neanche di inserire particolari reti di pull up o altre protezioni…
Il mio modulo, come dicevo, ha un I/F I2C standard, e un set di comandi formati da PDU di lunghezza variabile che consentono di leggere e scrivere i settori dei TAG RFID eventualmente connessi. Sono dotati di autorilevamento di TAG che utilizzerei tramite un ingresso standard della CPU per dare il via alla gestione. Allego manuale del SL018 Mifare Reader/Writer che è la periferica che intendo usare.
Non è stato possibile utilizzare l’HID, cosa che mi avrebbe assai semplificato la vita, perchè il cliente vuole salvaguardare i 5000 badge già esistenti che sono risultati essere MIFARE 1 a 13,5 Mhz.
Riassumendo, sul BUS Slimline dovrebbero convivere: da 1 a tre moduli di I/O “standard”, il lettore/scrittore RFID ed un semplice display… ce la possiamo fare ? Sempre grazie per l’attenzione e le concrete risposte !
Febbraio 19, 2015 alle 7:37 am #38743Sergio Bertana
Amministratore del forumL’aggiunta di moduli custom connessi al bus è uno dei plus che offriamo, può risultare conveniente abbinare ad un PLC classico con i suoi moduli di I/O ed il suo ambiente di programmazione dei proprii moduli creati su misura per l’applicazione, ed il tuo caso lo dimostra.
Il bus di estensione I2C viene gestito dal sistema operativo in multitasking, ed i nostri moduli di I/O hanno una logica che garantisce con il CRC sui dati la sicurezza della comunicazione. Tutti gli I/O del PLC mappati in memoria sono gestiti tramite questa interfaccia “sicura” che solo utilizzando la nostra FPGA è possibile garantire.
Con la funzione SysI2CWrRd è possibile gestire qualsiasi periferica I2C standard, quindi non hai problemi a gestire come da tua esigenza i moduli di I/O standard, il display ed il modulo RFID.
Marzo 11, 2015 alle 10:41 am #38793Giulio
PartecipanteStò facendo una serie di test con un modulo lettore RFID SL018 Mifare Reader/Writer connesso sul bus I2C, stò utilizzando la funzione SysI2CWrRd da un programma LD impostando i comandi in array di costanti e trasmettendoli ad modulo. Il tutto funziona correttamente, i comandi (lettura dell UID, lettura della relase del FW, login semplice etc.) funzionano in scrittura e lettura; nei buffer vedo valori corretti che evolvono esattamente come mi aspetto, ma la funzione SysI2CWrRd non ritorna mai esito positivo.
Ho utilizzato alimentazione, GND ed i segnali due segnali SCL ed SDA. Non utilizzo il segnale RDY (e non ne ho fatto il pull-up). Il cavetto è lungo 25-30cm, predisposto per un altro modulo che dovrò collegare. Ho fatto diverse prove assegnando il programma alla task Fast, Slow e Back senza notare differenze.
Marzo 11, 2015 alle 11:14 am #38794Sergio Bertana
Amministratore del forumNon mi dici che versione di sistema operativo è presente sul tuo modulo SlimLine, ti consiglio di aggiornarlo all’ultima versione in quanto le prime versioni presentavano un bug sul ritorno della funzione SysI2CWrRd, penso sia questo il tuo problema.
Ho dato una occhiata al datashet del lettore RFID ed ho notato che i comandi I2C operano su stream di dati in lettura con lunghezza superiore ai 10 bytes. Come vedi nel manuale noi consigliamo di non eccedere i 4 bytes in scrittura e lettura (Scambio di 8 bytes in totale) nella funzione SysI2CWrRd. Questo perchè durante l’accesso, il bus I2C viene monopolizzato, generando dei jitters sulla esecuzione delle tasks di priorità superiore.
L’acceso al bus I2C è relativamente lento (Per scambiare 10 bytes occorrono ca 350 uS), quindi và da sè che se hai più accessi consecutivi al bus con molti bytes in scambio, e sei in task Fast, non eseguirle tutte consecutivamente, altrimenti superi il tempo di esecuzioe di 1 mS (Che è il tempo di default con il quale viene eseguita la task Fast). Puoi prevedere un sequenziatore ed eseguire un acesso al bus I2C al loop di esecuzione.
Giugno 25, 2015 alle 7:15 am #38985Sergio Bertana
Amministratore del forumVisto che parliamo di Reader/Writer RFID aggiungo un link a questo topic e questo topic che trattano lo stesso argomento.
Marzo 7, 2017 alle 12:48 pm #39868Marcello
PartecipanteMi collego a questo topic per chiedere se sono necessarie le resistenze di pull up per la gestione dellìinterfaccia I2C. Chiedo perchè ho fatto delle prove (potenziometro digitale della Maxim-Dallas) senza resistenze e sono riuscito a comunicare.
A distanza di poche ore il dispositivo non comunicava più e credo che questo dipenda dall’assenza di dette resistenze.
Marzo 7, 2017 alle 2:26 pm #39869Sergio Bertana
Amministratore del forumIl circuito di uscita del bus di estensione I2C del modulo CPU come si vede dallo schema elettrico ha già al suo interno le resistenze di pull-up, quindi non è necessario inserire altre resistenze sul dispositivo slave.
Quando dici che il dispositivo non comunicava più non mi dici se la funzione SysI2CWrRd ritornava TRUE o FALSE. Puoi anche forzare da Telnet il comando i2cSts che visualizza elenco dispositivi connessi ai bus I2C (Vedi manuale comandi Telnet) per vedere se riconosce il dispositivo connesso.
Ho visto che il circuito I2C Pot ha due pin di indirizzamento, li hai settati correttamente, non è che sono rimasti appesi ed in questa condizione cambia il suo indirizzo I2C.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.