W5100 질문

W5100을 MCU (TMS320C28346)에 연결해서 사용하고자 합니다. 이전에 W5100을 MCU(TMS320F28335)에 연결하여 정상적으로 Servier / Client를 구현하여 사용하였습니다. 회로도 동일하고 Source도 동일하여 그냥 TMS320C28346에 동일하게 사용하고자 하는데 W5100이 정상적으로 동작을 하지 않습니다.

Ping은 정상적으로 송/수신이 되는데… W5100을 Server mode로 동작시키고… PC 에서 Client로 동작시키면 (이전에는 정상동작되던 소스였음) Connect는 되는데 W5100에서 Interrupt가 발생되지 않는 문제가 있습니다. 이문제로 몇일째 고민입니다.

질문은 Ping이 되면 물리적으로 Link는 정상적으로 되었다는 얘기가 맞는것 아닌지요? 그렇다면 소프트웨어쪽으로 확인을 해야 할지… MCU와 Read/Write timing은 약 100ns정도이고 CS는 약 200ns정도면 충분이 Access가 가능할 것이라고 생각됩니다만…정상동작 되지 않는 이유를 잘 모르겠습니다. 어느부분을 체크해야 할지 조언 부탁드립니다.

안녕하세요.

ping이 되며 connect 까지 된다면 물리적으로 연결이 잘 되었다는 것이 맞습니다.
또한 네트워크 세팅까지 된 상태일테니 register access 또한 잘 되는 것으로 보이네요.

그렇다면 바꾸신 MCU의 인터럽트 쪽 핸들링이 잘 안되는 것 같네요.
아니면 ext interrupt를 MCU쪽에 잘못 연결 한 것은 아닌지 MCU interrupt가 low active 인지도 확인 해보세요.

아마도 MCU쪽의 interrupt 쪽의 문제 일 것으로 보입니다.
확실하게 하기 위해서 오실로스코프로 W5100의 int pin의 신호가 정상적으로 떨어지는지도 확이 해보면 좋겠네요.

감사합니다.

W5100측의 Int핀은 다시 확인해 보겠습니다. 하지만 pc side(Client)에서 W5100(Server)로 최초 1회는 connect가 되는데…다시 disconnect하고 connect하면 정상적으로 connect가 되지 않는 문제는 왜 그런걸까요? 최초 1회 Connect하는 과정에서 문제가 있어서 그런건가요?

글쎄요
주고 받는 패킷을 한번 캡쳐해보세요.

아니면, 코드에서 단계별로 printf로 찍어서 어디선가 무한루프에 빠지진 않았는지 확인해보세요.

분석하기에 정보가 너무 부족하네요

일단 W5100에서 인터럽트가 발생하지 않는걸 확인은 했는데…MCU쪽의 GPIO 인터럽트로 할당한 핀에 강제로 Low를 줄경우 인터럽트가 MCU쪽에서는 잘 걸리는것을 확인하였습니다. W5100에서 인터럽트 관련 설정은 모두 마쳤음에도 불구하고 인터럽트가 발생되지 않는 이유가 무엇인지 잘 모르겠습니다. 기존에 정상적으로 사용하였던 소스이기 때문에 별도의 설정등에 대한 문제는 없을 것으로 판단됩니다

첨부 파일은 초기에 네트워크 설정이나 인터럽트 설정을 W5100에 Write하는 과정에서 캡쳐한 화면으로 CS, WR, 그리고 D7 (특정데이터 patch)되는 타이밍을 찍은 파형입니다. 이렇게 타이밍을 잡을때
W5100이 정상동작이 가능한지요? 제 생각에는 크게 문제는 없어 보이는 타이밍인데…현재는 설정등이 정상적으로 MCU에서 W5100으로 되지 않았을 Case에 대해서 의심을 하고 있습니다. 그리고 한가지 더 이번에 새로 구현한 W5100회로는 레퍼런스 회로를 그대로 사용하였는데 다시 한번 확인 검토 부탁드립니다.

Ch2 (Red) : CS
Ch1 (Yellow): WR
Ch3 (Blue) : Data (D7)
Wiznet-W5100.pdf (76.7 KB)



Ping까지 성공하셨다면 레지스터 엑세스 문제는 없는 것으로 판단됩니다.

최초 접속 성공시
Sn_IR의 값 설정이 변경되는지 확인바랍니다.