Area SX srl - Informatica e Microelettronica
0
Torna a: Home Page Soluzioni Microcontrollori Linux Embedded Guida all'utilizzo della FOX con la SX18

Guida all'utilizzo della FOX con la SX18

Data di pubblicazione: 21-09-2005 | Versione Italiana  | English Version
Parole chiave: - How-To - Linux - Schede Area SX -

In questa sezione presentiamo un mini how-to che, grazie a schemi elettrici e sorgenti di test, fornisce le linee guida per iniziare a sviluppare con la FOX e la SX18. Proprio di quest'ultima verrà spiegato come interfacciarsi alle varie periferiche di cui è dotata.

Sommario dell' HOW-TO

La FOX in sintesi

La FOX  è una scheda di ridotte dimensioni, solo 66 x 72 mm, basata sul microprocessore ETRAX LX100 MCM 4+16 prodotto dalla Axis, su cui gira un completo ambiente Linux completo di server WEB, FTP, SSH ecc. Oltre ad un interfaccia Ethernet 10/100 Base/T e di due porte USB 1.1 master, la FOX  è dotata di due connettori 20x2 passo 2.54mm su cui sono attestate 62 linee di I/O, un port I2C bus e 3 seriali asincrone.

Di seguito è riportato il pinout completo, indispensabile per utilizzare la FOX.

J7
Pin Dir Function Axis ref
1   GND  
2   GND  
3 I/O IOG22 H18
4 I/O IOG23 H19
5 I/O IOG20 G19
6 I/O IOG21 G20
7 I/O IOG18 F19
8 I/O IOG19 G18
9 I/O IOG16 G17
10 I/O IOG17 E20
11   N.A. J17
12   N.A. C19
13 O OG25 A20
14   N.A. C20
15   N.A. B20
16   N.A. C18
17   N.A. E18
18   N.A. D19
19   N.A. E17
20   N.A. D20
21 I/O IOG24 E19
22 O I2C_RES N18
23   N.A. W20
24   N.A. C8
25   N.A. U19
26   N.A. T17
27   N.A. Y10
28   N.A. V19
29   +5V  
30 I IRQ U9
31 I DCD2 U7
32 I DSR2 V6
33 I RI2 Y5
34 O DTR2 W5
35 O DL1 Y4
36 O DL2 Y3
37 I SW1 U5
38 I/O PA0 W1
39   +3.3V  
40   +3.3V  
J2
Pin Dir Function Axis ref
1   N.C.  
2   GND  
3   GND  
4   +5V  
J10
Pin Dir Function Axis ref
1   +3.3V  
2 O RTS1  
3 O TXD1  
4 I RXD1  
5 I CTS1  
6   GND  
J6
Pin Dir Function Axis ref
1   +3.3V  
2   +3.3V  
3 O RTS3 B19
4 I RXD3 J18
5 O TXD3 H20
6 I CTS3 J19
7 O RTS2 P19
8 I RXD2 J20
9 O TXD2 K19
10 I CTS2 K18
11 I NMI A18
12   +5V  
13 I/O IOG9 L18
14 I/O IOG8 L20
15 I/O IOG11 M19
16 I/O IOG10 L19
17 I/O IOG13 M17
18 I/O IOG12 M18
19 I/O IOG15 N19
20 I/O IOG14 N20
21 O OG2 K20
22 O OG5 P17
23 O OG1 P20
24 I IG1 R18
25 O OG4 R19
26 O OG3 R20
27 I IG4 T18
28 I IG3 T19
29 I IG2 T20
30 I IG5 V20
31 O I2C_CLK W16
32 I/O I2C_DATA V15
33   N.A. V16
34   N.A. Y17
35   N.A. Y18
36 I/O PB4 W17
37 I/O PB7 U16
38 I/O PB6 Y19
39   GND  
40   GND  

 La SX18 in sintesi

