W3100 Receive Buff 주소

#1

Receive Buff 관련 질문입니다.

volatile uint16_t Dummy = *SHADOW_RXWR_PTR(SocketNo); // Access Shadow Resister
wait_1us(2); // Delay Of Tx_Clk * 4
Head = ((uint32_t )*RX_WR_PTR(SocketNo, 0)<< 24) & 0xFF000000;
Head |= ((uint32_t )*RX_WR_PTR(SocketNo, 1)<< 16) & 0x00FF0000;
Head |= ((uint32_t )*RX_WR_PTR(SocketNo, 2)<< 8) & 0x0000FF00;
Head |= ((uint32_t )*RX_WR_PTR(SocketNo, 3)<< 0) & 0x000000FF;
printf("RX H : 0x%X – ", Head);
Dummy = *SHADOW_RXRD_PTR(SocketNo); // Access Shadow Resister
wait_1us(2); // Delay Of Tx_Clk * 4
Tail = ((uint32_t )*RX_RD_PTR(SocketNo, 0)<< 24) & 0xFF000000;
Tail |= ((uint32_t )*RX_RD_PTR(SocketNo, 1)<< 16) & 0x00FF0000;
Tail |= ((uint32_t )*RX_RD_PTR(SocketNo, 2)<< 8) & 0x0000FF00;
Tail |= ((uint32_t )*RX_RD_PTR(SocketNo, 3)<< 0) & 0x000000FF;

Code는 이렇게 사용하고 있습니다. 그런데 이 값들을 읽어보면 Datasheet상 주소 위치가 전혀 엉뚱한 값으로 읽어지는데
Base 주소인 0x6000 번지가 *RX_RD_PTR로 Return되는게 아닌가요?
아니라면 주소 설정 방법 알려주시기 바랍니다.
감사합니다.

#2

안녕하세요.

TX, RX 의 rd ptr, wr ptr 모두 16bit입니다.
32bit 말고 16bit로 읽어보세요.

아마도 원하는 값이 읽혀질 것으로 보입니다.