WIZ550io에서 SPI 속도 관련 문의

안녕하세요, 오랜만에 질문 드립니다.

WIZ550io 같은 경우 매뉴얼 상에 최대 80MHz 의 SPI 속도를 지원한다고 되어있고,

전에 질문 드렸던 것에 대한 답변에서도 또한 80MHz 이하의 SPI CLK 에서는 원할하게 돌아간다고 하셨는데,

현재 28335에 연결하여 UDP 통신시 SPI CLK가 최대 15MHz 까지 밖에 작동이 안됩니다.

SPI CLK을 그 이상으로 올려버리면 통신이 이뤄지지 않는데요.

이런 문제가 왜 일어나는 것입니까?

SPI CLK을 더 높여도 통신이 가능하도록 따로 조치를 취해야합니까?

안녕하세요 위즈네트 입니다.

WIZ550io는 이론상으로는 SPI CLK이 최대 80MHz까지 지원가능 합니다.

하지만 SPI 신호패턴에 의해 패턴에 포함되어 있는 CAP값 성분으로 인해 신호가 지연이 될 가능성이 있지만, 15MHz에서 발생이 될 가능성은 적어 보입니다.

혹시 가능하시다면 통신이 될때 오실로스코프로 SLK, MOSI, MISO의 파형을 찍어서 공유해주신다면 도움이 될것 같습니다.

저희도 다시 한번 더 자체적으로 테스트를 진행해보도록 하겠습니다.

감사합니다.

말씀하셨던대로 오실로스코프에서 파형을 찍어보았습니다.

각 이미지에 있는 네개의 파형은 위부터 순서대로 /CS, SCLK, MOSI, MISO 입니다.

모든 이미지는 AX1 프로그램을 이용하여 Loopback 중에 UDP 통신이 이뤄지는지 알아보기 위해
getSn_SR(00, 03, 28)에 의해 return 값이 UDP(22)가 나오는 부분을 캡쳐한 것입니다.

아래 이미지는 15MHz 일 때입니다. 이 때는 통신이 원활하게 이루어집니다.


아래 이미지는 18.75MHz 일 때 입니다. 이 때부터 return 값이 22가 아니라 00이 나오면서 통신이 되지 않습니다.


아래 이미지는 30MHz 일 때 입니다. 이 역시도 통신이 이뤄지지 않습니다.


propagation delay로 인한 통신 불능은 아니라 생각되는데,

혹시 조금 더 자세히 필요하신 부분을 말씀해주신다면 다시 찍어 올려드리겠습니다. 감사합니다.

답변 부탁드립니다.

안녕하세요.

위즈네트 방보현 연구원입니다.

회로 혹은 클럭에 크게 문제가 있는 것 같지는 않습니다. 클럭을 올렸을 때 통신이 안되는 것이 아니라 단순히 Socket이 Closed(0x00)인 상태가 아닐까요?

Ethernet shield와 necleo f411re 환경(열악한 환경)에서 50Mhz(MCU에서 지원하는 SPI 최대 스피드)로 동작하는 것을 확인하였습니다.

회로가 아닌 펌웨어에 문제가 있을 것으로 의심됩니다.

감사합니다.

답변 감사드립니다, 방보현 연구원님.

답변에 대해 다시 질문이 있습니다.

저희가 DSP에 올린 loopback 코드같은 경우 위즈넷 아카데미에 올라와 있는 강좌 (“W5500 ioLibrary_BSD를 SiLab 8051 에 포팅하기”)에서 제공한 자료들로 구현하였습니다.


위 사진과 같이 기본적인 4개의 함수만 저희가 사용하는 DSP(TMS320F28335)에 맞춰 수정하였고,


위와 같이 함수 등록 후 while 문에 들어가 loopback 과정을 실행하였습니다.


아시다시피 저 loopback 코드 안에서는 Socket이 Closed 상태일 때 UDP 모드로 Socket을 Open시키도록 되어있습니다.

따라서 연구원님께서 말씀해주신 대로 단순히 socket이 closed 상태라면 코드 내에서 자체적으로 UDP 모드로 socket을 open 시켜야하는거 아닌가요?

낮은 spi 속도에서는 정상적으로 socket이 open 되는데, 속도가 높아지면 open이 되지 않는게 이상한 것 같습니다…