Skip to content

W5100S-EVB-Pico OLED/DHCP

W5100S-EVB-Pico OLED/DHCP

Components

Hardware components

x 1


x 1


Project description

DETAILS

WIZnet의 W5100S-EVB-Pico 보드에 OLED를 추가하고 DHCP 동작 시험을 해 보았습니다.
핀 구성은 아래 그림처럼 지난번 pico 보드에서 연결한 것과 동일하게 하였습니다.
핀 구성은 아래 그림처럼 지난번 pico 보드에서 연결한 것과 동일하게 하였습니다.                      
처음에 로고를 출력하고 multicore_launch_core1() 함수를 이용해서 이더넷 처리와 메인함수를 코어 2개에 분리해서 동시에 처리하도록 하였습니다. 그래서 이더넷 처리와 다른 OLED와 CLI등 동시에 실행 가능합니다.
void apInit(void)
{
? ? cliOpen(_DEF_UART1, 115200);
? ? canOpen(_DEF_CAN1, CAN_NORMAL, CAN_CLASSIC, CAN_1M, CAN_1M);

? ? for (int i=0; i<32; i+=1)
? ? {
? ? ? ? lcdClearBuffer(black);
? ? ? ? lcdPrintfResize(0, 40-i, green, 16, " -- WIZnet --"); 
? ? ? ? lcdDrawRect(0, 0, LCD_WIDTH, LCD_HEIGHT, white);
? ? ? ? lcdUpdateDraw();
? ? ? ? delay(10);
? ? }
? ? delay(1000);

? ? lcdClearBuffer(black);
? ? lcdPrintfResize(0, 0, green, 16, "Getting IP.."); 
? ? lcdUpdateDraw();

? ? //multicore_launch_core1(loopback_test_main);
? ? //loopback_test_main();
? ? //dhcp_test_main();
? ? multicore_launch_core1(dhcp_test_main);
}
apMain()에서는 dhcp로 ip를 받아오면 OLED에 출력하도록 하였습니다. 그리고 CLI를 위해서 cliMain()을 호출 하고 있습니다.
void apMain(void)
{
    uint32_t pre_time;
    bool pre_dhcp_init = false;

    while(1)
    {
        if (millis()-pre_time >= 500)
        {
            pre_time = millis();
            ledToggle(_DEF_LED1);
        }

       if (dhcpIsInit() != pre_dhcp_init)
       {
           lcdClearBuffer(black);
           if (dhcpIsInit() == true)
           {
               wiz_NetInfo net_info;

               dhcpGetNetInfo(&net_info);
               lcdPrintfResize(0, 0, white, 16, "IP %d.%d.%d.%d",
                                                 net_info.ip[0],
                                                 net_info.ip[1],
                                                 net_info.ip[2],
                                                 net_info.ip[3]); 
           }
           else
           {
               lcdPrintfResize(0, 0, white, 16, "dhcp is empty");
           }
           lcdUpdateDraw();
           pre_dhcp_init = dhcpIsInit();
       }
        cliMain();
    }
}
실행을 해보면 처음에 로고를 출력하고 IP를 가져올때 까지 기다리다가 가져오게 되면 화면에 IP가 출력이 됩니다.
실행을 해보면 처음에 로고를 출력하고 IP를 가져올때 까지 기다리다가 가져오게 되면 화면에 IP가 출력이 됩니다.
해당 IP로 ping 해보면 정상적으로 응답이 오는 것을 알 수 있습니다.

Comments

Comments