La scheda SX18 è un hardware ideato per consentire la realizzazione di progetti che utilizzano FOX senza il bisogno di circuiti esterni o collegamenti filati per alimentazione o periferiche.

Nelle dimensioni di 150 x 80 mm trovano posto:

  • una porta seriale RS232 attestata su un connettore pannellabile
  • un connettore per un modulo ricetrasmettitore in radiofrequenza ER400TRS (per ulteriori informazioni: Trasmissioni in Radiofrequenza facili con Easy Radio)
  • un chip Real Time Clock DS1302 con batteria tampone al litio
  • due pulsanti di test
  • tre led di utilizzo generale
  • 1 led di alimentazione
  • 3 connettori di espansione 5+5 di uso generale
  • 1 connettore di espansione compatibile con la scheda di Ingresso/Uscita SX16 (per ulteriori informazioni: SX16B - Scheda di espansione IN/OUT)
  • 1 connettore di espansione compatibile con la scheda dimmer SX13 (per ulteriori informazioni: Dimmer multifunzione)
  • 1 connettore di espansione per il collegamento di un display LCD

Oltre alle periferiche appena descritte è stata integrata nella SX18 una completa sezione d'alimentazione a range esteso, che permette di alimentare il tutto con un normale trasformatore a parete 220v - 12V.

Schema elettrico completo della SX18 : SX18_Schematic.pdf

Come compilare e caricare i programmi per la FOX

Il principale linguaggio di programmazione della FOX è il C. I sorgenti, che possono essere scritti con un normale editor di testo, vanno compilati tramite l'apposito SDK, disponibile al momento solo per ambiente Linux, scaricabile gratuitamente dal sito AXIS all'URL: http://developer.axis.com/download/compiler/old/
o in alternativa usando WebCompiler accessibile alla pagina http://www.acmesystems.it/?page=webcompiler.

Il file .out che otteniamo al termine della compilazione, può essere caricato nella memoria RAM o FLASH della FOX attraverso un normalissimo client FTP, aprendo una sessione verso l'IP assegnato alla scheda (per default 192.168.0.90) ed usando, per loggarsi come username root e password acme.



Per salvare il programma in RAM è necessario trasferire via FTP il file .out nella directory /var/state. Questa posizione permette di provare i propri programmi ma appena viene tolta l'alimentazione alla scheda, i file caricati vengono cancellati. Per salvare il nostro programma in FLASH, bisogna sempre tramite client FTP salvare il file .out nella directory /mnt/flash/ in questo caso anche se tolta l'alimentazione i file non vengono persi.

Una volta completato l'upload dei file, per eseguire i programmi si deve aprire una console telnet o SSH (si può usare come client Putty se si lavora sotto windows)

scendere nella cartella dove è stato copiato il programma

es:
cd /var/state

e rendere eseguibile il file con il comando che segue:

chmod +x programma.out

a questo punto possiamo lanciare il nostro esempio precedendo al nome dell'eseguibile un "./"

./programma.out
 

Controllare i LED di test

I tre LED di test presenti sulla SX18: DS2, DS3 e DS4 sono collegati rispettivamente ai pin 13 (OG25), 21 (OG0) e 38(PA0) presenti sul connettore J7 della FOX.

Di seguito è riportato un semplice sorgente di test che, dopo aver inizializzato i vari port, fa lampeggiare in successione i tre LED.

#include "stdio.h"    
#include "unistd.h"   
#include "sys/ioctl.h"
#include "fcntl.h"    
#include "time.h"    
#include "asm/etraxgpio.h"

#define LED_1  1<<25
#define LED_2  1<<24
#define LED_3  1<<0
#define IO_SETGET_OUTPUT  0x13

