하드웨어 작업을 하기전에 WIZ140SR 에 프로그램을 라이팅 해서 테스트를 하고 있습니다.
관련 글 중에 getIDR() 을 했을 경우 5300 으로 읽혀야 하는데 0100 이나 B800 등으로 읽혔었습니다.
STM32 의 FSMC bank 설정을 FSMC_Bank1_NORSRAM2 (64000000) 으로 했던게 원인이었습니다.
이부분은 #define DEF_IINCHIP_MAP_BASE ((uint32_t)0x68000000)
이렇게 고치고 해당 레지스터들을 미리 쉬프트 했습니다.
#define IDR (COMMON_REG_BASE + 0xFE*2)
#define IDR1 (IDR + 1)
위처럼 고치니까 getIDR() 을 했을 경우 5300 으로 정상 출력이 되었습니다.
그러나 IP 라든지, MAC 이라든지 이런 부분을 아래와 같이
uint8 ip[4] = {192,168,0,100}; // for setting SIP register
uint8 gw[4] = {192,168,0,1}; // for setting GAR register
uint8 sn[4] = {255,255,255,0}; // for setting SUBR register
uint8 mac[6] = {0x00,0x08,0xDC,0x11,0x22,0x86}; // for setting SHAR register
GPIO_ResetBits(GPIOF, GPIO_Pin_6);
Delay(10);
GPIO_SetBits(GPIOF, GPIO_Pin_6);
// initiate W5300
iinchip_init();
setMR(getMR()|MR_FS);
setSHAR(mac); // set source hardware address
// configure network information
setGAR(gw); // set gateway IP address
setSUBR(sn); // set subnet mask address
setSIPR(ip); // set source IP address
라이팅 하고 읽어보면
W5300 ver : 5300
W5300 MR : B900
Network Setting Information
Physical Address : dc:11:dc:11:22:86
Gateway Address : 0.1.0.1
Subnet Mask : 255.0.255.0
Ip Address : 0.100.0.100
이렇게 출력이 됩니다. 첨부된 파일처럼 레지스터들을 모두 2배수 했는데 안되는 이유는 무었인가요?
w5300.h (26.7 KB)