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("😊 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로 간단히 구현 할 수 있는 좋은 솔루션을 확보 한것 같다.
반응형