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.

[参考译文] AM2432:UART DMA 接收回调模式

Guru**** 2391895 points
Other Parts Discussed in Thread: AM2432

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1480659/am2432-uart-dma-receive-callback-mode

器件型号:AM2432

工具与软件:

尊敬的 TI 专家:

客户正在使用 AM2432 SDK9.2。

客户配置了 UART DMA 模式、并将接收模式配置为回调模式、如下所示。

但是、客户发现回读的数据全部为0、下面提供了一些编码供您参考。

测试结果显示全部为0。

客户做了很多测试、最后找到了解决这个问题的方法、只是简单而已 将 metaPackage 阵列从4更改为4*8 如下所示。

完成此更改后、结果现在显示为正常。

您能给我们提供一个解释、说明为什么这种更改可以解决这个问题吗?

非常感谢、

Kevin

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

    尊敬的 Kevin:

    我已经通读了你们的答复。

    第一个定义是:

    uint8_t array[4]__ attribute _((aligned (32)))

    缓冲区只有4个字节、但强制对齐到32个字节。 这会浪费内存、并且可能无法与 DMA 良好配合使用、DMA 通常在32/64字节等较大的块上运行。

    为了实现可靠且高效的 DMA 操作、请继续使用第二个定义:

    uint8_t array[4*8]__attribute__((aligned (32)))

    在本例中、阵列大小(32字节)与对齐相匹配、因此具有高效的存储器访问、因为 DMA 与缓存行(通常为32/64字节)配合使用。

    另外、您是否还可以继续操作、在"Memory Browser"中查看阵列的地址。 请检查在第一种情况下是否可以在该处看到数据。

    此致、
    Vaibhav