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.

[参考译文] TM4C1294NCPDT:EPI 接口

Guru**** 2463330 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/658455/tm4c1294ncpdt-epi-interface

器件型号:TM4C1294NCPDT

尊敬的先生,亲爱的朋友们,

配置 EPI 的通用模式。 我正在参考驱动程序库用户指南中的示例。我无法找到应该将哪个函数用于写入目的??  是否可以使用

在  通用模式下是否使 EPIWorkaroundHWordWrite()函数无效?   

EPI 模式的配置如下:

EPIConfigGPModeSet (EPI0_BASE、(EPI_GPMODE_CLKPIN | EPI_GPMODE_ASIZE_4 | EPI_GPMODE_DSIZE)、2);

EPIAddressMapSet (EPI0_BASE、EPI_ADDR_PER_SIZE_256B | EPI_ADDR_PER_BASE_NONE);

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

    您好、Digvijay、

     EPIWorkaroundHWordWrite()和其它类似的 API 函数旨在解决 EPI 勘误表#1的问题。 如果您处于通用模式、我认为您不需要使用此 API。 API 在从外部区域运行代码时提供勘误权变措施。  

    当 EPI 模块中的代码地址空间为时、EPI#01数据读取可能会损坏
    已使用
    受影响的版本:1、2和3。
    说明:地址0x1000.0000处的外部代码空间被指定用于 EPI
    ECC3120模块、该模块使用 EPI 地址映射(EPIADDRMAP)中的 ECSZ 和 ECADR 域。
    但是、使用此地址空间时、数据读取可能会损坏。
    解决方法:无法从0x1000.0000地址空间执行代码。 EPI 地址
    可使用0x6000.0000和0x8000.0000处的空格代替。
    此外、当从映射到处代码地址空间的 EPI 存储器读取数据时
    0x1000.0000、将直接 EPI 存储器通过指针读取的内容替换为对的调用
    EPIWorkaroundWordRead()、EPIWorkaroundHWordRead()或
    EPIWorkaroundByteRad()函数取决于读取操作的数据大小。
    同样、当写入 EPI 代码地址空间时、直接写入替换为调用
    EPIWorkaroundWordWrite()、EPIWorkaroundHWordWrite()或
    EPIWorkaroundByteWrite()函数。 这些 API 是全新的、可在中找到
    附录2. 对于 Keil、IAR、GCC 和 Code Bench、这些函数定义为内联函数
    epi.h 文件中的函数、位于 C:\ti\TivaWare_C_Series-2.0\driverlib 中。 CCS、它
    不支持此结构,应将它们添加到\driverlib 中的新文件中
    名为 epi_workaration_ccs.s 的目录中、该文件应添加到项目中。 注释
    中包含了附录2中提到的新 DriverLib API 和 CCS 文件
    TivaWare 版本2.0.1和更高版本。

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

    感谢你的答复。 我明白我不必使用 EPIWorkaroundHWordWrite() 函数。 那么、我应该使用哪个函数进行写入?? 我无法在驱动程序库用户指南中找到它。

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

    您将使用 EPIAddressMapSet 配置外部外设的基址。 之后、您可以直接读取/写入外部外设、就像写入内部存储器/外设一样。 检查 EPI 示例和下面的代码片段。 尽管它适用于 SDRAM 接口、但其理念是相同的。

    //
    //将 EPI 存储器指针设置为 EPI 存储器空间的底座。 请注意
    // g_pui16EPISdram 被声明为易失性,因此编译器不应
    //优化内存的读出。 使用该指针、即存储器空间
    //像简单数组一样访问。
    //
    G_pu16EPISdram =(uint16_t *) 0x60000000;
    
    //
    //读取 SDRAM 中的初始数据,并将其显示在控制台上。
    //
    UARTprintf (" SDRAM 初始数据:\n");
    UARTprintf (" MEM[0x6000.0000]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_START_ADDRESS]);
    UARTprintf (" MEM[0x6000.0001]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_START_ADDRESS + 1]);
    UARTprintf (" MEM[0x603F.FFFE]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_END_ADDRESS - 1]);
    UARTprintf (" MEM[0x603F.FFFFFFFFF]= 0x%4x\n\n"、
    G_pu16EPISdram[SDRAM_END_ADDRESS]);
    
    //
    //显示我们在控制台上执行的写入操作。
    //
    UARTprintf (" SDRAM 写入:\n");
    UARTprintf (" MEM[0x6000.0000]<- 0xabcd\n");
    UARTprintf (" MEM[0x6000.0001]<- 0x1234\n");
    UARTprintf (" MEM[0x603F.FFFE]<- 0xdcba\n");
    UARTprintf (" MEM[0x603F.FFFFFFF]<- 0x4321\n\n");
    
    //
    //写入 SDRAM 卡的前2个地址和后2个地址。 自以来
    // SDRAM 卡可以按字寻址,我们将写入字。
    //
    G_pu16EPISdram[SDRAM_START_ADDRESS]= 0xabcd;
    G_pu16EPISdram[SDRAM_START_ADDRESS + 1]= 0x1234;
    G_pu16EPISdram[SDRAM_END_ADDRESS - 1]= 0xdcba;
    G_pu16EPISdram[SDRAM_END_ADDRESS]= 0x4321;
    
    //
    //读回您写入的数据,并将其显示在控制台上。
    //
    UARTprintf (" SDRAM 读取:\n");
    UARTprintf (" MEM[0x6000.0000]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_START_ADDRESS]);
    UARTprintf (" MEM[0x6000.0001]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_START_ADDRESS + 1]);
    UARTprintf (" MEM[0x603F.FFFE]= 0x%4x\n"、
    G_pu16EPISdram[SDRAM_END_ADDRESS - 1]);
    UARTprintf (" MEM[0x603F.FFFFFFFFF]= 0x%4x\n\n"、
    G_pu16EPISdram[SDRAM_END_ADDRESS]);
    
    //
    //检查数据的有效性。
    //
    if ((g_pui16EPISdram[SDRAM_START_ADDRESS]= 0xabcd)&&
    (G_pui16EPISdram[SDRAM_START_ADDRESS + 1]= 0x1234)&&
    (G_pui16EPISdram[SDRAM_END_ADDRESS - 1]= 0xdcba)&&
    (G_pui16EPISdram[SDRAM_END_ADDRESS]= 0x4321)