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/TMS570LS0432:用于 sci 的 TMS570LS0432 DMA 参考项目

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

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/685933/ccs-tms570ls0432-tms570ls0432-dma-reference-project-for-sci

器件型号:TMS570LS0432
主题中讨论的其他器件: HALCOGENTMS570LC4357

工具/软件:Code Composer Studio

我一直在为 TMS570LS0432串行通信提供 DMA 支持的论坛工作(我使用的是 launchpad 平台)。

我找到 了 http://www.ti.com/lit/an/spna213/spna213.pdf 文档和一个示例项目 2781.TMS570LS20USB_DMA_DATA.zip 、并将其移植到 Composer Studio 中。

我使用的是 HALCoGen 04.07.00。

示例项目 HALCoGen 在示例项目架构中显示了一个 DMA 模块 TMS57LS1227ZWT 通用芯片概述。

HALCoGen 的 TMS570LS0432PZ (我理解为是 TMS570LS04/03 Launchpad 评估套件上的芯片)未显示 DMA 子系统、但 TMS570LS0432PZ 芯片的规格证明它能够执行该 DMA 功能。

不用说 SAT 当  它尝试设置 dmaREG 时、dmaEnable (void)失败、在示例 sys_dma.h 中为 ((dmaBASE-t *) 0xFFFFFF000U)。

应为此函数正确配置 Code Composer 和 HALcoGen 项目。  

请帮帮我。

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

    我很抱歉。 TMS570LS0x32没有 DMA 模块。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢、我有几个板。

    我现在在 TMS570LC4357开发板上使用示例 HALCoGen_SCI_DMA 示例、并将配置从提供的 RM 配置切换到 TMS570。

    症状是 sys_main 开始检查 CPU 并在 periphInit(void)上失败。

    我怀疑还有其他需要重新配置的东西。 有什么想法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    如果项目中有许多字节或位运算、则需要一些时间才能将小端器件的项目转换为大端器件的项目。 SCI DMA 示例代码已经过测试、适用于小端字节序器件和大端字节序器件。

    #if ((__little_endian__= 1)||(__little_ENDIAN__= 1)
    #define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD))
    #define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD))
    #define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD))
    #define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD))
    其他
    #define SCI3_TX_ADDR ((uint32_t)(&(sciREG3->TD))+ 3)
    #define SCI3_RX_ADDR ((uint32_t)(&(sciREG3->RD))+ 3)
    #define SCI4_TX_ADDR ((uint32_t)(&(sciREG4->TD))+ 3)
    #define SCI4_RX_ADDR ((uint32_t)(&(sciREG4->RD))+ 3)
    #endif