본문 바로가기

[ST_MICRO]/STM32G0

[STM32G0 SSM] Arduino W5500 Ethernet WebServer 테스트

 

Arduino Ethernet2 라이브러리를 이용하여 W5500 EVM 모듈을 테스트 할수 있는 간단한 Ethernet Webserver 예제를 테스트 했다.

 

W5500의 IP 정보를 가져 오지 못한다.
server is at : 0.0.0.0
 
SPI 클럭 파형은 정상적인데... 뭐가 문제 일까?

 

 

 

출력 클럭이 정상이라면 입력(MISO)쪽이 문제이지 않을까?
GPIO_AF4_SPI2 -> GPIO_AF0_SPI2 로 변경하니 잘 동작한다.

 

#ifdef HAL_SPI_MODULE_ENABLED
WEAK const PinMap PinMap_SPI_MISO[] = {
  //{PA_9,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},
  //{PA_3,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},  
  {PA_3,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI2)},  
  
  {PA_11, SPI1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_SPI1)},
  {PB_6,  SPI2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_SPI2)},
  {NC,    NP,    0}
};
#endif

 

 

 

STM32G0의 내부 온도 센서값을 주기적으로 웹페이지에 출력하는 테스트 코드

void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html><center>");

          client.print("<h1>");
          client.print("&#128522 STM32G0 Temperature : ");

          int sensorReading = get_temperature();
          client.print(sensorReading);

          client.println("<br /></center></h1>");

          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

 

 

STM32G030를 이용하여 아주 저렴하고 소형의 웹서버를 Arduino로 간단히 구현 할 수 있는 좋은 솔루션을 확보 한것 같다.

반응형