Skip to main content
jdo
Associate III
June 21, 2022
Question

how put UART DMA IN RAM?

  • June 21, 2022
  • 3 replies
  • 2717 views

..

    This topic has been closed for replies.

    3 replies

    jdo
    jdoAuthor
    Associate III
    June 21, 2022

    I AM THE LINKER, I NEED PUT UART DMA IN RAM, BECAUSE I AM WRITTING IN FLASH, AND THIS DO TALL BUS WHEN I WRITE IN FLASH IN REAL TIME. I AM USING UART DMA, BUT COMUNICATION NOT IS VERY GOOD.

    I AM USING DMA: HAL_UARTEx_ReceiveToIdle_DMA(&huart1,Rx_data,Rx_Buff_size);

    I HAVE TOO 3 TIMER INTERRUPT, AND 1 EXTERNT INTERRUP.

    /* Initialized data sections into "RAM" Ram type memory */
     .data :
     {
     . = ALIGN(4);
     _sdata = .; /* create a global symbol at data start */
     *(.data) /* .data sections */
     *(.data*) /* .data* sections */
     *(.RamFunc) /* .RamFunc sections */
     *(.RamFunc*) /* .RamFunc* sections */
     
     . = ALIGN(4);
     _edata = .; /* define a global symbol at data end */
     
     } >RAM AT> FLASH

    jdo
    jdoAuthor
    Associate III
    June 21, 2022

    I WANT PUT IN RANFUNC FOR NOT TALL BUS WHEN WRITE IN FLASH.

    jdo
    jdoAuthor
    Associate III
    June 21, 2022

    i am using DMA uart rx:

    void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
     
    {
     
    	if(huart->Instance==USART1)
     
    	{
     
    		memcpy(main_Buff,Rx_data,Size);
     
    		HAL_UARTEx_ReceiveToIdle_DMA(&huart1,Rx_data,Rx_Buff_size);
     
    		findString();
     
    		__HAL_DMA_DISABLE_IT(&hdma_usart1_rx,DMA_IT_HT);
     
    	}
     
    }