STM32F103 Ethernet library?
-
- Posts: 3
- Joined: Mon Jan 06, 2020 8:26 pm
STM32F103 Ethernet library?
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?
I did no try with the wiznet. Did you try the Ethernet library?
Or you can test this one:
https://github.com/UIPEthernet/UIPEthernet
Or you can test this one:
https://github.com/UIPEthernet/UIPEthernet
-
- Posts: 102
- Joined: Thu Feb 27, 2020 7:54 am
- Location: Toronto
Re: STM32F103 Ethernet library?
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
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?
for F103 + Wiznet use the official Arduino Ethernet library from the Library Managerindridkold 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.
(UIPEthernet is for enc28j60 chips)
-
- Posts: 2
- Joined: Sun Jun 21, 2020 7:47 am
Re: STM32F103 Ethernet library?
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
- 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?
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
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?
Currently H7 is not supported by the STM32 Ethernet library. Issue is already opened to track that.
-
- Posts: 1
- Joined: Tue Apr 25, 2023 5:33 am
Re: STM32F103 Ethernet library?
The compile error remains for H7. Any progress on this ? @fpiSTM Is there another way walk around to use ethernet with H7? Thanks