int main(void) {
  int fda;
  int fdg;
  int iomask_a;
  int iomask_b;
  int iomask_g;
  int i;

  if ((fda = open("/dev/gpioa", O_RDWR))<0) {
    printf("ERRORE nell'apertura di /dev/gpioa\n");
    return 1;
  }
  if ((fdg = open("/dev/gpiog", O_RDWR))<0) {
    printf("ERRORE nell'apertura di /dev/gpiog\n");
    return 1;
  }
  iomask_a = LED_3;
  ioctl(fda, _IO(ETRAXGPIO_IOCTYPE, IO_SETGET_OUTPUT),&iomask_a);
  iomask_g = LED_1 | LED_2;
  ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_SETGET_OUTPUT),&iomask_g);
 
while (1) {
    printf("Test LED\n");
    ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_SETBITS),LED_1);  //LED 1 ON
    sleep(1);
    ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_CLRBITS),LED_1);  //LED 1 OFF
    sleep(1);
    ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_SETBITS),LED_2);
    sleep(1);
    ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_CLRBITS),LED_2);
    sleep(1);
    ioctl(fda, _IO(ETRAXGPIO_IOCTYPE, IO_SETBITS),LED_3);
    sleep(1);
    ioctl(fda, _IO(ETRAXGPIO_IOCTYPE, IO_CLRBITS),LED_3);
    sleep(1);
  } 
  close(fda);
  close(fdg);
  return 0;
}

Controllare i pulsanti di test

I due pulsanti test S3 e S4 sono collegati ai pin 29 (IG2)  e 28 (IG3)  del connettore J6 della FOX.

Di seguito è riportato il sorgente di test per interfacciarsi con i due pulsanti. Ogni volta che uno di questi viene premuto appare sulla console un messaggio che identifica quale dei due è stato chiuso a massa.

#include "stdio.h"    
#include "unistd.h"   
#include "sys/ioctl.h"
#include "fcntl.h"    
#include "time.h"    
#include "asm/etraxgpio.h"

#define BUTTON_1  1<<2
#define BUTTON_2  1<<3
#define IO_SETGET_INPUT   0x12

int main(void) {
  int fdg;
  int iomask_g;
  unsigned char value = 0;
 
  if ((fdg = open("/dev/gpiog", O_RDWR))<0) {
    printf("ERRORE nell'apertura di /dev/gpiog\n");
    return 1;
  }
  iomask_g = BUTTON_1 | BUTTON_2;
  ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_SETGET_INPUT),&iomask_g);
 
 while(1) {
    value=ioctl(fdg, _IO(ETRAXGPIO_IOCTYPE, IO_READBITS));
    if ((value&(BUTTON_2))==0)
      printf("Pulsante 1 premuto\n");
    if ((value&(BUTTON_1))==0)
      printf("Pulsante 2 premuto\n");
  }
}

La seriale RS232

Sulla SX18 è presente un completo stadio RS232 composto da un MAX232 (integrato per convertire i livelli da TTL/CMOS a RS232 ) e un connettore DB a 9 poli maschio. Oltre ai classici segnali RX e TX, sono riportati sul connettore anche i controlli di flusso RTS e CTS. Lo stadio seriale RS232 è collegato al device della FOX identificato come /dev/ttyS3 riportato sui pin 3 (RTS), 4 (RX), 5 (TX) e 6 (CTS)  del connettore J6 di quest'ultima.

Per effettuare il test della seriale, è necessario collegare la SX18 ad un PC tramite un cavo seriale incrociato il cui schema è riportato di seguito:

E' necessario questo particolare cavo perchè il binomio FOX - SX18 è configurato come DTE (Data Terminal Equipment) che in un collegamento seriale è l'equivalente di un PC.

Il sorgente di test proposto è un semplice programma ECHO che rinvia sulla seriale tutto quello che da essa riceve. Il sorgente vuole essere solo un esempio che mostra come instaurare una semplice  comunicazione con le porte seriali della FOX, in questo caso particolare con ttyS3.

#include <stdio.h>    
#include <string.h>   
#include <unistd.h>   
#include <fcntl.h>    
#include <termios.h>  
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <stdlib.h>

