Skip to main content
one V
Associate III
November 16, 2017
Question

STM32H743ZI-NUCLEO UART DMA experiment for help

  • November 16, 2017
  • 3 replies
  • 1156 views
Posted on November 16, 2017 at 04:48

The UART DMA communication experiment using STM32H743ZI-NUCLEO development board, the routine can work, but the project generated using CUBEMX (V4.23) and STM32CubeH7 Firmware Package V1.1.0 can not work, the performance is TX no data out.

P

roject 

generated with STM32F446ZI-NUCLEO can also work. Anyone have encountered such a situation? Ask for help!
    This topic has been closed for replies.

    3 replies

    Xiangyu Chen
    Visitor II
    November 16, 2017
    Posted on November 16, 2017 at 06:39

    Hello, I guess the recent STM32CUBE is not ready for the development of new MCUs.

    There are a lot of bugs when a new MCU appears. 

    Uart is not the only bug, the DFSDM clock is also limited to 12.5Mhz while it should be as fast as the PCLK2.

    I suggest you either wait or check into peripheral initialization file uart.c,  check if the parameters in that file is as same as what is written in stm32cube. 

    Joerg Wagner
    Senior III
    November 16, 2017
    Posted on November 16, 2017 at 18:27

    Hello. You should open a topic.

    DFSDM clock maximum speed can be even fSYSCLK (page 163 in the Datasheet).

    - Joerg -

    Joerg Wagner
    Senior III
    November 16, 2017
    Posted on November 16, 2017 at 08:38

    Hello.

    The STM32H743ZI has a different memory structure and software of STM32F7xx /STM32F4xx will not work.

    When you search for 'H743 DMA' you will find my answers regarding this.

    Assuming you did not change the linker script, your data wil be located in DTCMRAM (0x20000000 - 0x20020000).

    But the peripheral DMA controllers do not have access to this RAM block. There is no interconnection in the matrix.

    (Take a brief look at page 99 and page 100 in the Reference Manual RM0433)

    You have two options:

    Simple way: Set the start address of your RAM to  0x24000000 in the linker script (D1 domain, page 109 in RM0433).

    Advanced: Or use a .section command for your memory stream in the linker script and in your code.

    - Joerg -

    one V
    one VAuthor
    Associate III
    November 17, 2017
    Posted on November 17, 2017 at 03:21

    Joerg

     ,

    Thank you very much. Indeed, as you said, I did not notice the DMA address problem. The problem is solved, thanks again.

    Nesrine M_O
    Associate
    November 17, 2017
    Posted on November 17, 2017 at 09:59

    Thank you very much. Indeed, as you said, I did not notice the DMA address problem. The problem is solved, thanks again.

    https://community.st.com/0D50X00009bMM5DSAW

     
    Tesla DeLorean
    Guru
    February 20, 2018
    Posted on February 20, 2018 at 17:32

    static void MPU_Config(void)
    {
     MPU_Region_InitTypeDef MPU_InitStruct;
     /* Disable the MPU */
     HAL_MPU_Disable();
     MPU_InitStruct.Enable = MPU_REGION_ENABLE;
     MPU_InitStruct.BaseAddress = 0x24000000;
     MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;
     MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
     MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
     MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
     MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
     MPU_InitStruct.Number = MPU_REGION_NUMBER0;
     MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
     MPU_InitStruct.SubRegionDisable = 0x00;
     MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
     HAL_MPU_ConfigRegion(&MPU_InitStruct);
     /* Enable the MPU */
     HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);
    }�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..