您好!
我的目标是在该 MCU 和 FPGA (Lattice Mach X02或类似器件)之间建立一条并行通信总线。 我的设计使用具有以下配置的 EPI 接口:
- 通用模式
- 8位数据。
- 4位地址
- 时钟被选通
- RD 和 WR 位用于指定数据方向
我已经基于 TI RTOS 项目中包含的 tcpEcho 示例构建项目。 此外,我还创建了一个名为"InitEpi ()"的初始化函数,该函数将 EPI 设置为如上所述的函数。 注意-我知道此函数可以正常运行、因为我已经使用非 RTOS 工程对其进行了测试:
int32_t InitEpi (空)
{
int32_t ReturnVal =-1;
//
//设置 EPI 模块的使用模式。
//将使用通用的8位数据模式。
//
EPIModeSet (EPI0_BASE、EPI_MODE_General);
//EPI CLK 为 SYSCLK 的1/2
EPIDividerSet (EPI0_BASE、0x1);
EPIConfigGPModeSet
(
EPI0_BASE、
(EPI_GPMODE_CLKPIN |/* EPI_GPMODE_CLKGATE |*/ EPI_GPMODE_ASIZE_20 | EPI_GPMODE_DSIZE_8),
0、
0
);
//nm 我不确定这对于地址映射是否正确、但看到了示例中使用的此配置
EPIAddressMapSet (EPI0_BASE、EPI_ADDR_PER_SIZE_256B | EPI_ADDR_PER_BASE_A);
返回值= 1;
返回值;
}
这就是问题所在。 当我从 main 调用 InitEpi ()时,我将其放置在 Board_initEMAC ();函数之后,该函数来自 tcpEcho 示例:
int main (空)
{
/*调用板初始化函数*/
Board_initGeneral();
Board_initGPIO();
Board_initEMAC();
InitEpi();
System_printf ("启动 TCP Echo 示例\n 系统提供程序设置为"
"SysMin。 Halt the target to view any SysMin contents in "(停止目标以查看中的任何 SysMin 内容)
" ROV.\n");
/* SysMin 仅在您调用 flush 或 exit 时打印到控制台*/
system_flush();
/*启动 BIOS */
BIOS_start();
返回(0);
}
这会导致 MCU 崩溃。
现在、我已经使用 TI RTOS 对 GPIO 初始化进行了一些读取、我知道有一个数据结构(GPIO_PinConfig)负责处理此问题。 但是、我不知道是否需要使用这个结构来初始化 EPI、也不知道如何操作。 此外、这一切都可以使用 XGCONFIG 工具来完成吗? 很多消息来源说、使用 TI RTOS 初始化各种外设是"简单"的、但我为这件事感到苦恼。
谢谢!