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.

[参考译文] TM4C129ENCPDT:结合 TI RTOS 使用 EPI -为通用模式配置 EPI 及其相关 GPIO

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1311611/tm4c129encpdt-using-epi-with-ti-rtos---configuring-epi-and-its-associated-gpio-for-general-purpose-mode

器件型号:TM4C129ENCPDT

您好!

我的目标是在该 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 初始化各种外设是"简单"的、但我为这件事感到苦恼。

谢谢!

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

    你好、Noah:

    当我从 main 调用 InitEpi ()时,我将其放置在 Board_initEMAC()之后;函数,该函数来自 tcpEcho 示例:

    这会导致 MCU 崩溃。

    [/报价]

    是在 initEpi()内部发生的崩溃 ,还是在 initEpi()执行后发生的崩溃。   您知道导致崩溃的代码行吗? 从我在 initEpi()上看到的内容来看,除非您在代码中的其他位置执行了操作,否则我真的看不到您启用了 EPI 模块。 您的代码中的以下行在哪里? 如果不使能模块、对 EPI 模块的任何访问都会导致总线故障。  

    SysCtlPeripheralEnable (SYSCTL_Periph_EPI0);

    现在,我已经使用 TI RTOS 对 GPIO 初始化做了一些阅读,我知道有一个数据结构(GPIO_PinConfig)可以处理此问题。
    [userid="589411" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1311611/tm4c129encpdt-using-epi-with-ti-rtos---configuring-epi-and-its-associated-gpio-for-general-purpose-mode ]此外,是否可以使用 XGCONFIG 工具来完成此操作?[/quote]

    用于 Tiva 处理器的.cfg 不支持 EPI。 因此、不能使用.cfg 来配置 EPI 模块。