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/LAUNCHXL-F2.8379万D:2837x_rfft_ADC_RT /FLASH_FASTTS

Guru**** 2558250 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/630603/ccs-launchxl-f28379d-2837x_rfft_adc_rt-flash_fastrts

部件号:LAUNCHXL-F2.8379万D
主题中讨论的其他部件:controlSUITEC2000WARE

工具/软件:Code Composer Studio

您好,

我正在使用TI提供的“2837x_rfft_adc_RT”示例,程序运行正常,当我构建并加载到闪存模式(Build Configurations -> Set Active -> Select flash_TRFAST(…))时,所有结果(ADC输入/FFT值)都正常 当板连接到CCS时,使用CCS。

如果从PC重新连接主板,程序无法完全正常工作(我可以看到正确的ADC输入信号,但FFTmagBuff[]不工作。 换言之,似乎采用了傅立叶变换,但其值不正确,结果错误)。 绿色图形(FFTmagBuff-正确结果)适用于启动板连接到CCS并由代码编写器工作室开始工作的情况。 红色图形(FFTmagBuff结果错误)适用于按下板的REST按钮的情况。

感谢你的帮助。

此致,

Amin

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

    您好,

    在此项目中,.cmd文件是TI提供的原始文件:F2837xD_FPU_RFFT_ADC_RT_Lnk.cmd。

    如何解决此问题?

    此致,
    Amin

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

    我不确定问题何时发生,如果您能够看到CCS已连接的图形,

    因此,当您“加载代码”然后运行代码时,问题不会发生,对吗?

    如果您停止,请重置设备,重新启动,然后"运行"您观察到的错误代码?

    您如何在这两种情况下验证ADC缓冲器是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Manish,

    我将通过SCI UART端口发送数据。 当设备与CCS断开连接时,一切都正确,除了傅立叶结果。

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

    在更简单的示例中,输入信号的频率与阈值进行比较,
    如果信号的输入频率等于阈值,则GPIO = 1,否则GPIO = 0
    在本例中,当板连接到CCS时,一切都正常,但当设备与CCS断开连接时(按复位按钮),这不起作用。
    谢谢你。

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

    不同模式下的输出结果:


    此致,
    Amin

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

    如何解决此问题?
    谢谢你。

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

    是否有人可以指导我?
    谢谢你。

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

    是否有人可以指导我?
    谢谢你。

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

    Amin

    您提供的详细信息有些混淆。  当您说您断开CCS时,我想您是指单击CCS中的CPU RESET按钮。  正确吗?  

    我们需要您提供更清晰的信息,以便为您提供帮助。  

    1)您是否更改了示例代码或链接程序命令文件中的任何内容?  

    2)您是否依赖于RAM中不属于可执行文件一部分的任何数据?  确保将所有所需数据从闪存复制到应用程序中的RAM。

    3)在执行之前或执行期间,您是否更改了CCS内存窗口或监视窗口中的任何RAM内容?

    4)您能否列出在通过和失败案例中所做的所有步骤?

    例如:

    1. 这是我的启动模式PIN配置
    2. 然后,打开主板电源
    3. 已连接至CCS
    4. 已将代码加载到闪存
    5. 已执行
    6. 然后单击CCS RESET (CCS重置)
    7. 然后单击CCS重新启动
    8. 控制装置已到达主位置并停止
    9. 然后单击"继续"按钮

    谢谢,此致,

    Vamsi

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

    您好,Vamsi:

    感谢您的回复。

    当您说您断开CCS时,我想您是指单击CCS中的CPU RESET按钮。  正确吗?  我回顾了各种情况:CCS中的复位按钮/板中的机械复位按钮/终止

    1.您是否更改了示例代码或链接程序命令文件中的任何内容?  

    我查看了各种方案(将数据发送到SCI-A UART - GPIO闪烁以根据IF/Else检查频率)。 最后,我将使用TI提供的“2837x_rfft_ADC_RT”示例。  

    2)您是否依赖于RAM中不属于可执行文件一部分的任何数据?  

     我正在使用TI提供的“2837x_rfft_ADC_RT”示例。

    3)在执行之前或执行期间,您是否更改了CCS内存窗口或监视窗口中的任何RAM内容?

    4)您能否列出在通过和失败案例中所做的所有步骤?

    请检查此文件,我正在使用TI提供的原始“2837x_rfft_adc_RT”示例。

    e2e.ti.com/.../Rebuild-project.pdf

    此致,

    Amin

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

    您使用的编译器版本是什么?
    您使用的是C2000Ware还是controlSUITE的示例?

    在C2000Ware提供的链接器命令文件中,我看到ramfuncs没有分配给任何内存。

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

    您好,Vamsi:

    编译器版本:TI v 16.9 .4.LTS
    来自controlSUITE

    F2837xD_FPU_RFFT_ADC_RT_Lnk.cmd:

    //#######################################################################
    //
    //文件:F2837xD_FPU_RFFT_ADC_RT_Lnk.cmd
    ////
    标题:运行
    //的FPU库示例的链接器命令文件 在2837x平台
    上////
    此文件包括
    //上存在的所有RAM和闪存块 2837x和,取决于活动构建配置(RAM或闪存)
    // 相应的部分将加载到RAM或闪存
    //中 Blocks
    //
    // Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
    //保留所有权利
    //#######################################################################
    //$TI发行版:C28x浮点库1.50 Unit.C28x 00.00 $//
    发行日期:2015年6月2日$//#########################################################################################################################################################
    
    //注释:
    // 1. 除了此内存链接程序命令文件外,还可以将头链接程序
    //命令文件直接添加到项目中。 要
    将外设结构链接到
    //内存映射中的正确位置,需要提供头链接器命令文件//。
    //
    //头链接器文件位于
    // controlSUITE\DEVICE_SUPPORT\F2837x (D/S)\<version>\F2837x (D/S)_headers\cmd
    ////
    对于BIOS应用程序,请添加: F2837x (D/S)_Headers_BIOS_cpuX.cmd
    //对于非BIOS应用程序,请添加:F2837x (D/S)_Headers_nonBIOS_cpuX.cmd
    ///
    2。 重置时,所有RAMGSx块都在CPU1的主连接下。 用户
    // 必须配置适当的控制寄存器以传输mastership
    // 将RAMGSx块转移至CPU2////
    
    3。 F2837x上的内存块在
    //第0页和第1页中均一致(即相同的物理内存)。 对于
    第0页和第1页,不应定义//相同的内存区域。 否则将导致程序
    //和/或数据损坏。
    ////
    连续的SARAM内存块可以在需要时进行组合,以创建
    //更大的内存块。
    //
    //###################################################################################
    
    //以下定义将有助于对齐输入缓冲区。对于
    大小为N的复杂FFT //,输入缓冲区必须对齐4N字边界。 对于
    大小为N的实际FFT //,输入缓冲区必须与2N字边界对齐。 用户可以在
    链接程序命令文件中定义//宏,如下所示;也可以
    通过//下的项目属性定义//
    C2000链接器->高级选项->命令文件预处理->--define
    -- 定义RFFT_alignment=1024
    #if !defined(RFFT_alignment)
    #error define RFFT_alignment under C2000 Linker -> Advanced Options -> Command File Preprocessing ->--define
    #endif
    
    memory
    {
    page 0:/*
    begin用于“boot to SARAM" bootloader mode */
    #if defined(RAM)
    begin :Origin = 0x0万,length = 0x0.0002万
    #Elif defined (flash)
    begin :原点= 0x8万,长度= 0x0.0002万
    #endif
    RAMM0 :原点= 0x0.0122万,长度= 0x0002DE
    RAMM1 :原点= 0x0.04万,长度= 0x0.04万
    
    RAMD0		:原点= 0x00B000,长度= 0x0.08万
    RAMD1		:原点= 0x00B800,长度= 0x0.08万
    
    RAMLS0 :原点= 0x0.8万,长度= 0x0.08万
    RAMLS1 :原点= 0x0.88万,长度= 0x0.08万
    RAMLS2 :原点= 0x0.9万,长度= 0x0.08万
    
    RAMGS0		:原点= 0x00C000,长度= 0x0.1万
    RAMGS1		:原点= 0x00D000,长度= 0x0.1万
    RAMGS2		:原点= 0x00E000,长度= 0x0.1万
    RAMGS3		:原点= 0x00F000,长度= 0x0.1万
    
    重置 :原点= 0x3FFFC0,长度= 0x0.0002万
    
    FLASHA :原点= 0x8.0002万,长度= 0x001FFE	/*片上闪存*/
    FLASHC :原点= 0x8.4万,长度= 0x0.2万	/*片上闪存*/
    FLASHD :原点= 0x8.6万,长度= 0x0.2万	/*片上闪存*/
    FLASHE :原点= 0x8.8万,长度= 0x0.8万	/*片上闪存*/
    FLASHF :原始= 0x9万,长度= 0x0.8万	/*片上闪存*/
    FLASHG :原始= 0x9.8万,长度= 0x0.8万	/*片上闪存*/
    FLASHH :原始= 0x0A0000,长度= 0x0.8万	/*片上闪存*/
    FLASHI :原点= 0x0A8000,长度= 0x0.8万	/*片上闪存*/
    FLASHJ :原始= 0x0B0000,长度= 0x0.8万	/*片上闪存*/
    FLASHK :原点= 0x0B8000,长度= 0x0.2万	/*片上闪存*/
    FLASHL :原点= 0x0BA000,长度= 0x0.2万	/*片上闪存*/
    FLASHM :原点= 0x0BC000,长度= 0x0.2万	/*片上闪存*/
    FLASHN :Origin = 0x0BE000,length = 0x0.2万	/*片上闪存*/
    
    
    page 1:
    boot_rsvd :原点= 0x0.0002万,长度= 0x0.012万 /* M0的一部分,引导ROM将使用此堆栈*/
    
    RAMLS3 :原点= 0x0.98万,长度= 0x0.08万
    RAMLS4 :原点= 0x00A000,长度= 0x0.08万
    RAMLS5 :原点= 0x00A800,长度= 0x0.08万
    
    RAMGS45		:原点= 0x1万,长度= 0x0.2万
    RAMGS67		:原点= 0x1.2万,长度= 0x0.2万
    RAMGS89		:原点= 0x1.4万,长度= 0x0.2万
    RAMGS1011	:原点= 0x1.6万,长度= 0x002000
    
    RAMGS12		:原点= 0x018000,长度= 0x00GS1000 RAMGS1000
    		:长度:0x0.1万
    		:0 原点= 0x01A000,长度= 0x0.1万
    RAMGS15		:原点= 0x01B000,长度= 0x0.1万
    
    FLASHB :Origin = 0x8.2万,length = 0x0.2万	/*片上闪存*/
    
    }
    
    节
    {
    codegot :>开始, 页= 0
    #if defined (RAM)
    ramfuncs. :> RAMM0, 页面= 0
    .text :>> RAMM1 | RAMD0 | RAMD1 | RAMLS0,页面= 0
    .cit :> RAMLS1,第= 0页
    
    。销钉 :> RAMLS1,页= 0
    .switch :> RAMLS1,页= 0
    。econst :> RAMLS4,第= 1页
    #Elif defined (flash)
    ramfuncs. :负载= FLASHC,
    RUN = RAMLS1,
    run_start(_RamfuncsRunStart),
    load_start(_RamfuncsLoadStart),
    load_size (_RamfuncsLoadSize),
    页面= 0
    
    .text :> FLASHN,page = 0
    .cinit :> FLASHM,页面= 0
    
    。Pinit :> FLASHM,PAGE = 0
    .SWITCH :> FLASHM,页面= 0
    。econst :> FLASHB,第=1页
    #其它
    #错误将"RAM"或"FLASH"添加到C2000连接器->高级选项->命令文件预处理->-定义
    #endif //RAM/*
    
    测试特定部分*/
    RFFTdata1 :> RAMGS45,页面=1,对齐= RFFT_alignment
    RFFTdata2 :> RAMGS67,第= 1页
    RFFTdata3. :> RAMGS89,第= 1页
    RFFTdata4. :> RAMGS1011,第= 1页
    
    FPUmathTables:> RAMGS12,page = 1
    
    重置 :>重置, Page =0,type = DSECT /* not used,*/
    
    .cio :> RAMLS3,页面= 1
    .sysmem :> RAMLS3,页面= 1
    
    .stack :> RAMLS4,页面= 1
    .ebss :> RAMLS5,第= 1页
    。esysmem :> RAMLS4,页面=1
    }/*
    
    //===========================================================
    //文件结束。
    //===========================================================================================================================================
    */
    


    感谢你的帮助。

    此致,
    Amin

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

    Amin

    FPU_initFlash()函数必须从RAM而不是从Flash执行。  在TI提供的Examples_setup.c文件中,此函数未分配给ramfuns。  我在此处附上了更新的文件。  试试吧。  不确定单凭此更改是否可以解决问题。  但这有助于正确配置闪存等待状态,因此可能会有所帮助。  请告诉我。  同时,我将与示例的作者核实是否有任何其他函数应该从RAM执行以获得正确的结果。   

    谢谢,此致,
    Vamsi
    e2e.ti.com/.../examples_5F00_setup.c

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

    没有效果,就像过去一样,结果也不对。
    谢谢你。

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

    将数学表定义更改为此

    FPUmathTables:load = FLASHB,
    RUN = RAMGS12,
    Run_start(_FPUmathTablesRunStart),
    Load_start(_FPUmathTablesLoadStart),
    Load_Size (_FPUmathTablesLoadSize),
    页面= 1.

    在代码中,您需要将此部分记为其运行位置

    extern UINT32_t FPumathTablesRunStart,FPumathTablesLoadStart,FPumathTablesLoadSize;
    memcpy(&FPUmathTablesRunStart,&FPumathTablesLoadStart,(UINT32_t)&FPumathTablesLoadSize);

    由于使用的是FASTRTS,因此生成twiddle因子时使用的Sin()和cos()例程来自FASTRTS库,该库需要FPUmathTables中的表。 如果在JTAG连接的情况下运行,CCS直接将表加载到RAM中,而如果在独立的情况下运行- JTAG已拔出,则应在闪存中加载这些表,然后在运行时复制到RAM中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Vishal和Vamsi:

    很好地处理这些更改。
    感谢你的帮助。

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

    很高兴它有所帮助。 感谢您将此问题告知我们。
    我们将更正示例,以便其他人不会面临此问题。

    谢谢,此致,
    Vamsi