Dando continuidade aos artigos hands-on que estão acostumados a encontrar no Embarcados, vamos conectar a placa LPCXpresso4337 com Ethernet por meio da placa Shield OM13082.
Para isso vamos usar o artigo Primeiros Passos com a LPCXpresso4337 como base, no qual foi descrito detalhadamente como instalar a IDE LPCXpresso e o LPCOpen, conjunto de bibliotecas, middlewares, drivers e aplicações de exemplo da NXP.
Vamos para o nosso primeiro exemplo? Nele vamos começar a brincar com Ethernet.
Mas atenção, siga os passos do artigo Primeiros Passos com a LPCXpresso4337 para a criação do ambiente. Continuaremos com um host Linux. No meu caso, estou usando a distro Ubuntu 14.10 64 bits.
Ping e telnet na placa LPCXpresso4337
Um dos exemplos disponíveis no LPCOpen chama-se lwip_freertos_tcpecho, o qual faz uso do FreeRTOS como sistema operacional de tempo real, o lwIP como pilha TCP/IP e os drivers MAC e PHY para as famílias 18xx/43xx. A aplicação desenvolvida tem como objetivo demonstrar o uso das seguintes funcionalidades:
- monitoração do link PHY;
- cliente DHCP;
- ICMP Echo (ping);
- TCP Echo (RFC 862) por meio de telnet.
Para poder executar e visualizar a saída desse projeto, você deve criar o seguinte ambiente:
- Conectar a placa Shield OM13082 na placa LPCXpresso4337;
- Conectar a placa Shield OM13082 (conector CN5 RJ45) à uma rede LAN por meio de um cabo Ethernet;
- Conectar o PC/notebook onde está sendo executado a IDE LPCXpresso à mesma rede LAN da placa;
- Configurar um servidor de DHCP na rede LAN;
- Conectar um cabo serial no conector P4 da placa LPCXpresso4337 nos pinos GND, RX e TX para visualizar mensagens de depuração na porta UART do microcontrolador;
- Configurar um monitor serial no PC host;
- Conectar um cabo USB entre a placa LPCXpresso4337 (conector Link J5) e o PC host para depuração SWD.
Veja como ficou a conexão das placas e cabos no meu ambiente:
Uma vez que a IDE LPCxpresso esteja aberta com os projetos do LPCOpen disponíveis no Project Explorer, feche todos os projetos abertos (CTRL + A -> clicar com o botão direito do mouse em algum projeto selecionado -> comando Close Project no menu de contexto). O ambiente deve ficar da seguinte forma:
Agora temos que abrir o projeto lwip_freertos_tcpecho. Para isso selecione esse projeto no Project Explorer, clique com o botão direito do mouse nele e selecione o comando Open Project. Vai ser exibida uma mensagem da IDE questionando se os outros projetos referenciados podem ser abertos. Responda YES.
O ambiente deve ficar como abaixo depois dessas intruções:
A partir de agora navegue dentro do projeto e abra o arquivo freertos_tcpecho.c, como mostrado abaixo:
Por padrão o cliente DHCP está habilitado. Veja o arquivo lwipopts.h, na linha 83:
... /* DHCP is ok, UDP is required with DHCP */ #define LWIP_DHCP 1 #define LWIP_UDP 1 ...
Para conferir o IP obtido do servidor DHCP da rede, vai ser usada a porta serial UART da placa LPCXpresso4337, exibindo mensagens de debug. Para isso, confira se a ligação com o PC está correta e configure um monitor de serial no PC.
Vamos então executar o projeto? No painel Quickstart Panel execute o comando Debug ‘lwip_freertos_tcpecho’ [Debug] e em seguida o comando Resume.
O cliente DHCP na placa então inicia a busca por um IP dinâmico e quando o consegue é exibida uma mensagem na porta serial com o seguinte formato:
Link connect status: 1 IP_ADDR : 192.168.0.12 NET_MASK : 255.255.255.0 GATEWAY_IP : 192.168.0.1
O código que é executado para imprimir tal mensagem na serial é este, em freertos_tcpecho.c, na linha 182:
...
/* Print IP address info */
if (!prt_ip) {
if (lpc_netif.ip_addr.addr) {
static char tmp_buff[16];
DEBUGOUT("IP_ADDR : %s\r\n", ipaddr_ntoa_r((const ip_addr_t *) &lpc_netif.ip_addr, tmp_buff, 16));
DEBUGOUT("NET_MASK : %s\r\n", ipaddr_ntoa_r((const ip_addr_t *) &lpc_netif.netmask, tmp_buff, 16));
DEBUGOUT("GATEWAY_IP : %s\r\n", ipaddr_ntoa_r((const ip_addr_t *) &lpc_netif.gw, tmp_buff, 16));
prt_ip = 1;
}
}
...
Para testar o PING na placa, execute o seguinte comando no PC host:
henrique@henrique-550P5C-550P7C:~$ ping 192.168.0.12 PING 192.168.0.12 (192.168.0.12) 56(84) bytes of data. 64 bytes from 192.168.0.12: icmp_seq=1 ttl=255 time=60.1 ms 64 bytes from 192.168.0.12: icmp_seq=2 ttl=255 time=77.7 ms 64 bytes from 192.168.0.12: icmp_seq=3 ttl=255 time=2.52 ms
PING OK!!!
Vamos para o próximo? Telnet! Execute o seguintes comandos no PC host:
henrique@henrique-550P5C-550P7C:~$ telnet telnet> open 192.168.0.12 7 Trying 192.168.0.12... Connected to 192.168.0.12. Escape character is '^]'. teste de telnet na LPCXpresso4337! teste de telnet na LPCXpresso4337!
Neste exemplo foi configurada a porta 7 para tratar de dados via telnet. Cada caractere digitado no terminal é “echoado” pela placa.
TELNET OK!!!
Vamos testar outro projeto bacana? Que tal um Web Server? Para isso pare a depuração com o comando Terminate.
Webserver na placa LPCXpresso4337
Feche todos os projetos no Project Explorer e abra o projeto lwip_freertos_webserver. Seu Project Explorer deve ficar da seguinte forma:
Vamos então executar o projeto? No painel Quickstart Panel execute o comando Debug ‘lwip_freertos_webserver’ [Debug] e em seguida o comando Resume.
Veja as mensagens exibidas na serial depois que um IP dinâmico é conseguido:
Waiting for TCPIP thread to initialize... Starting LWIP HTTP server... IP_ADDR : 192.168.0.12 NET_MASK : 255.255.255.0 GATEWAY_IP : 192.168.0.1
Agora é só acessar do PC host a página web a seguir:
https://192.168.0.12/
WEBSERVER OK!!!
É isso pessoal! Agora já sabemos como usar a interface Ethernet da placa LPCXpresso e podemos criar novas aplicações. Deem dicas, se quiserem, e deixem seus comentários.










