<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      痞子衡嵌入式:同一廠商不同系列Flash型號(hào)下Dummy Cycle設(shè)置方法可能有差異 (以IS25LP064A為例)


        大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是同一廠商不同系列Flash型號(hào)下Dummy Cycle設(shè)置方法的差異

        上一篇文章 《在i.MXRT啟動(dòng)頭FDCB里調(diào)整Flash工作頻率也需同步設(shè)Dummy Cycle》, 痞子衡是以i.MXRT1170-EVK上板載Flash型號(hào)IS25WP128為例來介紹Dummy Cycle設(shè)置的。最近痞子衡在支持一個(gè)i.MXRT1020客戶的問題,需要用到i.MXRT1020-EVK,這個(gè)板載Flash是IS25LP064A,跟IS25WP128一樣是來自同一Flash廠商ISSI的QSPI NOR產(chǎn)品,痞子衡想當(dāng)然地認(rèn)為之前的經(jīng)驗(yàn)可以直接用在這顆Flash上,于是把FDCB原封不動(dòng)地拷貝過來直接使用,但是發(fā)現(xiàn)i.MXRT1020竟然啟動(dòng)不了,這是怎么回事?

      一、同一廠商不同系列Flash型號(hào)Dummy Cycle設(shè)置差異

        ISSI(芯成半導(dǎo)體)是一個(gè)比較老牌的存儲(chǔ)器廠商,規(guī)模上不算頂級(jí),但旗下Flash產(chǎn)品線眾多,品類很齊全。其中串行NOR產(chǎn)品涵蓋QuadSPI NOR、Octal Flash、Twin Quad NOR、HyperFlash等。

      ISSI Flash種類: https://www.issi.com/US/product-flash.shtml

        恩智浦官方EVK板上選用的是IS25xP系列,屬于最常用的QuadSPI NOR大類。這個(gè)系列主要分兩大類:1.8V供電的IS25WP系列、3.3V供電的IS25LP系列。

        前面我們對(duì)IS25WP系列Flash的Dummy Cycle設(shè)置很了解了,那么IS25LP系列Flash是不是一樣的設(shè)計(jì)呢?我們查看IS25LP064A數(shù)據(jù)手冊(cè)來確認(rèn)一下。

        我們找到如下Read Dummy Cycle與最大工作頻率的對(duì)應(yīng)表,從表里可以看到當(dāng)IS25LP064A工作在Fast Read Quad I/O模式時(shí),默認(rèn)的6個(gè)Dummy Cycle適用的最大工作頻率是104MHz(這點(diǎn)上與IS25WP系列是一致的),不過與IS25WP系列不同的是IS25LP064A上Dummy Cycle僅有四檔(2bit設(shè)置,對(duì)應(yīng)4/6/8/10四種值),而IS25WP系列Dummy Cycle有十五檔(4bit設(shè)置,對(duì)應(yīng)1-15取值),所以Dummy Cycle設(shè)計(jì)在IS25LP064A上其實(shí)是精簡(jiǎn)版

      二、如何更改Flash里的Dummy Cycle?

        意識(shí)到IS25LP與IS25WP在Dummy Cycle設(shè)計(jì)上的差異,改起來就容易了。我們繼續(xù)看Flash數(shù)據(jù)手冊(cè),IS25LP064A內(nèi)部有個(gè)8bit的Read Register,其bit4-bit3是Dummy Cycles設(shè)置(精簡(jiǎn)設(shè)計(jì)一),寄存器類型里標(biāo)明僅易失性一種屬性(精簡(jiǎn)設(shè)計(jì)二)

        在IS25LP064A的指令集表里,可以看到專門寫Read Register的指令,即SRP指令,注意指令值就是唯一的0xC0(精簡(jiǎn)設(shè)計(jì)三)

        分析到這里,額外的小工程修改Dummy Cycle是不可能了,只能老老實(shí)實(shí)在i.MXRT每次啟動(dòng)時(shí)直接借助FDCB啟動(dòng)頭里的設(shè)置用SRP指令更改Flash的Dummy Cycle,即如下所示:

      // 設(shè)置Dummy Cycle數(shù)
      #define FLASH_DUMMY_CYCLES      8
      #define FLASH_DUMMY_VALUE       0x2
      // 寫Read Register時(shí)序在LUT中的index(可自定義位置,但不要占BootROM預(yù)設(shè)的幾個(gè)時(shí)序位置)
      #define CMD_LUT_SEQ_IDX_SET_READ_PARAM 7
      // BootROM中預(yù)設(shè)的LUT命令時(shí)序的index
      #define CMD_LUT_SEQ_IDX_READ           0
      #define CMD_LUT_SEQ_IDX_READSTATUS     1
      #define CMD_LUT_SEQ_IDX_WRITEENABLE    3
      
      const flexspi_nor_config_t qspiflash_config = {
          .memConfig =
              {
                  .tag              = FLEXSPI_CFG_BLK_TAG,
                  .version          = FLEXSPI_CFG_BLK_VERSION,
                  .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackFromDqsPad,
                  .csHoldTime       = 3u,
                  .csSetupTime      = 3u,
                  // Enable Safe configuration
                  .controllerMiscOption = 0x10,
                  .deviceType           = kFlexSpiDeviceType_SerialNOR,
                  .sflashPadType        = kSerialFlash_4Pads,
                  .serialClkFreq        = kFlexSpiSerialClk_133MHz,
                  .sflashA1Size         = 8u * 1024u * 1024u,
                  // 使能Flash寄存器配置操作
                  .configCmdEnable = 1u,
                  .configModeType[0] = kDeviceConfigCmdType_Generic,
                  // 指示Flash寄存器配置時(shí)序在LUT中index
                  .configCmdSeqs[0] = 
                      {
                          .seqNum = 1,
                          .seqId = CMD_LUT_SEQ_IDX_SET_READ_PARAM,
                          .reserved = 0,
                      },
                  // 設(shè)定Flash寄存器配置值(這里就是寫入Read Register的值)
                  // Note1: 這里寫入Read Register的值在IS25WP系列和IS25LP系列有區(qū)別
                  .configCmdArgs[0] = FLASH_DUMMY_VALUE << 3,
                  .lookupTable =
                      {
                          // Fast Read Quad I/O
                          [4*CMD_LUT_SEQ_IDX_READ]               = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
                          [4*CMD_LUT_SEQ_IDX_READ + 1]           = FLEXSPI_LUT_SEQ(MODE8_SDR, FLEXSPI_4PAD, 0x00, DUMMY_SDR, FLEXSPI_4PAD, FLASH_DUMMY_CYCLES-2),
                          [4*CMD_LUT_SEQ_IDX_READ + 2]           = FLEXSPI_LUT_SEQ(READ_SDR,  FLEXSPI_4PAD, 0x04, STOP,      FLEXSPI_1PAD, 0x00),
                         
                          // READ STATUS REGISTER
                          [4*CMD_LUT_SEQ_IDX_READSTATUS]         = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0x05, READ_SDR,  FLEXSPI_1PAD, 0x01),
                          [4*CMD_LUT_SEQ_IDX_READSTATUS + 1]     = FLEXSPI_LUT_SEQ(STOP,      FLEXSPI_1PAD, 0x00, 0, 0, 0),
                         
                          // WRTIE ENABLE
                          [4*CMD_LUT_SEQ_IDX_WRITEENABLE]        = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0x06, STOP,      FLEXSPI_1PAD, 0x00),
      
                          // Flash寄存器配置時(shí)序(這個(gè)時(shí)序需要上面READ STATUS, WRITE ENABLE的配合)
                          // Note2: 這里寫入的指令在IS25WP系列和IS25LP系列有區(qū)別
                          [4*CMD_LUT_SEQ_IDX_SET_READ_PARAM]     = FLEXSPI_LUT_SEQ(CMD_SDR,   FLEXSPI_1PAD, 0xC0, WRITE_SDR, FLEXSPI_1PAD, 0x01),
                          [4*CMD_LUT_SEQ_IDX_SET_READ_PARAM + 1] = FLEXSPI_LUT_SEQ(STOP,      FLEXSPI_1PAD, 0x00, 0, 0, 0),
                      },
              },
          .pageSize           = 256u,
          .sectorSize         = 4u * 1024u,
          .blockSize          = 64u * 1024u,
          .isUniformBlockSize = false,
      };
      

        至此,同一廠商不同系列Flash型號(hào)下Dummy Cycle設(shè)置方法的差異痞子衡便介紹完畢了,掌聲在哪里~~~

      歡迎訂閱

      文章會(huì)同時(shí)發(fā)布到我的 博客園主頁CSDN主頁知乎主頁微信公眾號(hào) 平臺(tái)上。

      微信搜索"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機(jī)上第一時(shí)間看了哦。

      posted @ 2021-04-17 23:22  痞子衡  閱讀(1538)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲中文字幕无码av永久| 性欧美vr高清极品| 国内精品人妻一区二区三区| 亚洲一区二区约美女探花| 日本一区二区三本视频在线观看| 92成人午夜福利一区二区| 91亚洲国产成人精品福利| 日韩中文字幕人妻一区| 久久精品国产www456c0m| 欧美丰满熟妇乱XXXXX网站| 天堂亚洲免费视频| 中文字幕一卡二卡三卡| 亚洲精品韩国一区二区| 麻豆精品一区二区综合av| 日本一二三区视频在线| 国产高清av首播原创麻豆| 中文字幕日韩精品无码内射| 午夜福利国产区在线观看| 国产精品中文字幕综合| 99国内精品久久久久久久| 国产成人精品区一区二区| 欧美嫩交一区二区三区| 康平县| 精品熟女少妇免费久久| 三级网站视频在在线播放| 丰满爆乳一区二区三区| 国产精品高清视亚洲精品| 国产亚洲精品成人av一区| 东京热人妻无码一区二区av| 色综合久久蜜芽国产精品| 国产av一区二区三区久久| 欧美熟妇乱子伦XX视频| 亚洲欧洲精品一区二区| 日韩精品一区二区蜜臀av| 2020国产欧洲精品网站| 欧美性猛交xxxx乱大交丰满| 亚洲婷婷综合色高清在线| 99九九视频高清在线| 久久精品国产亚洲精品色婷婷| 国产精品亚洲а∨无码播放| 亚洲av激情久久精品人|