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.

[参考译文] RM57L843:通过 DMA 模块将数据传输到 SCI 时出现问题。

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1256284/rm57l843-problem-while-transferring-data-to-sci-through-dma-module

器件型号:RM57L843

您好!

我的座右铭是通过 DMA 将数据传输到 SCI 模块。 但在执行相同操作时、无论数据长度如何、仅传输我的数据的第一个和最后一个字节(通过 docklight 进行检查)。  

DMA 控制数据包配置如下: 使用通道7 (随机选择)

{

源地址:声明为全局数组变量的数组地址。

目标地址:SCI3->TD 的地址。  

通道控制:0

帧计数:10 (声明的数组的大小为10)

单元数:1

元素和帧目的偏移量:0 (针对源和目的)

端口分配:端口 A 读取、PORTB 写入

读取大小和写入大小:8个字节(作为源数组声明为 uint8)

传输类型:块传输

源地址模式:地址增量

目标地址模式:固定地址

自动初始化关闭。

在 DMA RAM 中设置控制数据包 (通道7)

启用通道7

等待 SCI TD 为接收下一个字符做好准备。

EMA DMA

等待通道7的 BTC 标志置位

BTC 标志设置后、仅发送第一个和最后一个字节。

注意:当源数据在没有 DMA 的情况下直接提供给 SCI->TD 时、传输运行良好

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

    尊敬的 Satyanarayana:

    实际上、传输类型应该是帧传输、而不是块传输。

    如果我们将传输类型用作帧、则数据传输将在从 SCI Tx 寄存器移位每个字节后发生。 我的意思是、在每个字节传输后都会设置 Tx 空标志、这将触发 DMA、然后 DMA 会将一个字节从源移动到 Tx 寄存器。

    如果我们使用块传输、那么在第一个字节移位后、整个数据(即所有帧或所有字节)将被覆盖到 Tx 寄存器、甚至无需移动每个字节。 因此、由于这一特性、如果我们在此用例中使用块传输、我们只能获取第一个和最后一个字节。

    --

    谢谢。此致、
    Jagadish。