---
title: "WizFi250을 이용한 SPI 통신 문의 드립니다"
url: "https://maker.wiznet.io/forum/10865"
markdown_url: "https://maker.wiznet.io/forum/10865/md"
type: "Forum topic"
category: "Wireless"
author: "joodol17"
created: "2015-02-24T10:17:57+09:00"
last_activity: "2017-05-04T08:34:56+09:00"
language: "ko"
views: 1155
replies: 2
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# WizFi250을 이용한 SPI 통신 문의 드립니다

## Question

Asked by joodol17 on 2015-02-24 in Wireless.

안녕하세요.

WizFi250 + WizFi250 EVB를 이용하여 SPI 통신으로 프로그래밍을 하고 있는 사용자 입니다.

홈페이지 상의 예제 소스를 보아도 사용하는 MCU 기반이 Aduino가 아닌 AVR과 같은 MCU여서 도움이 되지 않아 문의 드립니다.

아래 문의 사항은 전부 Test를 진행 후 진전이 없기에 문의 드리는 사항입니다.

1. +3.3V Level의 MCU 이기에
   JP2 / No.1 - 3.3V
   JP2 / No.6 - GND 매칭
   JP13/ No.1 - MOSI
   JP13/ No.2 - SS
   JP13/ No.3 - SCK
   JP13/ No.4 - MISO
   JP14/ No.7 - GPIO14 (Data Ready Pin)
   R14 / No.1+No.2 연결 - +5V
   이렇게 연결하는것이 맞는지? (Master = MCU / Slave = WizFi250)

2. USB 케이블을 이용하여 전원(5V) 인가 시 LED2, LED3은 RS232통신 Tx/Rx 에만 깜빡이는데,
   전원(3.3V)만 인가 시 LED2, LED3 에 Lamp Blink 상태입니다. 이건 왜 그런건가요?

3. GPIO14 (Data Ready Pin) 이 Low(0V) 일때가 WizFi250이 Data를 보내는 건가요?
   아니면 High(3.3V) 일때가 WizFi250이 Data를 보내는 상태인가요?
   (홈페이지와 문서가 서로 상반되어 정보에 혼란이 있음)

4. GPIO14(Data Ready Pin)이 활성화 되어서 Data를 보내기 위해서
   Master 쪽에서 Data를 보내야하는데 이때 Data 값은 먼가요?
   ex) 0xF0 ?

5. SPI 통신으로 AT(Enter)를 보내기 위해서는 아래와 같이 보내는것이 맞나요?
   아니면 각 1Byte 마다 CS 를 걸어 줘야 하는건가요?
   CS = Low; //Chip Select Low
   SPI_Tx(0x41); //‘A’
   SPI_Tx(0x54); //‘T’
   SPI_Tx(0x0d); // Enter
   CS = High; //Chip Select High

6. SPI 통신으로 출력 시 GPIO14(Data Ready Pin) 이 High 또는 Low에서 MISO 쪽 값이 항상 있는데
   쓰레기 값과 정상 출력값 구분은 어떻게 하나요?
   또한 출력값과 동일한 값이 Return 되어야 하는게 정상인가요? (Echo)

   ( D0 : CS / D1 : SCK / D2 : MOSI / D3 : MISO / S1 : SPI Digital Data Tx/Rx )

7. CS(Chip Select) 시 Start / Data / End 지점 간의 Delay는 어느 정도 필요한가요?

8. WizFi250 EVB에 USB 케이블을 이용하여 5V 인가 및
   MCU Board 의 GND와 매칭 후 MCU Board의 전원을 Off 상태로 둘 경우 WizFi250 EVB의 D1 / BAT60A가 파손이 됩니다.
   왜 이런 문제가 발생하는건가요??

9. 최초 1회 USB 케이블을 이용하여 시리얼 통신으로 AT+MSPI 명령으로 SPI 세팅 시 이후 SPI 통신 시에도
   이전의 저장 상태가 유지 되고 있는건가요?

마지막으로 Wiznet Forum 의 게시물을 전부 확인하였으며, 답변에 예제 소스 링크가 아닌 확실한 답변을 부탁드립니다.

좋은 하루 되세요.

## Replies

### Reply 1 by kaizen, 2015-02-27

안녕하세요

하기 내용에 대한 답변 입니다.

1. +3.3V Level의 MCU 이기에

JP2 / No.1 - 3.3V
JP2 / No.6 - GND 매칭
JP13/ No.1 - MOSI
JP13/ No.2 - SS
JP13/ No.3 - SCK
JP13/ No.4 - MISO
JP14/ No.7 - GPIO14 (Data Ready Pin)
R14 / No.1+No.2 연결 - +5V

이렇게 연결하는것이 맞는지? (Master = MCU / Slave = WizFi250)

> 사용하고 계신 MCU가 3.3V로 동작하시는 경우, R14를 No.2와 No.3을 연결해 주시기 바랍니다.
> R14가 No.1,No2로 연결되면 WizFi250-EVB의 SPI 신호가 5V Level로 입/출력 됩니다. 반대로 No2,No3을 연결하면 SPI 신호를 3.3V Level로 입/출력 되게 변경 할 수 있습니다.

