牛卧堂MCU技术交流

标题: EBI_Open();函数的执行速度,请问有明确数据吗? [打印本页]

作者: 匿名    时间: 2025-1-21 11:22
标题: EBI_Open();函数的执行速度,请问有明确数据吗?
#define EBI_TIMING_FASTEST      0x0UL /*!< EBI timing is the fastest \hideinitializer */
#define EBI_TIMING_VERYFAST     0x1UL /*!< EBI timing is very fast \hideinitializer */
#define EBI_TIMING_FAST         0x2UL /*!< EBI timing is fast \hideinitializer */
#define EBI_TIMING_NORMAL       0x3UL /*!< EBI timing is normal  \hideinitializer */
#define EBI_TIMING_SLOW         0x4UL /*!< EBI timing is slow \hideinitializer */
#define EBI_TIMING_VERYSLOW     0x5UL /*!< EBI timing is very slow \hideinitializer */
#define EBI_TIMING_SLOWEST      0x6UL /*!< EBI timing is the slowest \hideinitializer */

EBI_Open(EBI_BANK0, EBI_BUSWIDTH_16BIT, EBI_TIMING_NORMAL, 0, EBI_CS_ACTIVE_LOW);

另外,这个还需要单独设置吗?
#define EBI_MCLKDIV_1           0x0UL /*!< EBI output clock(MCLK) is HCLK/1 \hideinitializer */
#define EBI_MCLKDIV_2           0x1UL /*!< EBI output clock(MCLK) is HCLK/2 \hideinitializer */
#define EBI_MCLKDIV_4           0x2UL /*!< EBI output clock(MCLK) is HCLK/4 \hideinitializer */
#define EBI_MCLKDIV_8           0x3UL /*!< EBI output clock(MCLK) is HCLK/8 \hideinitializer */
#define EBI_MCLKDIV_16          0x4UL /*!< EBI output clock(MCLK) is HCLK/16 \hideinitializer */
#define EBI_MCLKDIV_32          0x5UL /*!< EBI output clock(MCLK) is HCLK/32 \hideinitializer */
#define EBI_MCLKDIV_64          0x6UL /*!< EBI output clock(MCLK) is HCLK/64 \hideinitializer */
#define EBI_MCLKDIV_128         0x7UL /*!< EBI output clock(MCLK) is HCLK/128 \hideinitializer */







作者: chrishu    时间: 2025-1-22 11:42
EBI_Open函数里的宏定义时序快慢只是软件里用的而已。
实际快慢看EBI_Open函数里的每个case下设置的MCLK分频系数和时序控制的设置。MCLKDIV的分频系数在open函数里已经设置过了。
switch(u32TimingClass)
    {
    case EBI_TIMING_FASTEST:
        *pu32EBICTL = (*pu32EBICTL & ~(EBI_CTL_MCLKDIV_Msk | EBI_CTL_TALE_Msk)) |
                      (EBI_MCLKDIV_1 << EBI_CTL_MCLKDIV_Pos) | //1分频
                      (u32CSActiveLevel << EBI_CTL_CSPOLINV_Pos) | EBI_CTL_EN_Msk;
        //时序控制
        *pu32EBITCTL = 0x0U;
        break;

    case EBI_TIMING_VERYFAST:/
        *pu32EBICTL = (*pu32EBICTL & ~(EBI_CTL_MCLKDIV_Msk | EBI_CTL_TALE_Msk)) |
                      (EBI_MCLKDIV_1 << EBI_CTL_MCLKDIV_Pos) | //1分频
                      (u32CSActiveLevel << EBI_CTL_CSPOLINV_Pos) | EBI_CTL_EN_Msk |
                      (0x3U << EBI_CTL_TALE_Pos) ;//地址锁存时间 = 4MCLK
        //时序控制
        *pu32EBITCTL = 0x03003318U;
        break;

    ......
    }







欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2