以太网¶
应用程序示例¶
以太网示例 ethernet/ethernet.
API 参考手册¶
PHY 接口¶
PHY 模块通过配置所给 PHY 的结构体 eth_config_t 进行配置。
头部包含一个默认的配置结构体。这些默认配置中的某些成员在被用于一个特殊的 PHY 硬件配置之前需要被覆盖或重置。查看以太网的示例代码可以了解这是如何完成的。
类型定义¶
-
typedef bool (*
eth_phy_check_link_func
)(void)¶
-
typedef void (*
eth_phy_check_init_func
)(void)¶
-
typedef eth_speed_mode_t (*
eth_phy_get_speed_mode_func
)(void)¶
-
typedef eth_duplex_mode_t (*
eth_phy_get_duplex_mode_func
)(void)¶
-
typedef void (*
eth_phy_func
)(void)¶
-
typedef esp_err_t (*
eth_tcpip_input_func
)(void *buffer, uint16_t len, void *eb)¶
-
typedef void (*
eth_gpio_config_func
)(void)¶
-
typedef bool (*
eth_phy_get_partner_pause_enable_func
)(void)¶
枚举¶
结构体¶
-
struct
eth_config_t
¶ ethernet configuration
Public Members
-
eth_phy_base_t
phy_addr
¶ phy base addr (0~31)
-
eth_mode_t
mac_mode
¶ mac mode only support RMII now
-
eth_tcpip_input_func
tcpip_input
¶ tcpip input func
-
eth_phy_func
phy_init
¶ phy init func
-
eth_phy_check_link_func
phy_check_link
¶ phy check link func
-
eth_phy_check_init_func
phy_check_init
¶ phy check init func
-
eth_phy_get_speed_mode_func
phy_get_speed_mode
¶ phy check init func
-
eth_phy_get_duplex_mode_func
phy_get_duplex_mode
¶ phy check init func
-
eth_gpio_config_func
gpio_config
¶ gpio config func
-
bool
flow_ctrl_enable
¶ flag of flow ctrl enable
-
eth_phy_get_partner_pause_enable_func
phy_get_partner_pause_enable
¶ get partner pause enable
-
eth_phy_power_enable_func
phy_power_enable
¶ enable or disable phy power
-
eth_phy_base_t
函数¶
-
esp_err_t
esp_eth_init
(eth_config_t *config)¶ Init ethernet mac.
- Note
- config can not be NULL,and phy chip must be suitable to phy init func.
- Return
- ESP_OK
- ESP_FAIL
- Parameters
config
: mac init data.
-
esp_err_t
esp_eth_tx
(uint8_t *buf, uint16_t size)¶ Send packet from tcp/ip to mac.
- Note
- buf can not be NULL,size must be less than 1580
- Return
- ESP_OK
- ESP_FAIL
- Parameters
buf
: start address of packet data.size
: size (byte) of packet data.
-
esp_err_t
esp_eth_enable
(void)¶ Enable ethernet interface.
- Note
- Shout be called after esp_eth_init
- Return
- ESP_OK
- ESP_FAIL
-
esp_err_t
esp_eth_disable
(void)¶ Disable ethernet interface.
- Note
- Shout be called after esp_eth_init
- Return
- ESP_OK
- ESP_FAIL
-
void
esp_eth_get_mac
(uint8_t mac[6])¶ Get mac addr.
- Note
- mac addr must be a valid unicast address
- Parameters
mac
: start address of mac address.
-
void
esp_eth_smi_write
(uint32_t reg_num, uint16_t value)¶ Read phy reg with smi interface.
- Note
- phy base addr must be right.
- Parameters
reg_num
: phy reg num.value
: value which write to phy reg.
-
uint16_t
esp_eth_smi_read
(uint32_t reg_num)¶ Read phy reg with smi interface.
- Note
- phy base addr must be right.
- Return
- value what read from phy reg
- Parameters
reg_num
: phy reg num.
-
esp_err_t
esp_eth_smi_wait_value
(uint32_t reg_num, uint16_t value, uint16_t value_mask, int timeout_ms)¶ Continuously read a PHY register over SMI interface, wait until the register has the desired value.
- Note
- PHY base address must be right.
- Return
- ESP_OK if desired value matches, ESP_ERR_TIMEOUT if timed out.
- Parameters
reg_num
: PHY register numbervalue
: Value to wait for (masked with value_mask)value_mask
: Mask of bits to match in the register.timeout_ms
: Timeout to wait for this value (milliseconds). 0 means never timeout.
-
static esp_err_t
esp_eth_smi_wait_set
(uint32_t reg_num, uint16_t value_mask, int timeout_ms)¶ Continuously read a PHY register over SMI interface, wait until the register has all bits in a mask set.
- Note
- PHY base address must be right.
- Return
- ESP_OK if desired value matches, ESP_ERR_TIMEOUT if timed out.
- Parameters
reg_num
: PHY register numbervalue_mask
: Value mask to wait for (all bits in this mask must be set)timeout_ms
: Timeout to wait for this value (milliseconds). 0 means never timeout.
-
void
esp_eth_free_rx_buf
(void *buf)¶ Free emac rx buf.
- Note
- buf can not be null,and it is tcpip input buf.
- Parameters
buf
: start address of recevie packet data.
PHY 配置常量¶
警告
doxygenvariable: Cannot find variable “phy_tlk110_default_ethernet_config” in doxygen xml output for project “esp32-idf” from directory: xml/
警告
doxygenvariable: Cannot find variable “phy_lan8720_default_ethernet_config” in doxygen xml output for project “esp32-idf” from directory: xml/