[WizFi250심화과정 4] Cortex M3에서 Wi-Fi 사용하기 – Bypass Example 1/2

0
1283

본 포스팅에서는 Cortex M3 계열의 MCU에 Wi-Fi 모듈을 연결하여 무선 네트워크를 사용하는 방법에 대하여 설명한다. 본 포스팅 예제에 사용되는 하드웨어 구성은 아래와 같다.

W5200E01-M3와 WizFi250 Hardware 연결

하드웨어 구성은 의외로 간단하다. WizFi250은 Serial to Wi-Fi 모듈로써, MCU에서 Wi-Fi 제어를 위한 명령은 Serial 통신으로 송/수신 된다. 때문에 WizFi250의 UART 핀들과 W5200E01-M3(STM32F103C8T6)의 USART 핀들을 연결하면 Cortex M3 Board에서 Wi-Fi를 사용하기 위한 하드웨어 구성은 끝이다.

본 포스팅에서는 WizFi250을 UART 모드로 사용 할 예정이므로, W5200E01-M3의 PA2,PA3,3V3D,GND 핀을 WizFi250-EVB의 RXD,TXD,3.3V,GND핀에 연결 한다. ( 하단 그림 참고 )

WizFi250-EVB W5200E01-M3(STM32F103C8X)
RXD PA2
TXD PA3
3.3V 3V3D
GND GND
Pin_3(Reset) PA8

20150323_085410

20150323_090910

Bypass Mode Example

Example 구성도

이번 장에서는 Cortex M3 MCU를 이용하여 WizFi250 명령을 송/수신 하는 예제를 설명한다. 해당 예제를 통해 Cortex M3 MCU의 USART 사용법과 WizFi250에게 명령을 송/수신 하는 방법에 대해 학습 할 수 있을 것으로 예상한다.

아래 그림은 Bypass Mode Example의 구성도 이다. W5200E01-M3는 Cortex M3 계열의 STM32F103 MCU를 사용하는 보드로써, Bypass Mode Example은 PC로 부터 입력 받은 Serial Data(RS-232)를 WizFi250에게 여과 없이 전송하고 WizFi250으로 부터 받은 Serial Data(USART)를 여과 없이 PC에게 전송하는 예제 이다.

20150323_184441

본 예제에서는 W5200E01-M3의 USART1과 USART2를 사용하며 각각의 USART는 아래와 같이 연결되어 있다.

  • USART1 : PC <—->W5200E01-M3
  • USART2 : W5200E01-M3 <—-> WizFi250

Code Download & Project Import

아래 주소에 접속 한 후, Raw을 클릭하면 Bypass Example Code 다운로드 한 후 Eclipse Project에 Import 한다.

다운로드 경로 : Bypass Example

Project Import 방법

핵심 코드 설명

  • ARM-GCC Compiler에서 printf 함수를 사용하기 위한 retarget 함수
  • Line 6 : printf 시, USART1으로 출력

  • USART1,USART2 RX Interrupt Handler
  • USART1과 USART2에 RX Interrupt가 발생되면 수행
  • Ring Buffer 사용하여 USART1과 USART2에서 수신 되는 Data를 u1rx_buf와 u2rx_buf에 저장

  • 6  ~  13 : USART1 Clock 및 TX,RX Pin 설정
  • 26 ~ 31 : USART2 Clock 및 TX,RX Pin 설정
  • 15 ~ 21,  34 ~ 40 :  USART1, USART2 IRQ Channel 설정 및 Priority 설정
  • 47 ~ 55 : USART 기본 설정 ( BaudRate, WordLength 등 )
  • 57 ~ 65 : USART1,USART2 RX Ineterrupt Enable

  • usart_putc : USART1 or USART2에 1byte 데이터를 송신하는 함수
  • usart_puts : USART1 or USART2에 string 데이터를 송신하는 함수

  • usart_getc : USART1 or USART2에서 1byte 데이터를 수신하는 함수 ( Blocking 함수 )
  • usart_getc_nonblk : USART1 or USART2에서 1byte 데이터를 수신하는 함수 ( Nonblocking 함수 )

 

NO COMMENTS