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.
你好。 我使用的是 LAUNCHXL-F28379D、我构建了一个可通过 J9连接到 LAUNCHXL-F28379D 的小型存储器板。 将内存板连接到 LaunchPad 后、我进行了快速内存写入/读取测试、结果很奇怪。 所有偶数地址存储器工作不正常。 感觉 这个问题是由地址行 GPIO38/EM1A0引起的。 然后、我进行了两项测试、如下所示:
我写入0x8000 0000和0x8000 0001、 在这两种情况下、我希望 A0应该不同、但两者都是低电平。
2.我将 GPIO38配置为输出 GPIO 并输出高电平、我可以测量内存芯片上的高电平。 这证明连接正常。
有人能帮我解决这个问题吗? 我附加了 main.c 源文件和内存浏览器屏幕截图。 谢谢。
此致。
杨
/**
* main.c
*
#include "F28x_Project.h"
extern void LaunchXL_F28379D_CPU1_Init (void);
易失性 UINT16 * EMIF_POINTER=(UINT16 *) 0x80000000;
UINT32 EMIF_BIAS = 0;
uint16 write_data = 0;
uint16 read_data = 0;
uint32 failed_count = 0;
void main (void)
{
InitSysCtrl();
LaunchXL_F28379D_CPU1_Init();
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
IER = M_INT1 | M_INT3 | M_INT9;
EINT;
while (1)
{
failed_count = 0;
WRITE_DATA = 0;
WRITE_READ = 0;
对于(EMIF_BIAS=0;EMIF_BIAS<0x10000000;EMIF_BIAS++)
{
*(EMIF_POINTER+EMIF_BIAS)= WRITE_DATA;
write_data++;
}
write_data=0;
WRITE_READ = 1;
对于(EMIF_BIAS=0;EMIF_BIAS<0x10000000;EMIF_BIAS++)
{
READ_DATA =*(EMIF_POINTER+EMIF_BIAS);
if (read_data!= write_data)
failed_count++;
write_data++;
}
}
}
杨
您可以在电路板之间连接接线图吗?
此外、您还可以访问 www.ti.com/lit/sprac96?
另一个有用的资源是 C:\ti\c2000\C2000Ware_4_00_00\boards\TIDesigns\F28379D_EMIF_DC 中的 C2000-EMIF_ConfigurationTool.xlsx 工具
杨
如果您使用的是16位 SDRAM 存储器、请确保将 SDRAM_CR 寄存器中的 NM 位配置为"1"。 默认情况下为"0"。
此致、
Vivek Singh
您好、Haresh、
感谢您的回复。 请检查随附的接线图。 左侧是存储器芯片、右侧是 J9连接器。
我之前使用过这个图、没有问题。 我不知道为什么在我将其用于 LaunchPad 时会出现此问题。
谢谢!
您好、Vivek、
感谢您的回复。 我刚刚检查了寄存器、NM 位为"1"。 我遵循了 TI 示例"emif1_16bit_SDRAM_far.c"中的 EMIF 配置。
杨
请预计假期会有一些延迟。 我们团队中的许多人都在度假。 我们将在下周结束前为您解答。
您使用的是 LAUNCHXL-F28379D 的哪个版本?
LAUNCHXL-F28379D 概述用户指南(修订版 C) 注意到、根据 Launchpad 的修订版、您需要更改跳线或移动零欧姆电阻器、以便将所有 SDRAM EMIF 信号路由到 J9:
和原理图部分、其中显示了修订版2 Launchpad 上的零欧姆路由电阻器:
你(们)好。 我使用的是 Ver 2.0。 我仔细检查了0欧姆信号路由电阻器、它是正确的。 我已经将所有必要的信号路由到 J9。 此外、GPIO38没有0欧姆电阻器。 此外、正如我之前提到的、我执行了一个测试、将 GPIO38配置为输出、并检查了 F28379D 芯片与 SDRAM 芯片之间的连接。 因此、我认为这不是连接问题。 谢谢!
此致、
杨
U1的 DQMH 和 DQML 反向。 这是故意的吗?
您好、Haresh、
感谢您的回复。 是的、我交换了数据总线的高8位和低8位、因此我也交换了 DQMH 和 DQML。 但在我读取 sprac96后、如果数据总线宽度为16位、则表示不使用 DQMH 和 DQML。 那么、这是否是问题? 谢谢!
此致、
杨
我认为您指的是以下内容:
16位时不需要对字节使能信号进行动态控制、
位存储器、因为 C28x 是16位字可寻址的。 。
存储器字节使能信号可被连接至低电平(永久)
使能)。 32位的字节使能信号
如果16位写入和读取不是、存储器也可以连接到低电平
已使用。
请按照建议将其连接到低电平、然后查看是否解决了该问题。
您好、Haresh、
感谢您的支持。 不幸的是、这不能解决我的问题。 我将 DQMH 和 DQML 连接到最近的 GND 引脚、但问题仍然存在。
此致、
杨
请按照您在 C:\ti\c2000\C2000Ware_4_00_00\boards\TIDesigns\F28379D_EMIF_DC\F28379D_EMIF_DC_SCH.pdf 中找到的相同布线操作、并尝试从 C:\ti\c2000Ware_4_00_00\driverlib\f2837U1\examples\c2000\C2000Ware_4_00_4_00_00\driverlib\f2837U1\examples\cps\emif 中找到示例、然后让您了解您观察到的内容。
您好、Haresh、
我构建了一个新电路板、并固定了 DQMH 和 DQML 交换。 但为了简化布局、我仍然交换了一些位。 很遗憾。 问题仍然存在。
我还尝试 了 C:\ti\c2000Ware_4_00_00_00\driverlib\f2837xd\examples\CPU1\EMIF\EMIF_ex4_16bit_SDRAM_far_lpm.c 变量"testStatusGlobal"返回"0xDEADDEADDE"、"errCountGlobal"返回"2"。
有什么意见? 谢谢!
此致、
杨
杨
C2000ware 示例是一个经过测试的示例。 如果它不能按预期工作、则会在您的端点出现一些硬件问题 您能否与我私下分享您的完整原理图? 您可以在与我发起友谊请求后执行此操作。
您好、Haresh、
我明白了。 硬件没有问题。 问题是我未正确设置 GPIO 限定符选择。 我发现函数"setup_emif1_pinmux_SDRAM_16bit (0)"工作正常、但我自己的代码无法正常工作。 然后、我比较了代码、发现数据线应该使用异步输入限定。 感谢您的支持!
此致、
杨