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/TMS320F28377D:DSP 芯片使用外部 RAM。 将数据写入地址时、为什么其他地址的数据会发生变化?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/818332/ccs-tms320f28377d-the-dsp-chip-uses-an-external-ram-when-writing-data-to-an-address-why-does-the-data-at-other-addresses-change

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

作为标题、由于芯片自身的 RAM 仅为几十 k、因此需要根据例程的配置使用外部 RAM。 指针的起始地址为0x300000、定义的长度为0xFFFF、该值为0以增加到0xFFFF。
在地址0x300000~0x30FFFF 处、数据是正确的、0~FFFE。 但是、地址0x30FFFF 处的值也被分配给0~FFFE。 定义了另一个指针、地址位为0x30FFFF、长度为 FFFF、地址分配为 AAAA。 地址0x300000~0x30FFFF 的值也更改为 AAAA。 请一个好的人来帮助我。 结果和代码如下:

//######################################################################################################################
//文件:  emif1_16bit_asram.c
//标题: 访问16位 ASRAM 的 EMIF1模块。
//
//! addtogroup cpu01_example_list
//!

EMIF 异步模块(emif1_16bit_asram)


//!
//! 该示例将 EMIF1配置为16位异步模式
//! 此示例使用 CS2作为芯片启用。
//!
//! b 监视\b 变量:\n
//! -\b TEST_STATUS -如果测试正确完成、相当于\b TEST_PASS、
//!                    否则、该值设置为\b test_fail
//! -\b 勘误表-错误计数器
//!
//
//
//######################################################################################################################
//$TI 发行版:F2837xS 支持库 v180美元
//$Release Date:星期五11月 6日16:27:58 CST 2015 $
//版权所有:版权所有(C) 2014-2015 Texas Instruments Incorporated -
//            http://www.ti.com/ 保留所有权利$
//######################################################################################################################
#include "F28x_Project.h"    //设备头文件和示例 include 文件
#define TEST_PASS 0xABCDABCD
#define TEST_FAIL 0xDEADDEEAD

uint16  * ExRamStart =(uint16*) 0x300000;
uint16  *开始=(uint16*) 0x30FFFF;
extern void setup_emif1_pinmux_async_16bit (uint16);
//########## EMIF1-32位 ASRAM 测试##################
#define EMIF1 0
#define EMIF2 1.
#define MEM_D_width  1   // 16位存储器接口
#define TO_ARGE_TIME 0   // 2个 EMIF 时钟的周转时间
#define RD_SETUP_TIME  0   //读取1个 EMIF 时钟的建立时间
#define RD_STROBE _TIME  3   //读取4个 EMIF 时钟的选通时间
#define RD_HOLD_TIME  0   //读取1个 EMIF 时钟的保持时间
#define WR_SETUP_TIME  0   // 1 EMIF 时钟的写入保持时间
#define WR_STROBE _TIME  0   // 1 EMIF 时钟的写入建立时间
#define WR_HOLD_TIME  0   // 1 EMIF 时钟的写入保持时间
#define extend_wait  0   //禁用扩展等待
#define STROBE _SEL   0   //禁用选通模式。
#define WAIT_POLIC_INV  0
#define WAIT_COUNT   0

UINT16 勘误计数= 0;
uint32 test_status;
int i;

void main (void)

  // char 勘误表_local;
 //test_status = test_fail;
 InitSysCtrl();
  Dint;
  
// 将 PIE 控制寄存器初始化为默认状态。
// 默认状态为禁用所有 PIE 中断和标志
// 被清除。
// 此函数位于 F2837xS_PIECTRL.c 文件中。
   InitPieCtrl();
//禁用 CPU 中断并清除所有 CPU 中断标志:
   EALLOW;   
 IER = 0x0000;
 IFR = 0x0000;
 EDIS;
 
//使用指向 shell 中断的指针初始化 PIE 矢量表
// GService 例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。  这对于调试很有用。
//可以在 F2837xS_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xS_PieVect.c 中找到
  InitPieVectTable();
//配置为在全速率上运行 EMIF1 (EMIF1CLK = CPU1SYSCLK)
 EALLOW;
 ClkCfgRegs.PERCLKDIVSEL.bit.EMIF1CLKDIV = 0x0;
 EDIS;
 EALLOW;  
//禁用访问保护(CPU_Fetch、CPU_WR/DMA_WR)
 EMIF1ConfigRegs.EMIF1ACCPRT0.ALL = 0x0;
 if (emif1ConfigRegs.EMIF1ACCPRT0.ALL!= 0x0)
 {
     ErrCount++;
 }
//提交与保护相关的配置。 直到该位保持置位
//无法更改 EMIF1ACCPROT0寄存器的内容。
 EMIF1ConfigRegs.EMIF1COMMIT.ALL = 0x1;
 if (emif1ConfigRegs.EMIF1COMMIT.ALL!= 0x1)
 {
 ErrCount++;
 }
//锁定配置,以便不再更改 EMIF1COMMIT 寄存器。
 EMIF1ConfigRegs.EMIF1LOCK.ALL = 0x1;
 if (emif1ConfigRegs.EMIF1LOCK.ALL!= 1)
 {
  ErrCount++;
 }
 EDIS;
//为 EMIF1配置 GPIO 引脚
 setup_emif1_pinmux_async_16bit (0);

 //////////////////////////////////////////////////////////////////////////////////////////////////
 uint32 i=0;

 对于(i = 0;i< 0xFFFF;i++)
 {
  *(ExRamStart + I)= I;
 }
 asm (" ESTOP0");
 对于(i=0;i<0xFFFF;i++){
  *(开始+ I)= 0xaaaa;
 }
 asm (" ESTOP0");
// asm (" ESTOP0");
 while (1);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    地址组装有问题。 您能不能共享有关从 DSP 到外部 RAM 的信号连接的信息。 原理图快照将有所帮助。

    此致、

    Vivek Singh

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

    您好!

    您能否共享上次帖子中请求的信息。 如果问题已解决、请将其标记 为已解决。

    此致
    Vivek Singh

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

    将此标记为已关闭。 如果您仍面临此问题、请返回我们并提供所需的信息。