PER Firmware
Loading...
Searching...
No Matches
w5500.h
Go to the documentation of this file.
1//*****************************************************************************
2//
43//
44//*****************************************************************************
45
46//
47
48#ifndef _W5500_H_
49#define _W5500_H_
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55#include <stdint.h>
56
57#include "wizchip_conf.h"
58
60#if (_WIZCHIP_ == 5500)
62
63#define _W5500_IO_BASE_ 0x00000000
64
65#define _W5500_SPI_READ_ (0x00 << 2) //< SPI interface Read operation in Control Phase
66#define _W5500_SPI_WRITE_ (0x01 << 2) //< SPI interface Write operation in Control Phase
67
68#define WIZCHIP_CREG_BLOCK 0x00 //< Common register block
69#define WIZCHIP_SREG_BLOCK(N) (1 + 4 * N) //< Socket N register block
70#define WIZCHIP_TXBUF_BLOCK(N) (2 + 4 * N) //< Socket N Tx buffer address block
71#define WIZCHIP_RXBUF_BLOCK(N) (3 + 4 * N) //< Socket N Rx buffer address block
72
73#define WIZCHIP_OFFSET_INC(ADDR, N) (ADDR + (N << 8)) //< Increase offset address
74
76// Definition For Legacy Chip Driver //
78#define IINCHIP_READ(ADDR) WIZCHIP_READ(ADDR)
79#define IINCHIP_WRITE(ADDR, VAL) WIZCHIP_WRITE(ADDR, VAL)
80#define IINCHIP_READ_BUF(ADDR, BUF, LEN) WIZCHIP_READ_BUF(ADDR, BUF, LEN)
81#define IINCHIP_WRITE_BUF(ADDR, BUF, LEN) WIZCHIP_WRITE(ADDR, BUF, LEN)
82
84//-------------------------- defgroup ---------------------------------
193//------------------------------- defgroup end --------------------------------------------
194//----------------------------- W5500 Common Registers IOMAP -----------------------------
210#define MR (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_CREG_BLOCK << 3))
211
217#define GAR (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_CREG_BLOCK << 3))
218
224#define SUBR (_W5500_IO_BASE_ + (0x0005 << 8) + (WIZCHIP_CREG_BLOCK << 3))
225
231#define SHAR (_W5500_IO_BASE_ + (0x0009 << 8) + (WIZCHIP_CREG_BLOCK << 3))
232
238#define SIPR (_W5500_IO_BASE_ + (0x000F << 8) + (WIZCHIP_CREG_BLOCK << 3))
239
245#define INTLEVEL (_W5500_IO_BASE_ + (0x0013 << 8) + (WIZCHIP_CREG_BLOCK << 3))
246
262#define IR (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_CREG_BLOCK << 3))
263
280//M20150401 : Rename SYMBOE ( Re-define error in a compile)
281//#define IMR (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3))
282#define _IMR_ (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_CREG_BLOCK << 3))
283
290#define SIR (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_CREG_BLOCK << 3))
291
299#define SIMR (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_CREG_BLOCK << 3))
300
309//M20150401 : Rename SYMBOE ( Re-define error in a compile)
310//#define RTR (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_CREG_BLOCK << 3))
311#define _RTR_ (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_CREG_BLOCK << 3))
312
319//M20150401 : Rename SYMBOE ( Re-define error in a compile)
320//#define RCR (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_CREG_BLOCK << 3))
321#define _RCR_ (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_CREG_BLOCK << 3))
322
328#define PTIMER (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_CREG_BLOCK << 3))
329
335#define PMAGIC (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_CREG_BLOCK << 3))
336
342#define PHAR (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_CREG_BLOCK << 3))
343
349#define PSID (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_CREG_BLOCK << 3))
350
356#define PMRU (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_CREG_BLOCK << 3))
357
365#define UIPR (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_CREG_BLOCK << 3))
366
374#define UPORTR (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_CREG_BLOCK << 3))
375
381#define PHYCFGR (_W5500_IO_BASE_ + (0x002E << 8) + (WIZCHIP_CREG_BLOCK << 3))
382
383// Reserved (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_CREG_BLOCK << 3))
384// Reserved (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_CREG_BLOCK << 3))
385// Reserved (_W5500_IO_BASE_ + (0x0031 << 8) + (WIZCHIP_CREG_BLOCK << 3))
386// Reserved (_W5500_IO_BASE_ + (0x0032 << 8) + (WIZCHIP_CREG_BLOCK << 3))
387// Reserved (_W5500_IO_BASE_ + (0x0033 << 8) + (WIZCHIP_CREG_BLOCK << 3))
388// Reserved (_W5500_IO_BASE_ + (0x0034 << 8) + (WIZCHIP_CREG_BLOCK << 3))
389// Reserved (_W5500_IO_BASE_ + (0x0035 << 8) + (WIZCHIP_CREG_BLOCK << 3))
390// Reserved (_W5500_IO_BASE_ + (0x0036 << 8) + (WIZCHIP_CREG_BLOCK << 3))
391// Reserved (_W5500_IO_BASE_ + (0x0037 << 8) + (WIZCHIP_CREG_BLOCK << 3))
392// Reserved (_W5500_IO_BASE_ + (0x0038 << 8) + (WIZCHIP_CREG_BLOCK << 3))
393
399#define VERSIONR (_W5500_IO_BASE_ + (0x0039 << 8) + (WIZCHIP_CREG_BLOCK << 3))
400
401//----------------------------- W5500 Socket Registers IOMAP -----------------------------
432#define Sn_MR(N) (_W5500_IO_BASE_ + (0x0000 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
433
451#define Sn_CR(N) (_W5500_IO_BASE_ + (0x0001 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
452
469#define Sn_IR(N) (_W5500_IO_BASE_ + (0x0002 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
470
492#define Sn_SR(N) (_W5500_IO_BASE_ + (0x0003 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
493
500#define Sn_PORT(N) (_W5500_IO_BASE_ + (0x0004 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
501
508#define Sn_DHAR(N) (_W5500_IO_BASE_ + (0x0006 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
509
518#define Sn_DIPR(N) (_W5500_IO_BASE_ + (0x000C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
519
528#define Sn_DPORT(N) (_W5500_IO_BASE_ + (0x0010 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
529
535#define Sn_MSSR(N) (_W5500_IO_BASE_ + (0x0012 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
536
537// Reserved (_W5500_IO_BASE_ + (0x0014 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
538
545#define Sn_TOS(N) (_W5500_IO_BASE_ + (0x0015 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
552#define Sn_TTL(N) (_W5500_IO_BASE_ + (0x0016 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
553// Reserved (_W5500_IO_BASE_ + (0x0017 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
554// Reserved (_W5500_IO_BASE_ + (0x0018 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
555// Reserved (_W5500_IO_BASE_ + (0x0019 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
556// Reserved (_W5500_IO_BASE_ + (0x001A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
557// Reserved (_W5500_IO_BASE_ + (0x001B << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
558// Reserved (_W5500_IO_BASE_ + (0x001C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
559// Reserved (_W5500_IO_BASE_ + (0x001D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
560
571#define Sn_RXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001E << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
572
582#define Sn_TXBUF_SIZE(N) (_W5500_IO_BASE_ + (0x001F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
583
593#define Sn_TX_FSR(N) (_W5500_IO_BASE_ + (0x0020 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
594
605#define Sn_TX_RD(N) (_W5500_IO_BASE_ + (0x0022 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
606
619#define Sn_TX_WR(N) (_W5500_IO_BASE_ + (0x0024 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
620
628#define Sn_RX_RSR(N) (_W5500_IO_BASE_ + (0x0026 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
629
641#define Sn_RX_RD(N) (_W5500_IO_BASE_ + (0x0028 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
642
650#define Sn_RX_WR(N) (_W5500_IO_BASE_ + (0x002A << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
651
660#define Sn_IMR(N) (_W5500_IO_BASE_ + (0x002C << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
661
667#define Sn_FRAG(N) (_W5500_IO_BASE_ + (0x002D << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
668
680#define Sn_KPALVTR(N) (_W5500_IO_BASE_ + (0x002F << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
681
682//#define Sn_TSR(N) (_W5500_IO_BASE_ + (0x0030 << 8) + (WIZCHIP_SREG_BLOCK(N) << 3))
683
684//----------------------------- W5500 Register values -----------------------------
685
686/* MODE register values */
691#define MR_RST 0x80
692
702#define MR_WOL 0x20
703
710#define MR_PB 0x10
711
718#define MR_PPPOE 0x08
719
726#define MR_FARP 0x02
727
728/* IR register values */
733#define IR_CONFLICT 0x80
734
740#define IR_UNREACH 0x40
741
746#define IR_PPPoE 0x20
747
752#define IR_MP 0x10
753
754/* PHYCFGR register value */
755#define PHYCFGR_RST ~(1 << 7) //< For PHY reset, must operate AND mask.
756#define PHYCFGR_OPMD (1 << 6) // Configre PHY with OPMDC value
757#define PHYCFGR_OPMDC_ALLA (7 << 3)
758#define PHYCFGR_OPMDC_PDOWN (6 << 3)
759#define PHYCFGR_OPMDC_NA (5 << 3)
760#define PHYCFGR_OPMDC_100FA (4 << 3)
761#define PHYCFGR_OPMDC_100F (3 << 3)
762#define PHYCFGR_OPMDC_100H (2 << 3)
763#define PHYCFGR_OPMDC_10F (1 << 3)
764#define PHYCFGR_OPMDC_10H (0 << 3)
765#define PHYCFGR_DPX_FULL (1 << 2)
766#define PHYCFGR_DPX_HALF (0 << 2)
767#define PHYCFGR_SPD_100 (1 << 1)
768#define PHYCFGR_SPD_10 (0 << 1)
769#define PHYCFGR_LNK_ON (1 << 0)
770#define PHYCFGR_LNK_OFF (0 << 0)
771
772/* IMR register values */
778#define IM_IR7 0x80
779
785#define IM_IR6 0x40
786
792#define IM_IR5 0x20
793
799#define IM_IR4 0x10
800
801/* Sn_MR Default values */
810#define Sn_MR_MULTI 0x80
811
819#define Sn_MR_BCASTB 0x40
820
829#define Sn_MR_ND 0x20
830
837#define Sn_MR_UCASTB 0x10
838
844#define Sn_MR_MACRAW 0x04
845
846#define Sn_MR_IPRAW 0x03
852#define Sn_MR_UDP 0x02
853
858#define Sn_MR_TCP 0x01
859
864#define Sn_MR_CLOSE 0x00
865
866/* Sn_MR values used with Sn_MR_MACRAW */
877#define Sn_MR_MFEN Sn_MR_MULTI
878
886#define Sn_MR_MMB Sn_MR_ND
887
894#define Sn_MR_MIP6B Sn_MR_UCASTB
895
896/* Sn_MR value used with Sn_MR_UDP & Sn_MR_MULTI */
903#define Sn_MR_MC Sn_MR_ND
904
905/* Sn_MR alternate values */
909#define SOCK_STREAM Sn_MR_TCP
910
914#define SOCK_DGRAM Sn_MR_UDP
915
916/* Sn_CR values */
929#define Sn_CR_OPEN 0x01
930
940#define Sn_CR_LISTEN 0x02
941
952#define Sn_CR_CONNECT 0x04
953
965#define Sn_CR_DISCON 0x08
966
971#define Sn_CR_CLOSE 0x10
972
979#define Sn_CR_SEND 0x20
980
989#define Sn_CR_SEND_MAC 0x21
990
997#define Sn_CR_SEND_KEEP 0x22
998
1005#define Sn_CR_RECV 0x40
1006
1007/* Sn_IR values */
1012#define Sn_IR_SENDOK 0x10
1013
1018#define Sn_IR_TIMEOUT 0x08
1019
1024#define Sn_IR_RECV 0x04
1025
1030#define Sn_IR_DISCON 0x02
1031
1036#define Sn_IR_CON 0x01
1037
1038/* Sn_SR values */
1044#define SOCK_CLOSED 0x00
1045
1052#define SOCK_INIT 0x13
1053
1060#define SOCK_LISTEN 0x14
1061
1069#define SOCK_SYNSENT 0x15
1070
1077#define SOCK_SYNRECV 0x16
1078
1086#define SOCK_ESTABLISHED 0x17
1087
1094#define SOCK_FIN_WAIT 0x18
1095
1102#define SOCK_CLOSING 0x1A
1103
1110#define SOCK_TIME_WAIT 0x1B
1111
1118#define SOCK_CLOSE_WAIT 0x1C
1119
1125#define SOCK_LAST_ACK 0x1D
1126
1133#define SOCK_UDP 0x22
1134
1135#define SOCK_IPRAW 0x32
1143#define SOCK_MACRAW 0x42
1144
1145//#define SOCK_PPPOE 0x5F
1146
1147/* IP PROTOCOL */
1148#define IPPROTO_IP 0 //< Dummy for IP
1149#define IPPROTO_ICMP 1 //< Control message protocol
1150#define IPPROTO_IGMP 2 //< Internet group management protocol
1151#define IPPROTO_GGP 3 //< Gateway^2 (deprecated)
1152#define IPPROTO_TCP 6 //< TCP
1153#define IPPROTO_PUP 12 //< PUP
1154#define IPPROTO_UDP 17 //< UDP
1155#define IPPROTO_IDP 22 //< XNS idp
1156#define IPPROTO_ND 77 //< UNOFFICIAL net disk protocol
1157#define IPPROTO_RAW 255 //< Raw IP packet
1158
1170#define WIZCHIP_CRITICAL_ENTER() WIZCHIP.CRIS._enter()
1171
1172#ifdef _exit
1173#undef _exit
1174#endif
1175
1187#define WIZCHIP_CRITICAL_EXIT() WIZCHIP.CRIS._exit()
1188
1190// Basic I/O Function //
1192
1199uint8_t WIZCHIP_READ(uint32_t AddrSel);
1200
1208void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb);
1209
1217void WIZCHIP_READ_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len);
1218
1226void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t* pBuf, uint16_t len);
1227
1229// Common Register I/O function //
1231
1237#define setMR(mr) \
1238 WIZCHIP_WRITE(MR, mr)
1239
1246#define getMR() \
1247 WIZCHIP_READ(MR)
1248
1255#define setGAR(gar) \
1256 WIZCHIP_WRITE_BUF(GAR, gar, 4)
1257
1264#define getGAR(gar) \
1265 WIZCHIP_READ_BUF(GAR, gar, 4)
1266
1273#define setSUBR(subr) \
1274 WIZCHIP_WRITE_BUF(SUBR, subr, 4)
1275
1282#define getSUBR(subr) \
1283 WIZCHIP_READ_BUF(SUBR, subr, 4)
1284
1291#define setSHAR(shar) \
1292 WIZCHIP_WRITE_BUF(SHAR, shar, 6)
1293
1300#define getSHAR(shar) \
1301 WIZCHIP_READ_BUF(SHAR, shar, 6)
1302
1309#define setSIPR(sipr) \
1310 WIZCHIP_WRITE_BUF(SIPR, sipr, 4)
1311
1318#define getSIPR(sipr) \
1319 WIZCHIP_READ_BUF(SIPR, sipr, 4)
1320
1327#define setINTLEVEL(intlevel) \
1328 { \
1329 WIZCHIP_WRITE(INTLEVEL, (uint8_t)(intlevel >> 8)); \
1330 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(INTLEVEL, 1), (uint8_t)intlevel); \
1331 }
1332
1339//M20150401 : Type explict declaration
1340/*
1341#define getINTLEVEL() \
1342 ((WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL,1)))
1343*/
1344#define getINTLEVEL() \
1345 (((uint16_t)WIZCHIP_READ(INTLEVEL) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(INTLEVEL, 1)))
1346
1353#define setIR(ir) \
1354 WIZCHIP_WRITE(IR, (ir & 0xF0))
1355
1362#define getIR() \
1363 (WIZCHIP_READ(IR) & 0xF0)
1370#define setIMR(imr) \
1371 WIZCHIP_WRITE(_IMR_, imr)
1372
1379#define getIMR() \
1380 WIZCHIP_READ(_IMR_)
1381
1388#define setSIR(sir) \
1389 WIZCHIP_WRITE(SIR, sir)
1390
1397#define getSIR() \
1398 WIZCHIP_READ(SIR)
1405#define setSIMR(simr) \
1406 WIZCHIP_WRITE(SIMR, simr)
1407
1414#define getSIMR() \
1415 WIZCHIP_READ(SIMR)
1416
1423#define setRTR(rtr) \
1424 { \
1425 WIZCHIP_WRITE(_RTR_, (uint8_t)(rtr >> 8)); \
1426 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(_RTR_, 1), (uint8_t)rtr); \
1427 }
1428
1435//M20150401 : Type explict declaration
1436/*
1437#define getRTR() \
1438 ((WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_,1)))
1439*/
1440#define getRTR() \
1441 (((uint16_t)WIZCHIP_READ(_RTR_) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(_RTR_, 1)))
1442
1449#define setRCR(rcr) \
1450 WIZCHIP_WRITE(_RCR_, rcr)
1451
1458#define getRCR() \
1459 WIZCHIP_READ(_RCR_)
1460
1461//================================================== test done ===========================================================
1462
1469#define setPTIMER(ptimer) \
1470 WIZCHIP_WRITE(PTIMER, ptimer)
1471
1478#define getPTIMER() \
1479 WIZCHIP_READ(PTIMER)
1480
1487#define setPMAGIC(pmagic) \
1488 WIZCHIP_WRITE(PMAGIC, pmagic)
1489
1496#define getPMAGIC() \
1497 WIZCHIP_READ(PMAGIC)
1498
1505#define setPHAR(phar) \
1506 WIZCHIP_WRITE_BUF(PHAR, phar, 6)
1507
1514#define getPHAR(phar) \
1515 WIZCHIP_READ_BUF(PHAR, phar, 6)
1516
1523#define setPSID(psid) \
1524 { \
1525 WIZCHIP_WRITE(PSID, (uint8_t)(psid >> 8)); \
1526 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PSID, 1), (uint8_t)psid); \
1527 }
1528
1535//uint16_t getPSID(void);
1536//M20150401 : Type explict declaration
1537/*
1538#define getPSID() \
1539 ((WIZCHIP_READ(PSID) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PSID,1)))
1540*/
1541#define getPSID() \
1542 (((uint16_t)WIZCHIP_READ(PSID) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PSID, 1)))
1543
1550#define setPMRU(pmru) \
1551 { \
1552 WIZCHIP_WRITE(PMRU, (uint8_t)(pmru >> 8)); \
1553 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(PMRU, 1), (uint8_t)pmru); \
1554 }
1555
1562//M20150401 : Type explict declaration
1563/*
1564#define getPMRU() \
1565 ((WIZCHIP_READ(PMRU) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PMRU,1)))
1566*/
1567#define getPMRU() \
1568 (((uint16_t)WIZCHIP_READ(PMRU) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(PMRU, 1)))
1569
1575//M20150401 : Size Error of UIPR (6 -> 4)
1576/*
1577#define getUIPR(uipr) \
1578 WIZCHIP_READ_BUF(UIPR,uipr,6)
1579*/
1580#define getUIPR(uipr) \
1581 WIZCHIP_READ_BUF(UIPR, uipr, 4)
1582
1588//M20150401 : Type explict declaration
1589/*
1590#define getUPORTR() \
1591 ((WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(UPORTR,1)))
1592*/
1593#define getUPORTR() \
1594 (((uint16_t)WIZCHIP_READ(UPORTR) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(UPORTR, 1)))
1595
1602#define setPHYCFGR(phycfgr) \
1603 WIZCHIP_WRITE(PHYCFGR, phycfgr)
1604
1611#define getPHYCFGR() \
1612 WIZCHIP_READ(PHYCFGR)
1613
1619#define getVERSIONR() \
1620 WIZCHIP_READ(VERSIONR)
1621
1623
1625// Socket N register I/O function //
1627
1634#define setSn_MR(sn, mr) \
1635 WIZCHIP_WRITE(Sn_MR(sn), mr)
1636
1644#define getSn_MR(sn) \
1645 WIZCHIP_READ(Sn_MR(sn))
1646
1654#define setSn_CR(sn, cr) \
1655 WIZCHIP_WRITE(Sn_CR(sn), cr)
1656
1664#define getSn_CR(sn) \
1665 WIZCHIP_READ(Sn_CR(sn))
1666
1674#define setSn_IR(sn, ir) \
1675 WIZCHIP_WRITE(Sn_IR(sn), (ir & 0x1F))
1676
1684#define getSn_IR(sn) \
1685 (WIZCHIP_READ(Sn_IR(sn)) & 0x1F)
1686
1694#define setSn_IMR(sn, imr) \
1695 WIZCHIP_WRITE(Sn_IMR(sn), (imr & 0x1F))
1696
1704#define getSn_IMR(sn) \
1705 (WIZCHIP_READ(Sn_IMR(sn)) & 0x1F)
1706
1713#define getSn_SR(sn) \
1714 WIZCHIP_READ(Sn_SR(sn))
1715
1723#define setSn_PORT(sn, port) \
1724 { \
1725 WIZCHIP_WRITE(Sn_PORT(sn), (uint8_t)(port >> 8)); \
1726 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_PORT(sn), 1), (uint8_t)port); \
1727 }
1728
1736//M20150401 : Type explict declaration
1737/*
1738#define getSn_PORT(sn) \
1739 ((WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn),1)))
1740*/
1741#define getSn_PORT(sn) \
1742 (((uint16_t)WIZCHIP_READ(Sn_PORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_PORT(sn), 1)))
1743
1751#define setSn_DHAR(sn, dhar) \
1752 WIZCHIP_WRITE_BUF(Sn_DHAR(sn), dhar, 6)
1753
1761#define getSn_DHAR(sn, dhar) \
1762 WIZCHIP_READ_BUF(Sn_DHAR(sn), dhar, 6)
1763
1771#define setSn_DIPR(sn, dipr) \
1772 WIZCHIP_WRITE_BUF(Sn_DIPR(sn), dipr, 4)
1773
1781#define getSn_DIPR(sn, dipr) \
1782 WIZCHIP_READ_BUF(Sn_DIPR(sn), dipr, 4)
1783
1791#define setSn_DPORT(sn, dport) \
1792 { \
1793 WIZCHIP_WRITE(Sn_DPORT(sn), (uint8_t)(dport >> 8)); \
1794 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_DPORT(sn), 1), (uint8_t)dport); \
1795 }
1796
1804//M20150401 : Type explict declaration
1805/*
1806#define getSn_DPORT(sn) \
1807 ((WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn),1)))
1808*/
1809#define getSn_DPORT(sn) \
1810 (((uint16_t)WIZCHIP_READ(Sn_DPORT(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_DPORT(sn), 1)))
1811
1819#define setSn_MSSR(sn, mss) \
1820 { \
1821 WIZCHIP_WRITE(Sn_MSSR(sn), (uint8_t)(mss >> 8)); \
1822 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_MSSR(sn), 1), (uint8_t)mss); \
1823 }
1824
1832//M20150401 : Type explict declaration
1833/*
1834#define getSn_MSSR(sn) \
1835 ((WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn),1)))
1836*/
1837#define getSn_MSSR(sn) \
1838 (((uint16_t)WIZCHIP_READ(Sn_MSSR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_MSSR(sn), 1)))
1839
1847#define setSn_TOS(sn, tos) \
1848 WIZCHIP_WRITE(Sn_TOS(sn), tos)
1849
1857#define getSn_TOS(sn) \
1858 WIZCHIP_READ(Sn_TOS(sn))
1859
1867#define setSn_TTL(sn, ttl) \
1868 WIZCHIP_WRITE(Sn_TTL(sn), ttl)
1869
1877#define getSn_TTL(sn) \
1878 WIZCHIP_READ(Sn_TTL(sn))
1879
1887#define setSn_RXBUF_SIZE(sn, rxbufsize) \
1888 WIZCHIP_WRITE(Sn_RXBUF_SIZE(sn), rxbufsize)
1889
1897#define getSn_RXBUF_SIZE(sn) \
1898 WIZCHIP_READ(Sn_RXBUF_SIZE(sn))
1899
1907#define setSn_TXBUF_SIZE(sn, txbufsize) \
1908 WIZCHIP_WRITE(Sn_TXBUF_SIZE(sn), txbufsize)
1909
1917#define getSn_TXBUF_SIZE(sn) \
1918 WIZCHIP_READ(Sn_TXBUF_SIZE(sn))
1919
1926uint16_t getSn_TX_FSR(uint8_t sn);
1927
1934//M20150401 : Type explict declaration
1935/*
1936#define getSn_TX_RD(sn) \
1937 ((WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn),1)))
1938*/
1939#define getSn_TX_RD(sn) \
1940 (((uint16_t)WIZCHIP_READ(Sn_TX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_RD(sn), 1)))
1941
1949#define setSn_TX_WR(sn, txwr) \
1950 { \
1951 WIZCHIP_WRITE(Sn_TX_WR(sn), (uint8_t)(txwr >> 8)); \
1952 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn), 1), (uint8_t)txwr); \
1953 }
1954
1962//M20150401 : Type explict declaration
1963/*
1964#define getSn_TX_WR(sn) \
1965 ((WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn),1)))
1966*/
1967#define getSn_TX_WR(sn) \
1968 (((uint16_t)WIZCHIP_READ(Sn_TX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_TX_WR(sn), 1)))
1969
1976uint16_t getSn_RX_RSR(uint8_t sn);
1977
1985#define setSn_RX_RD(sn, rxrd) \
1986 { \
1987 WIZCHIP_WRITE(Sn_RX_RD(sn), (uint8_t)(rxrd >> 8)); \
1988 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn), 1), (uint8_t)rxrd); \
1989 }
1990
1998//M20150401 : Type explict declaration
1999/*
2000#define getSn_RX_RD(sn) \
2001 ((WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn),1)))
2002*/
2003#define getSn_RX_RD(sn) \
2004 (((uint16_t)WIZCHIP_READ(Sn_RX_RD(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_RD(sn), 1)))
2005
2012//M20150401 : Type explict declaration
2013/*
2014#define getSn_RX_WR(sn) \
2015 ((WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn),1)))
2016*/
2017#define getSn_RX_WR(sn) \
2018 (((uint16_t)WIZCHIP_READ(Sn_RX_WR(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_RX_WR(sn), 1)))
2019
2027#define setSn_FRAG(sn, frag) \
2028 { \
2029 WIZCHIP_WRITE(Sn_FRAG(sn), (uint8_t)(frag >> 8)); \
2030 WIZCHIP_WRITE(WIZCHIP_OFFSET_INC(Sn_FRAG(sn), 1), (uint8_t)frag); \
2031 }
2032
2040//M20150401 : Type explict declaration
2041/*
2042#define getSn_FRAG(sn) \
2043 ((WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn),1)))
2044*/
2045#define getSn_FRAG(sn) \
2046 (((uint16_t)WIZCHIP_READ(Sn_FRAG(sn)) << 8) + WIZCHIP_READ(WIZCHIP_OFFSET_INC(Sn_FRAG(sn), 1)))
2047
2055#define setSn_KPALVTR(sn, kpalvt) \
2056 WIZCHIP_WRITE(Sn_KPALVTR(sn), kpalvt)
2057
2065#define getSn_KPALVTR(sn) \
2066 WIZCHIP_READ(Sn_KPALVTR(sn))
2067
2069
2071// Sn_TXBUF & Sn_RXBUF IO function //
2073
2079//M20150401 : Type explict declaration
2080/*
2081#define getSn_RxMAX(sn) \
2082 (getSn_RXBUF_SIZE(sn) << 10)
2083*/
2084#define getSn_RxMAX(sn) \
2085 (((uint16_t)getSn_RXBUF_SIZE(sn)) << 10)
2086
2093//M20150401 : Type explict declaration
2094/*
2095#define getSn_TxMAX(sn) \
2096 (getSn_TXBUF_SIZE(sn) << 10)
2097*/
2098#define getSn_TxMAX(sn) \
2099 (((uint16_t)getSn_TXBUF_SIZE(sn)) << 10)
2100
2115void wiz_send_data(uint8_t sn, uint8_t* wizdata, uint16_t len);
2116
2131void wiz_recv_data(uint8_t sn, uint8_t* wizdata, uint16_t len);
2132
2140void wiz_recv_ignore(uint8_t sn, uint16_t len);
2141
2143#endif
2145
2146#ifdef __cplusplus
2147}
2148#endif
2149
2150#endif // _W5500_H_
void WIZCHIP_READ_BUF(uint32_t AddrSel, uint8_t *pBuf, uint16_t len)
It reads sequence data from registers.
Definition w5500.c:125
uint8_t WIZCHIP_READ(uint32_t AddrSel)
It reads 1 byte value from a register.
Definition w5500.c:65
void wiz_recv_data(uint8_t sn, uint8_t *wizdata, uint16_t len)
It copies data to your buffer from internal RX memory.
Definition w5500.c:231
void wiz_recv_ignore(uint8_t sn, uint16_t len)
It discard the received data in RX memory.
Definition w5500.c:248
void wiz_send_data(uint8_t sn, uint8_t *wizdata, uint16_t len)
It copies data to internal TX memory.
Definition w5500.c:214
void WIZCHIP_WRITE(uint32_t AddrSel, uint8_t wb)
It writes 1 byte value to a register.
Definition w5500.c:95
void WIZCHIP_WRITE_BUF(uint32_t AddrSel, uint8_t *pBuf, uint16_t len)
It writes sequence data to registers.
Definition w5500.c:155
uint16_t getSn_RX_RSR(uint8_t sn)
Get Sn_RX_RSR register.
Definition w5500.c:200
uint16_t getSn_TX_FSR(uint8_t sn)
Get Sn_TX_FSR register.
Definition w5500.c:186
WIZCHIP Config Header File.