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/TMS570LC4357:创建 TMS570LC4357 DMA 示例

Guru**** 2477705 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/687429/ccs-tms570lc4357-creating-a-tms570lc4357-dma-example

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

工具/软件:Code Composer Studio

我正在移植 http://www.ti.com/lit/an/spna121a/spna121a.pdf 

发布的示例项目中的代码与提供的示例完全不同、该示例具有不同的寄存器结构、因此不会编译。

/*-填充 DMA 控制数据包结构*/
G_dmaCTRLPKT.CHCTRL = 0;                  /*通道控制*/
G_dmaCTRLPKT.ELCNT = 1;                   /*元素计数*/
G_dmaCTRLPKT.ELDOFFSET = 0;               /*元素目标偏移量*/
G_dmaCTRLPKT.ELSOFFSET = 0;              /*元素源偏移*/
G_dmaCTRLPKT.FRDOFFSET = 0;               /*帧目的偏移量*/
G_dmaCTRLPKT.FRSOFFSET = 0;               /*帧源偏移*/
G_dmaCTRLPKT.PORTASGN = 4;                /*端口 b */
G_dmaCTRLPKT.RDSIZE = ACCESS_8_BIT;       /*读取大小*/
G_dmaCTRLPKT.WRSIZE = ACCESS_8_BIT;       /*写入大小*/
G_dmaCTRLPKT.tType = frame_transfer;  /* transfer type *
G_dmaCTRLPKT.ADDMODERD = ADDR_INC1;   /*地址模式读取*
G_dmaCTRLPKT.ADDMODEWR = ADDR_FIXED;  /*地址模式写入*/
G_dmaCTRLPKT.AUTOINIT = AUTOINIT_OFF;    /*自动初始化*/

提供的示例中的指令还说明了以下 VIM 配置:

*-启用 GIO (可选)、SCI2、驱动程序
*
* VIM 通道0-31
*-启用 VIM 通道13 (LIN1高电平)中断(可选)
*
* VIM 通道32-63
*-启用 VIM 通道40 (DMA BTCA)中断

我没有背景知识来了解 打算用于 TMS570LC4357平台的寄存器。

您能否发布专门用于 TMS570LC4357 DMA 示例的 hl_sys_main.c?

非常感谢

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

    TMS570LC4357为"端口"定义了以下内容

    PORTB_READ_PORTB_WRITE = 0x3U、
    PORTA_READ_PORTA_WRITE = 0x2U、
    PORTA_READ_PORTB_WRITE = 0x1U、
    PORTB_READ_PORT_WRITE = 0x0U

    没有"4"。

    应使用哪种端口配置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对此有什么想法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John、

    我提供的代码适用于 TMS570LC4357和 RM57器件。 有2个用于 DMA 读取/写入的端口:端口 A 和端口 B:

    您使用的器件是 TMS570LC4357、因此请使用我为您提供的示例代码。

    其他 Hercules 器件使用端口 B 来读取和写入 DMA 数据。 端口分配寄存器中的端口 B 为0b1xx (我们的示例中使用0b100)。

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

    提供的代码是来自不同示例应用的代码片段。

    如果将发布的示例代码替换为您的代码:

    G_dmaCTRLPKT.Sadd          =   (uint32) TXDATA;
    G_dmaCTRLPKT.DADD          =   (uint32)&(mibspiRAM1->TX[0].data);
    G_dmaCTRLPKT.CHCTTRL        =  0;                            /*通道控制*/
    G_dmaCTRLPKT.ELCNT         =   E_COUNT;                     /*元素计数*/
    G_dmaCTRLPKT.FRCNT         =  F_COUNT;                    /*元素计数*/
    G_dmaCTRLPKT.ELDOFFSET    =  4;                           /*元素目标偏移量*/
    G_dmaCTRLPKT.ELSOFFSET    =  0;                            /*元素源偏移*/
    G_dmaCTRLPKT.FRDOFFSET   =  0;                           /*帧目的偏移量*/
    G_dmaCTRLPKT.FRSOFFSET   =  0;                           /*帧源偏移*/
    G_dmaCTRLPKT.PORTASGN    =  PORta_read_PORTB_write;/*端口 b *
    G_dmaCTRLPKT.RDSIZE        =   ACCESS_16_BIT;             /*读取大小*/
    G_dmaCTRLPKT.WRSIZE        =  ACCESS_16_BIT;              /*写入大小*/
    G_dmaCTRLPKPT.tType         =  FRAME_TRANSFRAME;          /*传输类型*/
    G_dmaCTRLPKT.ADDMODERD  =   ADDR_INC1;                  /*地址模式读取*/
    G_dmaCTRLPKT.ADDMODEWR =   ADDR_OFFSET;               /*地址模式写入*/
    G_dmaCTRLPKT.AUTOINIT      =   AUTOINIT_OFF;               /* autocinit */

    您将获得:

    "./source/HL_sys_main.c "、第254行:错误#20:标识符"TXDATA"未定义
    "../source/HL_sys_main.c、第255行:错误#20:标识符"mibspiRAM1"未定义
    "../source/HL_sys_main.c、第257行:错误#20:标识符"E_COUNT"未定义
    "../source/HL_sys_main.c、第258行:错误#20:标识符"F_COUNT"未定义

    有用的是为 TMS570LC43平台发布整个示例项目、以便我可以填写缺失的部分。  

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

    您好!

    HALCoGen 有一个示例。 HALCoGen-->帮助-->帮助主题-->示例-->示例_mibspidma.c

    帮助窗口显示 HALCoGen 设置和源代码。