#define BAUDRATE B19200
#define DEVICE "/dev/ttyS3"

int main (int argc, char * argv[]) {
  int fd, res;
  struct termios oldtio,newtio;
  char buf[200];
  printf("Apertura Porta COM\n");
  fd = open(DEVICE, O_RDWR | O_NOCTTY);
  if (fd < 0 ) {
    printf("Device %s non presente su questo sistema\n\n", DEVICE);
    exit(-1);
  }
  printf("Inizializzazione della comunicazione seriale\n");
 
  tcgetattr(fd,&oldtio); /* Salva i precedenti settaggi */
 
  bzero(&newtio, sizeof(newtio));
  newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
  newtio.c_iflag = IGNPAR;
  newtio.c_oflag = 0;
  newtio.c_lflag = 0;
  newtio.c_cc[VTIME] = 0;
  newtio.c_cc[VMIN] = 1;
 
  tcflush(fd, TCIFLUSH);
  tcsetattr(fd,TCSANOW,&newtio);
  //Inizializzazione device seriale terminata
  sprintf(buf, "Ciao sono la FOX sulla SX 18 :)\n\rScrivi ti ascolto (digita Q per terminare)\n\r");
  if (write(fd, buf, strlen(buf)) < 0) {
    printf("INVIO SULLA SERIALE FALLITO\n");
  } 
  while(1){
    res = read(fd,buf,sizeof(buf));
    buf[res]=0;
    if (write(fd, buf, strlen(buf)) < 0) {
      printf("INVIO SULLA SERIALE FALLITO\n");
    }
    if (buf[0]=='Q') break;
  }
  printf("\nChiusura comunicazione seriale...\n");
  tcsetattr(fd,TCSANOW,&oldtio);
  printf("Arrivederci :)\n");
  close(fd);
  exit(0);
}

Per provare il tutto occorre: collegare un PC con la SX18-FOX attraverso un cavo seriale incrociato (sopra descritto); aprire sul PC una console seriale es: Hyperterminal o Minicom e una seconda console SSH verso la FOX  per lanciare l'applicazione TEST_SERIALE.C. OUT (file ricavato al termine della compilazione del sorgente sopra riportato) precedentemente caricata nella memoria della FOX.
A questo punto tutto quello che digiteremo su Hyperterminal lo vedremo comparire sullo stesso dopo essere passato per la FOX.

L'interfaccia RF

La SX18, opzionalmente, può essere equipaggiata con un modulo Easy Radio ER400TRS, per la trasmissione via radio di dati seriali. Tale modulo consente di stabilire un affidabile link seriale senza utilizzare fili. Il modulo integra già tutte le funzionalità necessarie ad una trasmissione radio: codici a controllo di errore, gestione delle ritrasmissioni, controllo di potenza, ecc.

Lo stadio seriale RF è connesso al device della FOX identificato come /dev/ttyS2 e riportato sui pin 8 (RXD) e 9 (TXD) del connettore J6 di quest'ultima.

Il link seriale RF può essere adoperato per: comandare la SX16-RF  una completa scheda d'espansione I/O wireless,  oppure  per connettere via onde radio la SX18 direttamente ad un PC  dotato del modulo USBRF04

Il sorgente per testare la periferica RF della SX18 è identico a quello precedentemente visto per provare lo stadio RS232, bisogna soltanto modificare il define DEVICE come segue:

#define DEVICE "/dev/ttyS2"

Al transito dei dati vedremo lampeggiare il led verde etichettato con RFTX.
 

RTC Real Time Clock

Nella SX18 è presente un RTC DS1302 della Dallas, con relativa batteria tampone,  pienamente supportato dal kernel della FOX. L'RTC è indispensabile per mantenere memorizzati data e ora sul sistema FOX anche quando viene tolta l'alimentazione.

Per impostare l'orario e la data, da console, lanciare il comando data con la seguente sintassi:

