系列文章
一、实现思路
W5500内部是硬件TCP/IP协议栈,对外(MCU)只是提供了操作socket的能力,内部支持8个独立的socket,每一个socket通过Socket n寄存器区控制(0≤n≤7)。
所以在编写基于Socket的网络应用程序时,可以按照查询Socket状态寄存器实现一个状态机的思路来实现。
W5500驱动库中提供了Socket状态寄存器的读取宏:
/**
* @ingroup Socket_register_access_function
* @brief Get @ref Sn_SR register
* @param (uint8_t)sn Socket number. It should be <b>0 ~ 7</b>.
* @return uint8_t. Value of @ref Sn_SR.
*/
#define getSn_SR(sn) \
WIZCHIP_READ(Sn_SR(sn))
W5500驱动库对读取出的状态值也提供了宏定义: