[WizFi630] SPI사용에 있어 AT 커맨드 확인_재 질의

한국어 포럼에 작성하였는나 답변이 없어 이전하여 올립니다.

원문 : [WizFi360] SPI사용에 있어 AT 커맨드 확인

WizFi 360을 SPI로 이용하여 개발중에 있습니다.

FW 는 1.1.0.7 버전입니다.

일반적인 AT 커맨드는 "OK"를 회신하는데
(AT+CWMODE_CUR , AT+CWDHCP, AT+CWSAP_CUR 등.)

IP주소가 들어간 명령가 입력되면 “ERROR” 을 반환합니다.

다음은 SPI 송신 데이터에 대한 응답입니다.

  • “AT+CWDHCP_CUR=0,1\r\n” → “ok” 반환

→ “AT+CIPAP_CUR=“192.168.10.2”,“192.168.10.1”,“255.255.255.0”\r\n” → ERROR 반환

91 3C 00 41 54 2B … 0D 0A, Length : 63(3 + 60)
image

잘못보내고 있는것 인가요?

안녕 하세요.

문제 확인 이후 답변 드리겠습니다.

안녕 하세요.

ST Nucleo F411RE + WizFi360EVB로 IP주소가 들어간 명령을 테스트했는데 “ERROR”을 반환하는 경우가 없었습니다.
다음 SPI 관련 서류 참고하시기 바랍니다.

http://wizwiki.net/wiki/lib/exe/fetch.php/products:wizfi360:wizfi360app:wizfi360_an_spi_e_101_1.pdf

정확한 파악을 하기 위하여 환경 설정을 어떻게 하셨는지 알려주시면 더 많은 테스트를 하겠습니다.

확인하였습니다.

SPI로 명령 송신시 CMD LENGTH 설정 부분에서 문제가 있었습니다.

D0 : 0x91(AT 커맨드 송신 명령)
D1 : 명령길이(ATCommand_String)Low 8bit
D2 : 명령길이(ATCommand_String)High 8bit
D3…Dn : 명령문

기존에 작성한 함수에서는 D1,D2의 길이를 제외하고 4의 배수로 하여 송신하였습니다.

그러나 예제로 주신 프로젝트와 같이 AT 문자열 길이를 전달하는 D1,D2를 포함하여 4의 배수로 하니 정상동작 되는 것을 확인하였습니다. .

아래는 예제의 소스 파일 중 일부 입니다.

//SPI SEND Message
void SPI_SEND(uint8_t type, uint8_t *data, uint16_t len)
{
  #if 1
  //int i;
  //HAL_UART_Transmit(&huart1, data, len, 0xFFFF);
  //read TX_BUFF_AVAIL
  uint8_t temp_CMD, retry = 0, err = 0, dum2=0x00;
  uint16_t SPI_RX_REG = 0, TX_len;
  int temp_delay = 10000;
  memset(SPI_TX_BUFF,0, sizeof(SPI_TX_BUFF));
  
  temp_CMD = SPI_REG_TX_BUFF_AVAIL;

  //중략 ...
  
  TX_len = len + 2; //**** CMD Length Phase 길이 추가하는 부분 ,Line No. 571
  if(TX_len % 4)
  {
    TX_len = ((TX_len + 3)/4) << 2;
    //TX_len = (TX_len + 3) & 0xFFFC;
  }

  //중략 ...
    SPI_CS_OFF;
    if(type)
    {
      temp_CMD = SPI_CMD_TX_DATA;
    }
    else
    {
      temp_CMD = SPI_CMD_TX_CMD;
    }
    HAL_SPI_TransmitReceive(&hspi1, &temp_CMD, &dum2, 1, 10);
    memcpy(SPI_TX_BUFF , &len, sizeof(len));
    memcpy(SPI_TX_BUFF + 2, data, len);
    HAL_SPI_TransmitReceive(&hspi1, SPI_TX_BUFF, RX_BUFFER, TX_len, 10);

    SPI_CS_ON;
  // 이후부분 생략

그러나 이부분은 어플리케이션 노트 에서는 누락된 내용인것 같아서요.
(어플리케이션 노트 - SPI, 1.0.3 )
image

CMD Length Phase 에 CMD Length Byte 길이또한 포함 되어야 한다고 되어 있는 부분이 확인되지 않습니다.

추후 보안 요청드립니다.

감사합니다.