This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP432P401R:UART 接收 RX 数据存在 UDMA_MODE_PER_SP散 射收集问题

Guru**** 2603835 points
Other Parts Discussed in Thread: TM4C129ENCPDT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/649737/ccs-msp432p401r-uart-receive-udma_mode_per_scatter_gather-problem-with-receive-rx-data

器件型号:MSP432P401R
主题中讨论的其他器件:TM4C129ENCPDT

工具/软件:Code Composer Studio

您好社区。

我在 UDMA_MODE_PER_SP散 射收集模式下通过 UART 接收数据时遇到问题。 我有四个 Rx Biffer:

unsigned char FirstBufferRx[RX_buffer_length]={0};
unsigned char SecondBufferRx[RX_buffer_length]={0};
unsigned char thirdBufferRx[RX_buffer_length]={0};
unsigned char FourtBufferRx[RX_buffer_length]={0};

然后我有 DMA_ControlTable

DMA_ControlTable g_TaskTableDst[4]=

    //任务1:将 UART 数据复制到片段缓冲区1.

 DMA_TaskStructEntry (RX_buffer_length、UDMA_SIZE_8、
                       UDMA_SRC_INC_NONE、
                       &EUSCI_A0->RXBUF、
                       UDMA_DST_INC_8、FirstBufferRx、
                       UDMA_ARB_1、UDMA_MODE_PER_散 射_收集)、

   //
   //任务2:将 UART 数据复制到片段缓冲区2.
   //
 DMA_TaskStructEntry (RX_buffer_length、UDMA_SIZE_8、
                       UDMA_SRC_INC_NONE、&EUSCI_A0->RXBUF、
                       UDMA_DST_INC_8、二级缓冲器接收、
                       UDMA_ARB_1、UDMA_MODE_PER_散 射_收集)、

   //
   //任务3:将 UART 数据复制到片段缓冲区3中,

 DMA_TaskStructEntry (RX_buffer_length、UDMA_SIZE_8、
                       UDMA_SRC_INC_NONE、&EUSCI_A0->RXBUF、
                       UDMA_DST_INC_8、ThirdBufferRx、
                       UDMA_ARB_1、UDMA_MODE_PER_散 射_收集)、

   //任务4:将最后1个字节从 UART 复制到最后一个片段缓冲区的末尾

 DMA_TaskStructEntry (RX_buffer_length、UDMA_SIZE_8、
                       UDMA_SRC_INC_NONE、 &EUSCI_A0->RXBUF、
                       UDMA_DST_INC_8、FourtBufferRx、
                       UDMA_ARB_1、UDMA_MODE_BASIC)
};
然后我准备 DMA:

/*配置 DMA 模块*/
   map_dma_enableModule();
   MAP_DMA_setControlBase (MSP_EXP432P401RLP_DMAControlTable);

   /*将通道0分配给 EUSCIA0TX*/
   MAP_DMA_赋 值通道(DMA_CH0_EUSCIA0TX);
   /*将通道1分配给 EUSCIA0RX*/
   MAP_DMA_赋 值通道(DMA_CH1_EUSCIA0RX);

 //为散聚配置 UART RX DMA 通道
   MAP_DMA_setChannelScatterGather (DMA_CH1_EUSCIA0RX、4、(void*) g_TaskTableDst、1);

map_dma_enableChannel (dma_channel_1);

开始后、我从 PC 终端发送一些字符。 并获取中断空 EUSCIA0_IRQHandler。

我可以在 EUSCI_A=->UCARXBUF_SPI 寄存器中看到来自 sendet 序列的最后一个字符、但我的四个缓冲区仍然存在

空。 看起来 UART0和缓冲器之间没有连接。  

要获得明智的建议:非常感谢 adwance

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Aleksander

    从 UART RX 缓冲区复制数据的缓冲区大小是多少?
    2.当您对 SRAM 中的数据缓冲区进行零初始化并通过 UART RX 以已知字节发送数据缓冲区时、发生中断时缓冲区的内容是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amit、您好、谢谢!

    一个缓冲器列表的大小  2. 我第一次检查时使其变得很小。

    2.所有缓冲区的 Kontent 为0。 每个缓冲区仅 为0、就像声明后一样。

    此致

    Amit 是我为解决问题而努力的平均时间。 在《技术参考手册》中、我发现:

    22.3.16 DMA 操作

    当 UCTXIE = 0或时、所选 DMA 触发器的中断功能必须被禁用
    UCRXIE = 0.. 在 Debug I 中、使 UCAIE->UCRIE=1 (用于 DMA 传输的开始)。 我将检查此案例。

    但我一直对你那一双被人所吸引的眼睛感兴趣。 请回答我的问题

    问题 已解决。 我设置 UCAIE->UCRIE=0并且可以在 缓冲区中看到 sendet Data。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit Ashara、您好!

    我想知道如何为 TM4C129ENCPDT 重新编译 fatfs 长文件名功能。 我安装了最新的 Tiva 软件、但我找不到如何在 tava 中重新编译 fatfs。 TI RTOS 不会显示有关如何重新编译 fatfs 的分步说明。 您能向我展示一下 Tiva 的分步式指令吗? 非常感谢。 我知道此帖子与帖子所有者无关、但我找不到方法。 请在我需要时为我提供帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ye Myat Thu

    有关 TM4C129ENCPDT 器件的问题、请使用 TM4C 论坛。