W5100 설정질문드립니다
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5100 설정질문드립니다
by justinkim ·
과정 자체에는 문제가 없어보입니다.
하지만 Destination IP와 Port가 셋팅 되지않는게 잘 이해가 안됩니다.
Destination IP Addr과 Port를 셋팅할 때 어떻게 셋팅을 하시는지요?
DataSheet를 보고 직접 Driver를 짜신건가요?
TCP Client 구현을 하고싶다면 저희 WIZnet에서 제공하는 ioLibrary에 Loopback 코드의 tcpcloopback 함수를 참고하시면 좋을것 같습니다.
저희 ioLibrary의 링크는 github.com/Wiznet/ioLibrary_Driver 입니다.
RE: W5100 설정질문드립니다
by parkjoe ·
드라이버 구현을 직접하였습니다 내부 사정상 라이브러리 사용이 어려운 이유에서 입니다
예로 아이피를 0x040C번지에 192를 저장한후 다시 0x040C번지 값을 읽으면 0으로 반환되고 있습니다
하기 EnetWriteData함수는 처음 포스트에서 언급하였듯이,
소스측(W5100) 아이피 설정이 정상적으로 저장되고 읽어지는 것으로 검증이 되었다고 생각합니다
하기에 코드를 부분적으로 정리하여 올렸는데 검토 부탁드립니다
감사합니다
---------------------Destination IP설정---------------------주의! Socket1은 W5100 Datasheet 에서 Socket0을 의미함
#define REG_SOC1DIPR1 0x040C //Socket 1 Des IP Address 1: 0x040C
#define REG_SOC1DIPR2 0x040D //Socket 1 Des IP Address 2: 0x040D
#define REG_SOC1DIPR3 0x040E //Socket 1 Des IP Address 3: 0x040E
#define REG_SOC1DIPR4 0x040F //Socket 1 Des IP Address 4: 0x040F
EnetWriteData(REG_SOC1DIPR1, 192);
EnetWriteData(REG_SOC1DIPR2, 168);
EnetWriteData(REG_SOC1DIPR3, 0);
EnetWriteData(REG_SOC1DIPR4, 1);
---------------------Destination IP설정---------------------
------------------EnetWriteData함수 구현-----------------
int EnetWriteData(unsigned int Addr, unsigned char Data) {
ENET_W5100DI; //SS핀 로우
if (SPISendByte(WRITE_OPCODE) != 0x0000) {
//error
return ERROR;
}
if (SPISendByte(Addr) != 0x0100) { //상위 주소 송신(MCU가 상위 1바이트를 송신함)
//Error
return ERROR;
}
if (SPISendByte(Addr << 8) != 0x0200) { //하위 주소 송신(MCU가 상위 1바이트를 송신함)
//Error
return ERROR;
}
if (SPISendByte(Data << 8) != 0x0300) { //상위 1바이트 송신하는 MCU이므로 좌 시프트 8번 함.
//Error
return ERROR;
}
delay_us(5);
ENET_W5100EN; //SS핀 하이
return SUCCESS;
}
------------------EnetWriteData함수 구현-----------------
RE: W5100 설정질문드립니다
by becky ·
안녕하세요
정상동작으로 보여집니다.
Destination IP와 port를 connect 실시후에 read해보시길바랍니다.
write하더라도 connect command가 내려가야지 register에 저장되도록 되어있습니다.
RE: W5100 설정질문드립니다
by parkjoe ·
빠른 답변 감사드립니다
커넥트 명령 후 정상적으로 저장되는것을 확인하였습니다
지원 감사합니다
RE: W5100 설정질문드립니다
by justinkim ·
잘해결되어 다행입니다 ^^