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.

[参考译文] TMS570LC4357:SCI TX DMA 问题

Guru**** 2459550 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/647235/tms570lc4357-sci-tx-dma-problem

器件型号:TMS570LC4357
主题中讨论的其他器件: HALCOGEN

嗨、大家好

我将 LAUCHPAD XL2与 TMS570LC4357搭配使用。 我不熟悉 DMA、在研究了大量示例、TRM 和数据表之后、我使用 Halcogen 编写了下面的程序。

我想使用 DMA 通过 SCI1发送数据。 我知道程序是正确的。 SCI 发送数据、但除正确值外、数据为0。 当然、计数也是正确的。

请查看代码并告诉我问题。

SCI 1、波特率:9600、无奇偶校验

请告诉我 DMA 为什么需要 SCI1.TD 寄存器地址为+3、但 sciSendByte 仅使用 TD。

谢谢!e2e.ti.com/.../6567.DMA.rar

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

    您好、Ali、

    1、SCI3 TX 的 DMA 请求是代码中使用的#31、而不是#29

    TMS570LC43是一款大端字节序器件、TD[7:0]位字段存储在最高存储地址  

       SCITD[31:24]- 0x38

       SCITD[23:16]- 0x39

       SCITD[15:8]- 0x40

       SCITD[7:0]- 0x41

    3.请添加接收代码以接收传真数据,然后检查传真数据是否等于传真数据。

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

    谢谢您。

    但我不想使用 SCI3。 我需要 SCI1 TX。

    我的 HL_sys_main.cpp 文件非常不整洁、可能会使您出错、因此我在此附上清理后的代码。   

    请看一下并告诉我问题。 我只需要一个简单的 DMA SCI TX 作为示例。 据我所知、DMA 正常工作、但它从存储器中的某个错误位置读取数据、因为它在 SCI TX 中发送了正确数量的字节、我在终端中接收到这些字节、但接收到的字节全部为零。

    e2e.ti.com/.../0871.HL_5F00_sys_5F00_main.cpp

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

    阿里

    您是否看过应用手册 《具有 DMA 的 Hercules SCI》? 它也包含示例代码、但我相信它不适用于 TMS570LC4357。 由于 LC4357具有缓存、因此您需要确保缓存配置为直通模式、以确保 RAM 和缓存中的数据匹配。

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

    你好、Chuck、

    谢谢提示。 我在 Halcogen 中禁用了高速缓存:TMS570LC4357 > R5-MPU-PMU > Cortex-R5 >取消选中启用高速缓存

    因此、DMA 起作用了! 现在、我想做得更专业。 因为我不知道高速缓存的任何信息,所以您是否会向我发送一些有关配置高速缓存的代码,例如“写通模式”等

    你人真是太好了。

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

    您可以启用高速缓存、并将存储器区域配置为通过 HALCoGen 进行写回(OIWT 或 OIWB)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我如何知道应该配置哪一部分存储器

    谢谢

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

    您好、Ali、

    您可以配置任何存储器区域。 LC43x 上的 MPU 最多支持16个区域。 如果将 SRAM (从0x08000000开始)用作 DAM 传输的 src/dst 地址、则可以将此存储器区域配置为 OIWT (写入)。