Skip to main content
Alex.E
Visitor II
August 15, 2022
Question

Can't ping H743ii + dp83869. CubeIDE 1.9.0, CubeMX, HAL, noOS, MII, LwIP. But on devbords Nucleo_h745zi2 + PD83869EVM code works fine.

  • August 15, 2022
  • 1 reply
  • 1515 views

Get a problem with ETH on H7 family.

On my dev-board-stand-with-ugly-wired-beard (pic.1) Nucleo_h743zi2+ Dp83869EVM my project works fine.

Project (.ioc in attach) generated by CubeIDE, with some adds:

1) MPU:

/* Disables the MPU */
 HAL_MPU_Disable();
 /** Initializes and configures the Region and the memory to be protected
 */
 MPU_InitStruct.Enable = MPU_REGION_ENABLE;
 MPU_InitStruct.Number = MPU_REGION_NUMBER0;
 MPU_InitStruct.BaseAddress = 0x30040000;
 MPU_InitStruct.Size = MPU_REGION_SIZE_16KB;
 MPU_InitStruct.SubRegionDisable = 0x0;
 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1;
 MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
 MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
 MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
 MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
 
 HAL_MPU_ConfigRegion(&MPU_InitStruct);
 /** Initializes and configures the Region and the memory to be protected
 */
 MPU_InitStruct.Number = MPU_REGION_NUMBER1;
 MPU_InitStruct.BaseAddress = 0x30044000;
 MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
 MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
 
 HAL_MPU_ConfigRegion(&MPU_InitStruct);
 /** Initializes and configures the Region and the memory to be protected
 */
 MPU_InitStruct.Number = MPU_REGION_NUMBER2;
 MPU_InitStruct.BaseAddress = 0x30040000;
 MPU_InitStruct.Size = MPU_REGION_SIZE_256B;
 MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
 MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE;
 
 HAL_MPU_ConfigRegion(&MPU_InitStruct);
 /* Enables the MPU */
 HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);

2) linkscript:

 /* Modification start */
 .lwip_sec (NOLOAD) : {
 . = ABSOLUTE(0x30040000);
 *(.RxDecripSection) 
 
 . = ABSOLUTE(0x30040080);
 *(.TxDecripSection)
 
 . = ABSOLUTE(0x30040100);
 *(.RxArraySection) 
 } >RAM_D2
 /* Modification end */
 

3) custom changes ethernetif.c and DSP driver for dp83869. Like:

static err_t low_level_output(struct netif *netif, struct pbuf *p)
{
...
 /* Clean and Invalidate data cache */
 SCB_CleanInvalidateDCache();
 HAL_ETH_Transmit(&heth, &TxConfig, ETH_DMA_TRANSMIT_TIMEOUT);
 return errval;
}

This config works fine for me.

But when I use custom board with STM32H743II with this project, I cant ping my board.

Pinout almost the same.

For now i find out - MCU don't generate any signals on Tx0-Tx3 pins, but Rx0-Rx3 pins work well.

Any ideas?

This topic has been closed for replies.