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.
我们有一个用作"FlexRay 网关"的 TMS5701227。 目前、FlexRay 处于运行状态、其传输和接收的数据项保存在内部 RAM 中、现在我们需要通过将这些数据项从内部 RAM 移动到作为 FPGA 一部分实现的外部 RAM 来完成系统设计。
我们遇到的问题是、外部存储器接口基本上没有提供我们预期的信号、为了确定问题、我们添加了一些测试代码(如下所示)、 我们还按照 另一个 EMIF 线程中的建议增加了设置、选通和保持时间。
修改了异步设置:CE2FFG 中的 SETUP (设置)、STROBE (选通)和 HOLD (保持)字段为最大值
emifREG->CE2CFG =(uint32)((uint32) 0U << 31U)|
(uint32)((uint32) 0U << 30U)|
(uint32)((uint32) 15U << 26U)|
(uint32)((uint32) 63U << 20U)|
(uint32)((uint32) 7U << 17U)|
(uint32)((uint32) 1U <<13U)|
(uint32)((uint32) 5U << 7U)|
(uint32)((uint32) 1U << 4U)|
(uint32)((uint32) 0U << 2U)|
(uint32)(((uint32) EMIF_16_bit_port);
将 PMU 区5从非共享器件修改为严格排序可共享、并启用子区6和7基地址和大小、在0x60000000至0x63FFFF 之间保持不变
;设置区域5
MOV r0 、#4
MCR P15、#0、 r0、C6、C2、 0
LDR r0、 r5Base
MCR P15、#0、 r0、C6、C1、 0
MOV r0 、#0x0000
ORR r0、 r0 、#0x1300
MCR P15、#0、 r0、C6、C1、 4.
movw r0、 #((0 << 15)+(0 << 14)+(0 << 13)+(0 << 12)+(0 << 11)+(0 << 10)+(0 << 9)+(0 << 8)+(0x19 << 1)+(1))
MCR P15、#0、 r0、C6、C1、 2
测试代码(大纲)
U16 Val;
Volatile U16* Loc;
Val = 0x5555;
LOC =(易失性 U16*) 0x60000000;
………
*位置= Val;
显示器件正在尝试进行某种版本的32位写入、数据与代码使用的数据不同。
请确保已实际启用 MPU。 应该在启动序列或主函数中调用 mpuInit()。
此致、Sunil
您好、Sunhil、
我可以确认在对 muxInit()的调用中正在设置 EMIF_FUNC (GPREG1的位31)并在我进行 EMIF 访问时设置
尊敬的 Bob:
您能否上传代码中配置 EMIF、MPU、I/O 多路复用以及进行这些写入访问的代码部分? 还请提供有关时钟域频率设置的信息。 当然、拥有整个代码项目会有所帮助、但至少这些配置会影响上传整个代码项目的可行性。
此致、
Sunil
已将项目导出为 zip 并附加。
写入外部存储器的例程位于 umain.c - CMD_Test()中。 出于调试目的、我们将写入与连接到 GPIO 端口 B 位0的1kHz 时钟信号的下降沿对齐、 但这只是一个初始触发器、用于确认我们在总线上看到的与代码进行的访问相关、因为我们没有看到预期的信号。
在一个 TMS570LS12X HDK 电路板上进行测试后、我发现 EMIF 总线处于工作状态。
该故障是由于 OrCAD 符号文件被错误解释以及 PCB 上使用了错误的引脚造成的。
感谢 Bob 的确认。
此致、
Sunil