Page 1 of 1
STM32F103 Ethernet library?
Posted: Mon Jan 13, 2020 7:01 pm
by indridkold
I'm in the initial stages of selecting a processor for a wired ethernet project. I'll be using the STM32 Core. My supported choices so far are the F767 + external PHY, or the F103 + Wiznet5500. For the F767 the official STM32Ethernet library is clearly the one to use, but what is recommended for use with the F103 + Wiznet? I'm sure the Official Arduino Ethernet library would work after some modifications, as would the official library from Wiznet. Any recommendations would be appreciated, thanks.
Re: STM32F103 Ethernet library?
Posted: Wed Jan 22, 2020 4:34 am
by fpiSTM
I did no try with the wiznet. Did you try the Ethernet library?
Or you can test this one:
https://github.com/UIPEthernet/UIPEthernet
Re: STM32F103 Ethernet library?
Posted: Tue Mar 03, 2020 11:47 pm
by khoih-prog
You can have a look at
EthernetWebServer for STM32
The best and easiest way is to use F767ZI with built-in Ethernet PHY, which is supported by the above-mentioned library, via official STM32Ethernet library.
It also supports :
1. STM32 boards (with 64+K Flash) running ENC28J60 Ethernet shields via UIPEthernet library
2. STM32 boards (with 64+K Flash) running Wiznet W5x00 Ethernet shields via Ethernet library
Re: STM32F103 Ethernet library?
Posted: Wed Mar 04, 2020 6:29 am
by Juraj
indridkold wrote: Mon Jan 13, 2020 7:01 pm
I'm in the initial stages of selecting a processor for a wired ethernet project. I'll be using the STM32 Core. My supported choices so far are the F767 + external PHY, or the F103 + Wiznet5500. For the F767 the official STM32Ethernet library is clearly the one to use, but what is recommended for use with the F103 + Wiznet? I'm sure the Official Arduino Ethernet library would work after some modifications, as would the official library from Wiznet. Any recommendations would be appreciated, thanks.
for F103 + Wiznet use the official Arduino Ethernet library from the Library Manager
(UIPEthernet is for enc28j60 chips)
Re: STM32F103 Ethernet library?
Posted: Sun Jun 21, 2020 7:53 am
by nopnop2002
STM32 Core and STM32F103 can use these Ethernet libraries.
- ENC28J60
https://github.com/UIPEthernet/UIPEthernet
Chip select is specified using Ethernet.init().
- W5x00
https://github.com/nopnop2002/Arduino-STM32-Ethernet
Re: STM32F103 Ethernet library?
Posted: Sat Apr 10, 2021 12:48 pm
by jean-luc
I am testing a stm32h743zi2 and wanted to go for an ethernet (ver 1.2) test with the onboard interface.
Tried the basic exemple telnet available with the library and of course it does not work.
I can getting a lot of compilation error.
why ?
Help please, tahnk you
Code: Select all
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:80:48: error: 'ETH_RXBUFNB' was not declared in this scope
80 | __ALIGN_BEGIN ETH_DMADescTypeDef DMARxDscrTab[ETH_RXBUFNB] __ALIGN_END;/* Ethernet Rx MA Descriptor */
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:85:48: error: 'ETH_TXBUFNB' was not declared in this scope
85 | __ALIGN_BEGIN ETH_DMADescTypeDef DMATxDscrTab[ETH_TXBUFNB] __ALIGN_END;/* Ethernet Tx DMA Descriptor */
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:90:31: error: 'ETH_RXBUFNB' was not declared in this scope
90 | __ALIGN_BEGIN uint8_t Rx_Buff[ETH_RXBUFNB][ETH_RX_BUF_SIZE] __ALIGN_END; /* Ethernet Receive Buffer */
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:90:44: error: 'ETH_RX_BUF_SIZE' was not declared in this scope
90 | __ALIGN_BEGIN uint8_t Rx_Buff[ETH_RXBUFNB][ETH_RX_BUF_SIZE] __ALIGN_END; /* Ethernet Receive Buffer */
| ^~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:95:31: error: 'ETH_TXBUFNB' was not declared in this scope
95 | __ALIGN_BEGIN uint8_t Tx_Buff[ETH_TXBUFNB][ETH_TX_BUF_SIZE] __ALIGN_END; /* Ethernet Transmit Buffer */
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:95:44: error: 'ETH_TX_BUF_SIZE' was not declared in this scope
95 | __ALIGN_BEGIN uint8_t Tx_Buff[ETH_TXBUFNB][ETH_TX_BUF_SIZE] __ALIGN_END; /* Ethernet Transmit Buffer */
| ^~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:34: error: 'MAC_ADDR0' was not declared in this scope; did you mean 'GW_ADDR0'?
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
| GW_ADDR0
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:45: error: 'MAC_ADDR1' was not declared in this scope; did you mean 'GW_ADDR1'?
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
| GW_ADDR1
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:56: error: 'MAC_ADDR2' was not declared in this scope; did you mean 'IP_ADDR2'?
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
| IP_ADDR2
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:67: error: 'MAC_ADDR3' was not declared in this scope; did you mean 'GW_ADDR3'?
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
| GW_ADDR3
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:78: error: 'MAC_ADDR4' was not declared in this scope; did you mean 'IP_ADDR4'?
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
| IP_ADDR4
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:99:89: error: 'MAC_ADDR5' was not declared in this scope
99 | static uint8_t macaddress[6] = { MAC_ADDR0, MAC_ADDR1, MAC_ADDR2, MAC_ADDR3, MAC_ADDR4, MAC_ADDR5 };
| ^~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'void HAL_ETH_MspInit(ETH_HandleTypeDef*)':
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:151:3: error: '__HAL_RCC_ETH_CLK_ENABLE' was not declared in this scope
151 | __HAL_RCC_ETH_CLK_ENABLE();
| ^~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'void low_level_init(netif*)':
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:170:18: error: 'struct ETH_InitTypeDef' has no member named 'AutoNegotiation'
170 | EthHandle.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE;
| ^~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:170:36: error: 'ETH_AUTONEGOTIATION_ENABLE' was not declared in this scope
170 | EthHandle.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:171:18: error: 'struct ETH_InitTypeDef' has no member named 'Speed'
171 | EthHandle.Init.Speed = ETH_SPEED_100M;
| ^~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:172:18: error: 'struct ETH_InitTypeDef' has no member named 'DuplexMode'
172 | EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
| ^~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:172:31: error: 'ETH_MODE_FULLDUPLEX' was not declared in this scope
172 | EthHandle.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
| ^~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:174:35: error: 'ETH_MEDIA_INTERFACE_RMII' was not declared in this scope
174 | EthHandle.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
| ^~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:181:18: error: 'struct ETH_InitTypeDef' has no member named 'RxMode'
181 | EthHandle.Init.RxMode = ETH_RXPOLLING_MODE;
| ^~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:181:27: error: 'ETH_RXPOLLING_MODE' was not declared in this scope
181 | EthHandle.Init.RxMode = ETH_RXPOLLING_MODE;
| ^~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:183:18: error: 'struct ETH_InitTypeDef' has no member named 'ChecksumMode'
183 | EthHandle.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE;
| ^~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:183:33: error: 'ETH_CHECKSUM_BY_HARDWARE' was not declared in this scope; did you mean 'CHECKSUM_BY_HARDWARE'?
183 | EthHandle.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE;
| ^~~~~~~~~~~~~~~~~~~~~~~~
| CHECKSUM_BY_HARDWARE
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:184:18: error: 'struct ETH_InitTypeDef' has no member named 'PhyAddress'
184 | EthHandle.Init.PhyAddress = LAN8742A_PHY_ADDRESS;
| ^~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:184:31: error: 'LAN8742A_PHY_ADDRESS' was not declared in this scope
184 | EthHandle.Init.PhyAddress = LAN8742A_PHY_ADDRESS;
| ^~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:193:41: error: 'DMATxDscrTab' was not declared in this scope
193 | HAL_ETH_DMATxDescListInit(&EthHandle, DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
| ^~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:193:56: error: 'Tx_Buff' was not declared in this scope
193 | HAL_ETH_DMATxDescListInit(&EthHandle, DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
| ^~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:193:71: error: 'ETH_TXBUFNB' was not declared in this scope
193 | HAL_ETH_DMATxDescListInit(&EthHandle, DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:193:3: error: 'HAL_ETH_DMATxDescListInit' was not declared in this scope
193 | HAL_ETH_DMATxDescListInit(&EthHandle, DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:196:41: error: 'DMARxDscrTab' was not declared in this scope
196 | HAL_ETH_DMARxDescListInit(&EthHandle, DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
| ^~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:196:56: error: 'Rx_Buff' was not declared in this scope
196 | HAL_ETH_DMARxDescListInit(&EthHandle, DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
| ^~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:196:71: error: 'ETH_RXBUFNB' was not declared in this scope
196 | HAL_ETH_DMARxDescListInit(&EthHandle, DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:196:3: error: 'HAL_ETH_DMARxDescListInit' was not declared in this scope
196 | HAL_ETH_DMARxDescListInit(&EthHandle, DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:223:39: error: 'PHY_IMR' was not declared in this scope
223 | HAL_ETH_ReadPHYRegister(&EthHandle, PHY_IMR, ®value);
| ^~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:225:15: error: 'PHY_ISFR_INT4' was not declared in this scope
225 | regvalue |= PHY_ISFR_INT4;
| ^~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'err_t low_level_output(netif*, pbuf*)':
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:254:43: error: 'struct ETH_HandleTypeDef' has no member named 'TxDesc'; did you mean 'TxDescList'?
254 | uint8_t *buffer = (uint8_t *)(EthHandle.TxDesc->Buffer1Addr);
| ^~~~~~
| TxDescList
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:263:25: error: 'struct ETH_HandleTypeDef' has no member named 'TxDesc'; did you mean 'TxDescList'?
263 | DmaTxDesc = EthHandle.TxDesc;
| ^~~~~~
| TxDescList
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:269:21: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Status'
269 | if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
| ^~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:269:30: error: 'ETH_DMATXDESC_OWN' was not declared in this scope; did you mean 'ETH_DMATXCDESC_OWN'?
269 | if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
| ^~~~~~~~~~~~~~~~~
| ETH_DMATXCDESC_OWN
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:279:47: error: 'ETH_TX_BUF_SIZE' was not declared in this scope
279 | while ((byteslefttocopy + bufferoffset) > ETH_TX_BUF_SIZE) {
| ^~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:284:53: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer2NextDescAddr'
284 | DmaTxDesc = (ETH_DMADescTypeDef *)(DmaTxDesc->Buffer2NextDescAddr);
| ^~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:287:23: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Status'
287 | if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
| ^~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:287:32: error: 'ETH_DMATXDESC_OWN' was not declared in this scope; did you mean 'ETH_DMATXCDESC_OWN'?
287 | if ((DmaTxDesc->Status & ETH_DMATXDESC_OWN) != (uint32_t)RESET) {
| ^~~~~~~~~~~~~~~~~
| ETH_DMATXCDESC_OWN
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:292:39: error: 'volatile struct ETH_DMADescTypeDef' has no member named 'Buffer1Addr'
292 | buffer = (uint8_t *)(DmaTxDesc->Buffer1Addr);
| ^~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:307:3: error: 'HAL_ETH_TransmitFrame' was not declared in this scope; did you mean 'HAL_ETH_Transmit_IT'?
307 | HAL_ETH_TransmitFrame(&EthHandle, framelength);
| ^~~~~~~~~~~~~~~~~~~~~
| HAL_ETH_Transmit_IT
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:314:28: error: 'struct ETH_TypeDef' has no member named 'DMASR'; did you mean 'DMAMR'?
314 | if ((EthHandle.Instance->DMASR & ETH_DMASR_TUS) != (uint32_t)RESET) {
| ^~~~~
| DMAMR
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:314:36: error: 'ETH_DMASR_TUS' was not declared in this scope; did you mean 'ETH_DMADSR_TPS'?
314 | if ((EthHandle.Instance->DMASR & ETH_DMASR_TUS) != (uint32_t)RESET) {
| ^~~~~~~~~~~~~
| ETH_DMADSR_TPS
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:316:25: error: 'struct ETH_TypeDef' has no member named 'DMASR'; did you mean 'DMAMR'?
316 | EthHandle.Instance->DMASR = ETH_DMASR_TUS;
| ^~~~~
| DMAMR
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:319:25: error: 'struct ETH_TypeDef' has no member named 'DMATPDR'
319 | EthHandle.Instance->DMATPDR = 0;
| ^~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp: In function 'pbuf* low_level_input(netif*)':
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:346:7: error: 'HAL_ETH_GetReceivedFrame_IT' was not declared in this scope
346 | if (HAL_ETH_GetReceivedFrame_IT(&EthHandle) != HAL_OK) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\jld t430\Documents\Arduino\libraries\STM32duino_STM32Ethernet\src\utility\ethernetif.cpp:351:19: error: 'struct ETH_HandleTypeDef' has no member named 'RxFrameInfos'
351 | len = EthHandle.RxFrameInfos.length;
|
Re: STM32F103 Ethernet library?
Posted: Sat Apr 10, 2021 1:26 pm
by fpiSTM
Currently H7 is not supported by the STM32 Ethernet library. Issue is already opened to track that.
Re: STM32F103 Ethernet library?
Posted: Tue Apr 25, 2023 5:39 am
by westernhiller
The compile error remains for H7. Any progress on this ? @fpiSTM Is there another way walk around to use ethernet with H7? Thanks