WIZ550io에 SPI 통신

W5500 chip과 WIZ550io의 Datasheet을 보고

WIZ550io의 SPI 통신을 위한 4개의 Pin을 각각 DSP에 연결 시켜주었습니다.

Write 시에
MOSI 핀에 16비트의 address(상위8비트, 하위8비트 나누어서 송신)와,
8비트의 control phase, 그리고 8비트의 데이터들을 0번 소켓의 Tx버퍼에 송신하였습니다.

오실로스코프에서 측정시에는 데이터 전송은 잘 이루어진 것으로 보이는데,

0번 소켓 Rx 버퍼를 Read할 때
MISO 핀 측정 시 제가 보낸 데이터가 측정이 되질 않더군요.

Datasheet 에서도 SPI 통신시에는 SCSn 핀에 Low를 먼저 해주고,
송신이 끝나면 High로 변경해주어야한다는 말 외에는
다른 설정에 대한 것은 없는데,

레지스터들 또한 SPI에 관련된 레지스터는 아닌 것 같고…

WIZ550io 우측에 위치한 리셋이나 레디 등의 핀을 따로 설정을 해주어야합니까?

그냥 기본적인 SPI인데도 무엇이 문제인 것일까요?

안녕하세요.

먼저, WIZ550io의 Reset과 Ready 핀에 대한 설명은 아래의 링크를 확인 부탁드립니다.

그리고, 말씀하신 Rx 버퍼에 대한 것은 저희 iolibrary의 loobback 예제를 참고해주시면 이해가 좀 더 원활하게 진행될 것 같은데요.

아래의 링크를 클릭하시고 loopback 예제를 한번 참고해주세요.

저희는 Sn_Rx_RSR 함수를 먼저 이용합니다. RSR 함수는 Received Data Size Data를 알려주게 되는 함수인데요. W5500 Datasheet에서 확인 가능합니다.

먼저 RSR을 확인 후 Data가 들어왔는지 확인한 뒤 그 값을 읽게 됩니다.

자세한 것은 Loopback code 및 저희 Socket 함수안에 구현이 되어 있으니 확인부탁드립니다.

github.com/Wiznet/ioLibrary_Driver

그밖에 Cortex M3 (ST) + W5500 을 사용한 Board 교육인 ‘허봉춘씨의 파란만장 IoT 보드 구현하기’ 의 아래 자료를 참고해주세요.

SPI 통신에 대한 설명이 자세하게 기재되어 있습니다.

wiznetacademy.com/wp/wp-content/ … d_0708.pdf

감사합니다.