data MMDDHHmmYYYY

dove:

MM il mese da 01 a 12
DD il giorno da 01 a 31
HH l'orario da 00 a 24
mm i minuti da 00 a 59
YYYY l'anno per esteso

es:
date 051813502005

per salvare permanentemente le impostazioni  nel chip RTC e far si che il sistema le ricarichi  ad ogni riaccensione, bisogna lanciare il comando

hwclock -w

Se si vuole visualizzare la data settata sulla FOX, basta digitare da console il comando data

Expander per SX16

Il connettore a 10 poli individuato con la scritta "SX16 EXPANDER" è stato studiato per la connessione diretta alla FOX di una SX16-BASE.

Questa particolare configurazione della SX16, pur mantenendo invariata la sua dotazione di I/O, è molto più economica perchè non dotata di PIC e modulo Easy Radio ER400TRS.
La dotazione hardware comprende:

- 24 ingressi di cui
        8 ingressi diretti a livelli TTL (0V-5V)
        8 ingressi filtrati (filtro CLC) a livelli TTL (0V-5V)
        8 ingressi optiosolati a cui è possibile collegare tensioni fino a 24V CC, configurabili anche come ingressi TTL (0V-5V)
- 6 uscite a relè che consentono di operare con tensioni fino a 125V (30W di carico)
- 1 sensore di temperatura DS1621 con precisione 1/2 grado e range compreso tra -55 a + 128°C

La SX16-BASE è la soluzione ideale per implementare un completo stadio di I/O al proprio micro usando poche linee di controllo di quest'ultimo.

L'expander SX16 è connesso i pin della FOX secondo lo schema riportato nella tabella che segue

FOX SX16 EXPANDER su  SX18  

JP2 su SX16-BASE

PB6 (pin 38-J6) pin 1 <-> SDA (pin 1)
PB7 (pin 37-J6) pin 2 --> SCL (pin 2)
OG3 (pin 26-J6) pin 3 --> ICL (pin 3)
IG1 (pin 24-J6) pin 4 <-- IDA (pin 4)
OG5 (pin 22-J6) pin 5 --> IPL (pin 5)
OG1 (pin 23-J6) pin 6 --> OCL (pin 6)
OG4 (pin 25-J6) pin 7 --> STR (pin 7)
OG2 (pin 21-J6) pin 8 --> ODA (pin 8)
VCC +5V pin 9 --- VCC +5V (pin 9)
GND pin 10 --- GND (pin 10)

Il sorgente per testare i vari stadi che compongono la SX16 è descritto nell'articolo Controllare la SX16-BASE dalla FOX board
 

Expander LCD

L'expander serigrafato "LCD EXPANDER" presente sulla SX18 è stato implementato  per poter collegare  in modo semplice e veloce alla FOX un display LCD con interfaccia Hitachi HD44780.

Sul connettore a 10  poli JP11, oltre all'alimentazione per il display, è collegato anche un trimmer (R12) indispensabile per gestirne il contrasto.

I pin della FOX connessi all'expander LCD sono descritti nella tabella che segue:

FOX ESPANDER LCD su SX18 LCD
IOG8 (pin 14-J6) pin 1 D0
IOG9 (pin 13-J6) pin 2 D1
IOG10 (pin 16-J6) pin 3 D2
IOG11 (pin 15-J6) pin 4 D3
IOG12 (pin 18-J6) pin 5 RS
IOG13 (pin 17-J6) pin 6 EN
IOG14 (pin 20-J6) pin 7 BL
Trimmer R12 pin 8  
VCC +5V pin 9 VCC
GND pin 10 GND

Esempi per controllare un display LCD sono disponibili al link: http://www.acmesystems.it/?id=8021.

Expander di I/O

I tre expander su connettori a 10 poli (5+5) alloggiati sulla SX18 identificati da  JP8, JP9 e JP10, sono a disposizione dell'utente e sono collegati ai Pin della FOX secondo lo schema delle tre tabelle che seguono:

