2017-11-15 07:48 PM
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!2017-11-15 09:39 PM
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.
2017-11-15 11:38 PM
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 -
2017-11-16 10:27 AM
Hello. You should open a topic.
DFSDM clock maximum speed can be even fSYSCLK (page 163 in the Datasheet).
- Joerg -
2017-11-16 07:21 PM
Joerg
,
Thank you very much. Indeed, as you said, I did not notice the DMA address problem. The problem is solved, thanks again.
2017-11-17 01:59 AM
Thank you very much. Indeed, as you said, I did not notice the DMA address problem. The problem is solved, thanks again.
2018-02-20 08:32 AM
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);
}�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?