1. GPIO14 (Data Ready Pin) 이 Low(0V) 일때가 WizFi250이 Data를 보내는 건가요?
   아니면 High(3.3V) 일때가 WizFi250이 Data를 보내는 상태인가요?
   (홈페이지와 문서가 서로 상반되어 정보에 혼란이 있음)

> WizFi250이 MCU에게 송신할 Data가 있는 경우, Data Ready Pin을 High로 설정 합니다.
> MCU 입장에서는 Data Ready Pin이 High일 때, WizFi250의 Data를 읽으면 됩니다.

1. GPIO14(Data Ready Pin)이 활성화 되어서 Data를 보내기 위해서
   Master 쪽에서 Data를 보내야하는데 이때 Data 값은 먼가요?
   ex) 0xF0 ?

> 네, SPI_NULL 신호 인, 0xF0 값을 송신 하면 됩니다.
>
> SPI CONTROL CODE는 아래와 같습니다.
> #define SPI_NULL (uint8_t) 0xF0
> #define SPI_ESC (uint8_t) 0xF1
> #define SPI_SYNC (uint8_t) 0x02
> #define SPI_XON (uint8_t) 0x03
> #define SPI_XOFF (uint8_t) 0x04
> #define SPI_ERR (uint8_t) 0x05

1. SPI 통신으로 AT(Enter)를 보내기 위해서는 아래와 같이 보내는것이 맞나요?
   아니면 각 1Byte 마다 CS 를 걸어 줘야 하는건가요?

> 네. 1Byte 마다 CS를 걸어 주면 됩니다.
> 아래는 AT 명령을 내리는 예제 입니다.
>
> CS = Low
> delay 1us
> SPI_Tx(0x41); //‘A’
> delay 1us
> CS = High
>
> CS = Low
> delay 1us
> SPI_Tx(0x54); //‘T’
> delay 1us
> CS = High
>
> CS = Low
> delay 1us
> SPI_Tx(0x0d); //Enter
> delay 1us
> CS = High

1. SPI 통신으로 출력 시 GPIO14(Data Ready Pin) 이 High 또는 Low에서 MISO 쪽 값이 항상 있는데
   쓰레기 값과 정상 출력값 구분은 어떻게 하나요?
   또한 출력값과 동일한 값이 Return 되어야 하는게 정상인가요? (Echo)

> WizFi250이 송신할 데이터가 없는 시점에, SPI Master가 WizFi250에게 데이터를 보내면 WizFi250은 SPI_NULL Code인 0xF0 값을 출력 합니다.
> 그리고 SPI Control Code와 실제 Data와 구분하는 방법은 아래와 같습니다.
>
> - WizFi250이 SPI Control Code를 보낼 때는 앞에 0xF1 값을 붙여서 보냄. 즉, SPI_SYNC를 보낼 때는, 0xF1 0x02를 송신 함.
>
> - 즉, Control Code 앞에 0xF1 값이 붙어 있으면 SPI Control 값으로 판단하면 됩니다.
>
> - 첨부되어 있는 main.c 파일을 참고 하시기 바랍니다.

1. CS(Chip Select) 시 Start / Data / End 지점 간의 Delay는 어느 정도 필요한가요?

> 5번 설명을 참고 하시기 바랍니다.

1. WizFi250 EVB에 USB 케이블을 이용하여 5V 인가 및
   MCU Board 의 GND와 매칭 후 MCU Board의 전원을 Off 상태로 둘 경우 WizFi250 EVB의 D1 / BAT60A가 파손이 됩니다.
   왜 이런 문제가 발생하는건가요??

> 설명이 정확하게 이해가 되지 않네요. 조금 더 상세한 설명 부탁 드립니다.

1. 최초 1회 USB 케이블을 이용하여 시리얼 통신으로 AT+MSPI 명령으로 SPI 세팅 시 이후 SPI 통신 시에도
   이전의 저장 상태가 유지 되고 있는건가요?

> 네, 이전의 저장 상태를 유지 합니다.

[main.c](https://maker.wiznet.io/uploads/short-url/A9BbFLp4tJadNKAnrZ9WzWMwb4Y) (21.5 KB)

### Reply 2 by joodol17, 2015-02-27

2번 문의에 대한 답변이 없어 추가로 문의 드립니다.

1. USB 케이블을 이용하여 전원(5V) 인가 시 LED2, LED3은 RS232통신 Tx/Rx 에만 깜빡이는데,
   전원(3.3V)만 인가 시 LED2, LED3 에 Lamp Blink 상태입니다. 이건 왜 그런건가요?

8번 문항에 대해서는

컴퓨터 &lt;-> WizFi250 EVB &lt;-> MCU Board(개인용) &lt;-> PowerSupply

이런 구성으로 되어있으며 컴퓨터와 USB 케이블로 연결 시 전원이 인가되며

WizFi250 EVB 와 MCU Board(개인용) 간에 GND를 연결하였습니다.

이 상태에서 WizFi250 EVB 의 D1/BAT60A가 파손이 되었습니다.

---

Source: https://maker.wiznet.io/forum/10865
