위즈네트 아카데미

TUTORIAL

튜토리얼

Home  > 튜토리얼

WizFi310 Handling - UART Interface

WIZnet Academy 2016.09.20 14:10 조회 수 : 39

위즈네트에서 새롭게 출시하는  Wi-Fi 모듈인 WizFi310 에 대해서 소개하고, 기본적인 핸들링 방법에 대해서 설명합니다. 이번 포스팅은 실제 임베디드 단에서 Wi-Fi 구현을 진행한다는 가정하에 실제 MCU 플랫폼 보드와 연결하기 위해 아래의 개발 환경을 기반으로 작성되었습니다.

1. 개발환경

  • MCU : W7500 (ARM Cortex-M0)

  • 컴파일러 : Keil uVision5

  • Debugger : CMSIS-DAP


2. 하드웨어 구성

  • Platform : WIZwiki-W7500

  • Wi-Fi : WizFi310-EVB


3. KEIL uVision5 에서 W7500 사용하기 : 아래 각 링크를 클릭하시면 W7500에 대한 소개와 함께 KEIL uVition 5에서 W7500 개발 환경 구축에 대해서 상세하게 설명하고 있습니다.

 

WizFi310 소개

wizfi310_con_web_500 wizfi310-evb-500

 

 

 

 

 

 

 

 

 

 

 

 

WizFi310 은 위즈네트에서 최근에 출시한 Wi-Fi 모듈로 임베디드 시스템에 빠르고 간편하게 Wi-Fi 연결을 가능토록 하는 제품입니다. 디바이스 혹은 Host MCU와 UART 로 연결하고, 간단한 AT 커맨드를 활용하여 제어 및 설정이 가능합니다. IEEE802.11b/g/n 무선 규격을 지원하며, 소형화된 크기는 어떠한 임베디드 장비와 Hand-held 디바이스에 적용이 가능하도록 합니다. 아래는 WizFi310의 주요 특징들 입니다.


  • Single band 2.4GHz IEEE 802.11b/g/n


  • 72.2Mbps receive PHY rate and 72.2Mbps transmit PHY rate using 20MHz bandwidth


  • 150Mbps receive PHY rate and 150Mbps transmit PHY rate using 40MHz bandwidth


  • Low power consumption & excellent power management performance extend battery life.


  • Easy for integration into mobile and handheld device with flexible system configuration.


  • Serial Interface : UART


  • UART Max Baud : 921600 bps


  • Soft AP



    • Enough memory retention


    • Wi-Fi Security (WEP, WPA/WPA2PSK)


    • L2 Switching




  • OTA(Over The Air F/W Upgrading)


 

WizFi310 핸들링하기

WizFi310을 핸들링 하기 위해서는 AT 명령어의 동작 방법을 알아야 합니다. 기본적으로 USER(or MCU)가 AT 명령을 WizFi310에게 보내면, WizFi310은 동작을 수행하고 [OK]응답을 주거나 잘못된 AT 명령이면 [ERROR] 응답을 보내줍니다.

그렇기 때문에 WizFi310을 핸들링할 경우에도 AT 명령을 보내는 부분과 응답을 기다린 후 [OK]인지 [ERROR]인지를 구분하기면 하면 기본적인 핸들링을 구현할 수 있습니다.

 

WizFi310핸들러 구현 -  UART, TX/RX, Interrupt

WizFi310 핸들러를 구현하기 위해서는 기본적으로 UART RX  Interrupt와 RingBuffer 기능이 필요합니다.

이번 포스팅에서는 RingBuffer를 사용하지 않고, charater 문자열 버퍼에 read point, write point를 사용해서 UartGetc_nonblk함수를 만들었습니다.

아래 함수의 역할은,  버퍼에 저장되어 있는 1byte씩 읽는 함수입니다.

wizfi310-01

그리고 아래 UART RX ISR에서는 u0rx_buf, u1rx_buf에 문자를 저장하는 역할을 합니다.

wizfi310-02

WizFi310 핸들러 구현 - AT 명령어 사용

위와 같이 UART로 읽기/쓰기가 가능한 함수를 만들어 놓은 후에  AT 명령을 보내고 응답을 기다리는 send_and_check_command 함수를 만들겠습니다.

wizfi310-03

 

파라메터에는,

  • send_command : 보낼 AT 명령어

  • cr_lf: AT 명령어 뒤에 carriage return 사용 여부( r, n)

  • check_delay: 응답을 기다릴 시간

  • check_count: 응답을 기다릴 횟수

  • str_find1, str_find2: 응답으로 기대하고 있는 문자열(ex: [OK])

  • debug_print: 디버그 프린트 여부


AT 명령을 보내고 (check_delay * check_count) 만큼의 시간만큼 응답을 기다리며 str_find1, str_find2 문자열을 찾는 함수입니다.

우선 WizFi310에게 AT 명령을 보냅니다.

wizfi310-04

 

 

 

 

 

그 다음 응답을 기다리며 str_find를 찾아냅니다.

wizfi310-05

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : Daniel's Blog