WIZnet Developer Forum

wizfi360 SPI Control Frame PROBLEM

안녕하세요, WIZFI360+BLUETOOTH MCU (이하 GW)을 STA + SoftAP Mode로 테스트 중입니다.

시스템의 구성은 다음과 같습니다.
첫번째 GW(1)-STA을 인터넷 AP에 연결하고 블루투스는 다른 블루투스로부터 수신한 센서 RAW 데이터를 WIZFI360를 통해 TCP 서버로 전송하고 GW(1)-SoftAP에는 다른 스마트폰이나 GW(2)-STA이 연결되어 인터넷을 이용하거나 센서 데이터를 TCP 서버로 전송합니다.(repeater 개념으로 동작)

이에 발생한 문제는 어느 순간(실제로는 2분내에) WIZFI360의 동작이 멈춘다는 것인데요, 디버깅하여 확인해본 결과 SPI 로 데이터를 전송하기 전에 확인해야 하는 TX BUFFER AVAIL 변수의 값이 항상 0x03(정상 응답) > 0x02(??) > 0x00(Error) 순으로 변화하는 것을 확인하였습니다.
0x00이 수신된 이후에는 WIZFI360을 리셋을 하기 전까지 항상 0x00이 수신되어 데이터 처리에 곤란한 상황입니다.

따라서 SPI Control Frame(0x03, 0x02,0x06)에 대한 에러처리에 대한 동작을 알려주시면 감사하겠습니다.

또한 WIZFI360이 동작을 멈출 때 PB7에 연결된 LED의 깜빡임이 멈추는데 SPI Control Frame에 대한 수신 에러와 LED의 깜빡임의 인과 관계가 어떻게 되나요?

안녕하세요
LED 점멸은 DATA 송수신시 표시됩니다.

현재 쓰고 계시는 모듈 Version 부탁드립니다.

위의 레지스터에 대해서는 다시 Read Only 레지스터입니다.
에러가 나면 300ms 정도 delay를 주시고 다시 Read 하는 방법 밖에 없습니다.

감사합니다.

안녕하세요,
사용하고 있는 버전은 1.1.0.7이며 Transparent mode로 동작 중입니다.
TCP 서버에 전송하는 데이터의 양은 초당 10kbyte이상이며 서버로부터 일정한 시간마다 서버로부터 2byte의 데이터(ACK 개념)를 전송받습니다. 이러한 GW 여러 대가 TCP 서버에 연결되어 데이터를 전송합니다.

SPI Control Frame에 에러 처리에 대한 것은 알려주신 방법으로 진행하겠습니다.
그런데 응답의 의미는 따로 없나요? 테스트를 해보면 TX BUFF AVAIL에 대한 응답으로0x0,0x1,0x2,0x3,0x4이 출력되었는데 각각의 의미가 궁금합니다.

안녕하세요

TX BUFF AVAIL 은 0x04의 내용은 없습니다.



레지스터 위와 같이 구성되어 있습니다.

감사합니다.

답변 감사합니다. 그렇다면, 0x04에 대한 응답은 spi 통신 오류인 것 같습니다.

첨부해주신 자료에 따르면 TX Buffer Avail에 대한 응답으로 1byte 중 하위 2 bit가 의미있는 응답이며,
첫번째 bit(tx_buff_avail)은 버퍼 상태가 데이터를 전송할 수 있음을,
두번째 bit(tx_cmdbuff_avail)은 버퍼 상태가 AT 커맨드를 입력할 수 있을 의미하는 것이 맞나요?

만약 첫번째 bit(tx_buff_avail)이 0인 경우(0x00 또는 0x02 수신) 딜레이를 주어도 여전히 0x02가 수신된다면 어떻게 해야 하나요? 현재 0x02를 확인하면 500msec delay 후에 다시 read 하여도 계속 같은 값을 응답합니다.

버퍼의 데이터를 초기화 한다던지…의 방법은 없나요?

안녕하세요

네 맞습니다. 하지만 0x00 이 아니면 전송하셔도 됩니다.

레지스터 값은 코딩으로 리턴되는 것이 아닌 부분이 아닙니다만 확인요청해 보겠습니다.

답변감사합니다. 적절한 대처 방법이 있음을 희망합니다.

이 추가적인 리플은 자체 테스트 후 9월4일 17:36분에수정되었습니다.

Teddy, 추가적인 테스트로 다음과 같은 결과가 나타났습니다.
현재 아직 배포되지 않은 1.1.0.75 버전을 wiznet에서 제공받아 업로드 후 사용중입니다. 데이터시트 상으로는 wizfi ap가 station에게 ip를 할당하면, +sta_connected, +dist_sta_ip: … 등의 return 값이 출력되지만 이러한 응답은 별도의 커맨드가 입력되어야만 return값(예를 들어 OK)과 같이 출력되는 것으로 알고 있습니다.
하지만 저는 Transparent 모드를 사용중이며 이 모드에서는 커맨드를 입력하지 않고 TX DATA FRAME을 이용하여 서버로 데이터를 전송하고 서버로부터 데이터를 수신받을 때에는 +IPD:…의 형식이 아닌 순수히 수신된 데이터만 READ됩니다.

테스트 상황과 결과를 말씀드리면 아래와 같습니다.

Wizfi360은 softap+station 모드로 동작중이며 서버로 transparent mode로 데이터를 계속 전송합니다. 서버는 이에 연결이 유지되고 있다는 신호로 "OK"의 2BYTE의 데이터를 일정 간격마다 전송합니다. TCP connection이 된 후에 통신에 이상이 없지만 transparent mode로 동작 중인 wizfi360-ap에 스마트폰(sta)이 연결되면 +STA_CONNECTED:"50… 을 수신버퍼에서 읽을 수 있습니다.

혹시 위와 같이 Transparent mode에서 별도의 커맨드 없이 +sta_connected 와 같은 응답을 read 할 수 있는 것이 정상입니까?

안녕하세요 답변이 늦었습니다.
AP에 접속 되었을때 아래 메세지가 들어오는 것은 정상입니다.
(17:07:23.142) OK
(17:07:39.318) +STA_CONNECTED:“94:8b:c1:60:12:38”
(17:07:39.318) +DIST_STA_IP:“94:8b:c1:60:12:38”,“192.168.36.2”
메세지는 AP에 접속 했다는 로그가 보여지는 것입니다.
따로 명령어로 나오는 응답이 아닙니다.
감사합니다.

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.