EXPANDER JP8

FOX

EXPANDER JP8 su SX18
IOG8 (pin 14-J6) pin 1
IOG9 (pin 13-J6) pin 2
IOG10 (pin 16-J6) pin 3
IOG11 (pin 15-J6) pin 4
IOG12 (pin 18-J6) pin 5
IOG13 (pin 17-J6) pin 6
IOG14 (pin 20-J6) pin 7
IOG15 (pin 19-J6) pin 8
VCC +5V pin 9
GND pin 10

EXPANDER JP9

FOX

EXPANDER JP9 su SX18
IOG16 (pin 9-J7) pin 1
IOG17 (pin 10-J7) pin 2
IOG18 (pin 7-J7) pin 3
IOG19 (pin 8-J7) pin 4
IOG20 (pin 5-J7) pin 5
IOG21 (pin 6-J7) pin 6
IOG22 (pin 3-J7) pin 7
IOG23 (pin 4-J7) pin 8
VCC +5V pin 9
GND pin 10

EXPANDER JP10

FOX

EXPANDER JP9 su SX18
TXD (pin 9-J6) pin 1
RXD (pin 10-J9) pin 2
IG2 (pin 29-J6) pin 3
IG3 (pin 28-J6) pin 4
IG4 (pin 27-J6) pin 5
IG5 (pin 30-J6) pin 6
IRQ (pin 30-J7) pin 7
NMI (pin 11-J6) pin 8
VCC +5V pin 9
GND pin 10

Download

Di questa scheda è possibile scaricare:


Segnala questo articolo: 



Parole chiave: - How-To - Linux - Schede Area SX -

Data di pubblicazione: 21-09-2005Hits: 83131
I marchi citati sono propriet� dei titolari dei relativi diritti. Le caratteristiche tecniche e i prezzi riportati sono indicativi e soggetti a variazioni senza preavviso. Le foto non hanno valore contrattuale. Nonostante accurate verifiche, il presente documento pu� contenere prezzi o specifiche errati. Area SX si scusa in anticipo e si impegna ad evitare tali imprecisioni.

 Area SX store
In questa sezione puoi ordinare direttamente i prodotti descritti in questo articolo
FOX8+32;FOX-SX18;SX16-BASE;SX16-EXT-RF;SX18;BUN-FOX+18+16RF;BUN-FOX-18-16,FLEX-OUTPUT;SD_1Gb;DLP-IOR4
Tutti i prezzi indicati sono espressi in Euro con IVA e spese di trasporto escluse. I prezzi si riferiscono al singolo pezzo
DescrizioneCodicePrezzo
Per maggiori informazioniDLP-IOR4 Modulo con 4 relè ed interfaccia USB
Compatto modulo con 4 relè latch (i relè latch mantengono la posizione anche in assenza di alimentazione) ed interfaccia USB FTDI FT232RL.
Caratteristiche tecniche:
  • Alimentazione: da USB
  • Relè: 4 x relè latch 2A 250V AC
  • Interfaccia: USB 1.1 / 2.0 (chip FTDI FT232RL)
  • Temperatura operativa: 0-70°C
Il modulo DLP-IOR4 può essere interfacciato con i sistemi operativi: Windows 2000/XP/Vista/7, Linux e MAC OS; è compatibile con il sistemi Linux embedded: FOX ed SX ARM LINUX


Prodotto compliant RoHs
DLP-IOR4€ 60.00
Per maggiori informazioniPer maggiori informazioni

Rivenditori Social Contatti Condizioni
Area SX s.r.l
Via Stefano Longanesi 25
00146 Roma

Tel: +39.06.99.33.02.57
Fax: +39.06.62.20.27.85
P.IVA 06491151004
Condizioni di vendita
Procedura di rientro in garanzia
Condizioni per i rivenditori