데이터 전송 시 Sn_TX_FIFOR에 데이터를 넣고,
Sn_TX_FIFOR에 넣은 만큼의 바이트를 Sn_TX_WRSR에 넣은 후 Sn_CR에 보내기 명령을 줍니다.
그런데 만약 TX_FIFOR에 데이터를 4개 넣었는데 TX_WRSR에는 5개라고 알려주고 보내기 명령을 주면
TX_FIFOR버퍼의 4+1번째에 들어있는 값까지 전송이 되는지 문의 드립니다.
추가 문의(2013.1.2 17:32)
16bit버스 모드이므로 TX_FIFOR에 무조건 2바이트씩 쓰긴하지만 보내고자 하는 데이터가 홀수 개일 때는 TX_WRSR에 홀수를 넣어도 상관 없는지 문의 드립니다.
추가 문의2(2013.1.3 9:38)
제가 데이터를 보낼때 send_ok를 체크하기는 하는데요 현재 방식을
w5300이 데이터를 보내는중이라고 했을때
send_ok유무에 관계 없이 현재 보내고싶은 데이터를 TX_FIFOR에 넣습니다.
그리고 send_ok를 대기하였다가 TX_WRSR 값 설정 및 보내기 명령을 보내는데요
TX_FIFOR에 데이터를 넣는것도 send_ok 후에 수행해야 되는건가요?
메뉴얼상으로는 상관없는것으로 보이기는 하는데요…
전송 DATA를 메모리에 복사할 경우, Send_OK보다 Memory Free buffer Size(Sn_TX_FSR)에 더 주의하여야 됩니다.
Sn_TX_FSR보다 큰 값을 메모리에 write한 경우 설사 send_ok가 떴다 하더라도 잘못된 패킷이 전송될수 있습니다.
send_ok가 확인되었다 하더라도 해당 Packet이 상대방에게 전달되었다는 보장은 없습니다. TCP인 경우 재전송이 발생할 수 있기 때문에, Memory 복사시 Free buffer size 확인 무엇보다도 중요합니다.