117ELEKTRONIKA PRAKTYCZNA 9/2010
Ethernetowy sterownik I/O
Dodatkowe informacje:
Soyter Sp. z o.o., 05-082 Stare Babice, Blizne
Łaszczyńskiego, ul. Warszawska 3,
tel.: 22 722-06-85 wewn. 116,
fax: 22 722-05-50, www.soyter.pl
Dodatkowe materiały
na CD i FTP
Wygląd modułu EM500 pokazano na ry-
sunku 1. Wyprowadzenia są wykonane jako
22-pinowe złącze dwurzędowe. Opis funkcji
poszczególnych wyprowadzeń zamieszczo-
no w tabeli 1.
Moduł ma 512 kB wewnętrznej pamięci
Flash, która jest dzielona pomiędzy aplikację
użytkownika (320 kB) a system operacyjny
TiOS (192 kB). Oprócz Flash, moduł ma pa-
mięć EEPROM o pojemności 208 bajtów. Słu-
ży ona głównie do przechowywania nastaw,
a w EM500 nabiera szczególnego znaczenia,
ponieważ moduł nie ma wewnętrznego dysku
Flash. System operacyjny modułu EM500 udo-
stępnia wprawdzie obiekt o nazwie fd., będący
sterownikiem dysku Flash, jednak może on
współpracować jedynie z pamięciami zewnętrz-
nymi, dołączanymi za pomocą interfejsu SPI.
Pojemność pamięci RAM nieznacznie
przekracza 16 kB. Pamięć ta jest współdzie-
lona pomiędzy zmienne a bufory interfejsów
komunikacyjnych. W praktyce oznacza to, że
im więcej pamięci przeznaczymy na obsługę
połączeń TCP, tym mniej pozostanie jej na
zmienne.
Pewną trudnością w aplikacjach EM500
jest to, że wymaga on zewnętrznego układu
zerowania. Producent zaleca użycie specjali-
zowanych układów np. MCP130-300, co nie
wpływa korzystnie na budżet projektu.
Ścieżki łączące transformator oraz gniaz-
do RJ45 z modułem powinny być jak naj-
krótsze, co wymusza umieszczenie modułu
bardzo blisko gniazda. Interfejs Ethernet jest
zgodny z 10/100 BaseT i auto-MDIX. Przy-
kładowy schemat połączeń pokazano na ry-
sunku 2.
Linie wejścia-wyjścia
Poza interfejsem Ethernet moduł ma
8-bitowy port I/O oraz interfejs szeregowy
SPI o prędkości transmisji do 460,8 kbps mo-
gący pracować w jednym z kilku trybów.
Wewnętrzna budowa linii I/O wyma-
ga krótkiego komentarza. Typowo z portem
I/O powiązane są dwa rejestry. Od jednego
z nich zależy kierunek transmisji a od dru-
giego poziom napięcia na wyjściu. W ta-
kie rejestry wyposażone są starsze modu-
ły: EM1202, EM1206, EM1000. W module
EM500 zastosowano inną koncepcję, której
schemat pokazano na rysunku 2. Bufor
wyjściowy zawiera tranzystor pracujący
w układzie OE z rezystorem pull-up o dużej
rezystancji. Tak wykonana linia I/O może
przewodzić w stanie niskim prąd 10 mA,
natomiast jej obciążalność w stanie wysokim
jest niewielka. Ograniczenie to pozwala jed-
nak na pracę linii w charakterze wejścia, bez
potrzeby zmiany kierunku transmisji danych
poprzez port. Z podobnymi rozwiązaniami
portów quasi dwukierunkowych spotkamy
się w mikrokontrolerach (np. z rdzeniem In-
tel 8051). Należy jednak pamiętać, że aby od-
czytać poziom logiczny napięcia wejściowe-
go, najpierw trzeba wprowadzić tranzystor
w stan zatkania.
Sieciowy sterownik linii I/O
Mając wiedzę na temat działania poje-
dynczej linii portu I/O możemy przystąpić
do utworzenia przykładowego programu.
NOTATNIK KONSTRUKTORA
Ethernetowy sterownik I/O
Moduł EM500 umożliwia łatwe podłączenie urządzenia do sieci
Ethernet. O jego atrakcyjności decydują spore możliwości przy
miniaturowych wymiarach wynoszących zaledwie 18,5×16×6,5 mm.
Niżej prezentujemy praktyczną realizację miniaturowego sterownika
z możliwością komunikacja via protokół TCP/IP w oparciu o Tibbo
EM500.
Tabela 1. Wyprowadzenia modułu Tibbo EM500
Pin Funkcja Opis
1 (1,2,3)
GPIO0/P0.0/INT0 I/O (P0.0); linia przerwania 0
2 (1,2,3)
GPIO1/P0.1/INT1 I/O (P0.1); linia przerwania 1.
3 (1,2)
GPIO2/P0.2 I/O (P0.2)
4 (1,2)
GPIO3/P0.3 I/O (P0.3)
5 (1,2)
GPIO4/P0.4 I/O (P0.4)
6 (1,2)
GPIO5/P0.5 I/O (P0.5)
7 (1,2)
GPIO6/P0.6 I/O (P0.6)
8 (1,2)
GPIO7/P0.7 I/O (P0.7)
9 (1)
RX Linia wejścia portu szeregowego
10 (1)
TX Linia wyjścia portu szeregowego
11 GND GND
12 MD Zewnętrzny przycisk MD (w praktyce jest to kolejne linia przerwania)
13 RST Wejście zerujące
14 SE Linia diody stanu linku Ethernet
15 SR Czerwona dioda statusu LED
16 SG Zielona dioda statusu LED
17 RX- Port Ethernet: linia RX-
18 RX+ Port Ethernet: linia RX+
19 TX- Port Ethernet: linia TX-
20 TX+ Port Ethernet: linia TX+
21 AVCC Wyjście napięcia zasilającego obwód zewnętrznego transformatora Ethernet
22 VCC Zasilanie układu: 3,3 V (min. 260 mA).
Uwagi:
Linia akceptuje poziomy napięć TTL (5 V)
Może pełnić funkcję linii RTS/Wout/cout portu szeregowego
Może pełnić funkcję linii CTS/W0&1in/cin portu szeregowego
Rysunek 1. Wygląd modułu Tibbo EM500
Rysunek 2. Schemat quasi dwukierunko-
wej linii portu I/O
118 ELEKTRONIKA PRAKTYCZNA 9/2010
NOTATNIK KONSTRUKTORA
W tym celu należy pobrać instalator śro-
dowiska programistycznego TIDE w wersji
2.20.25 lub nowszej (dopiero od tej wersji
TIDE jest wspierany moduł EM500) oraz
obraz systemu operacyjnego TiOS w wersji
3.01.00. Instalacja systemu TiOS w module
jest wykonywana za pomocą programu De-
vice Explorer, instalowanego razem z TIDE.
Przykład programu jest oparty na sza-
blonie DHCP+setup Project, który można
wybrać przy rozpoczynaniu nowego pro-
jektu.
W pierwszej kolejności zajmiemy się
konfiguracją modułu po starcie systemu.
Przyjrzyjmy się listingowi 1, na którym za-
mieszczono obsługę zdarzenia systemowe-
go on_sys_init. Pierwsze linie odpowiedzial-
ne są za konfigurowanie IP modułu, aby
umożliwić dostęp z poziomu przeglądarki
WWW. W pamięci EEPROM jest tworzony
specjalny obszar, który zawiera niezbędne
nastawy. Obejmują one:
? informację czy konfiguracja IP jest sta-
tyczna czy ma zostać pobrana z serwera
DHCP (dynamiczna),
? adres IP (dla konfiguracji statycznej),
? maskę podsieci,
? adres IP bramy.
Mapę pamięci tego obszaru pokazano
na rysunku 3. Pod adresem początkowym
(Addr: 01) znajduje się znak poprawności
Addr: 044 Gateway
Addr: 040 Gateway Length
Addr: 024 Netmask
Addr: 020 Netmask Length
Addr: 004 IP
Addr: 002 IP Length
Addr: 001 Stor Valid Char
Rysunek 3. Mapa pamięci obszaru
konfiguracyjnego
Rysunek 4. Wygląd strony index.html
Rysunek 5. Wygląd strony config.html
Listing 1. Obsługa zdarzenia systemowego on_sys_init
sub on_sys_init()
dim dhcp_ip, dhcp_gateway, dhcp_netmask as string(16)
dim dhcp_result as ok_ng
dim ipcfg as ip_config
?perform IP configuration. First chceck if there is a valid configuration in
stor
if stor_valid() = NG then
stor_ip_set(STOR_DEFAULT_CONF, STOR_DEFAULT_IP, STOR_DEFAULT_NM, STOR_DEFAULT_
GW) ?if not, create the default configuration
end if
?get stor configuration
ipcfg = stor_ip_get()
?examine if we go for dhcp configuration
if ipcfg.conf = DHCP then
dhcp_lease_time=0 ?we clear this first
dhcp_result=dhcp_obtain(dhcp_ip,dhcp_gateway,dhcp_netmask,dhcp_lease_
time,??)
if dhcp_result = OK then set_ip(dhcp_ip, dhcp_gateway,
dhcp_netmask) ?dhcp ok
else
set_ip(ipcfg.ip, ipcfg.gateway, ipcfg.netmask)
?dhcp ng - use static conf
end if
else
set_ip(ipcfg.ip, ipcfg.gateway, ipcfg.netmask) ?use static
conf
end if
?end: perform IP configuration. First chceck if there is a valid configuration
in stor
?perform basic sock configuration
init_sock()
io_init()
end sub
Listing 2. Fragment pliku nagłówkowego config.tbh zawierającego domyślną
konfigurację IP
#define STOR_DEFAULT_CONF (STATIC_IP)
#define STOR_DEFAULT_IP (?172.16.0.10?)
#define STOR_DEFAULT_NM (?255.255.0.0?)
#define STOR_DEFAULT_GW (?172.16.0.1?)
List. 3. Obsługa zdarzenia przycisku MD
sub on_button_pressed()
?reset the ip setings to the default and reboot:
stor_ip_set(STOR_DEFAULT_CONF,STOR_DEFAULT_IP,STOR_DEFAULT_NM,STOR_
DEFAULT_GW)
sys.reboot
end sub
List. 4. Fragment pliku io.html
...
EM500 IO WebDriver
IP:
sock.setdata(net.ip)
sock.send
?>
File: io.html
...
Ethernetowy sterownik I/O
Środa, 01 Wrzesień 2010
Moduł EM500 umożliwia łatwe podłączenie urządzenia do sieci
Ethernet. O jego atrakcyjności decydują spore możliwości przy
miniaturowych wymiarach wynoszących zaledwie 18,5×16×6,5 mm.
Niżej prezentujemy praktyczną realizację miniaturowego sterownika
z możliwością komunikacja via protokół TCP/IP w oparciu o Tibbo
EM500.
Zobacz więcej w kategorii Notatnik konstruktora