cancel
Showing results for 
Search instead for 
Did you mean: 

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

Alex.E
Associate

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?

1 REPLY 1