久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

SDRam的初始化

作者:未知   來源:布冬冬 的空間   點擊數:  更新時間:2014年08月16日   【字體:

過年來的這一個月,都是在整著啟動文件啊,SDRam初始化啊,Nor Flash初始化啊,還有程序在SDRAM中運行等一干事情。

 

今天就記錄一下,我初始化SDRam過程中所學到的東西以及一些體會。本人還屬于菜鳥,有什么講得不好的地方,還希望指正指正哈。也是為了以后不會溫習之用。

 

雖然手里有一些樣例程序,但是真正理解起來還是很費勁。

開發板:LPC1788,SDRAM:HY57V561620,據說已經停產了~~~~ SDRAM大概都步驟都相同,只是有些芯片具體的參數需要查閱資料才能填寫。

 

初始化SDRAM的基本步驟:

1. 初始化引腳,PCONP,EMCDLYCTL,EMCControl寄存器,以及一些與芯片相關的參數,還有EMCDynamicConfig0.

2. SDRAM上電后,等待100us或是200us,期間可以發送NOP命令。

3. 對所有banks預充電,PALL。

4. 執行8次預充電:給EMCDynamicRefresh賦值,然后延時一段時間,令其有8次self-refresh的時間。(自己的理解)

5. 延時完畢后,對EMCDynamicRefresh寄存器賦值。對刷新寄存器的賦值如下:



6. 設置模式寄存器Mode Register。以虛讀的方式對其進行賦值。如下:

 
  *(INT32U*) EMCDynamicControl = 0x00000083;
 
  dummy = *((volatile INT32U*)( DynamicMemoryBaseAddr|(0x23 << 13)));

至今還沒完全明白為什么0x23<<13?

7. 最后設置Normal 并延時一段時間。

這樣就差不多大功告成了。

在驗證SDRAM是否設置正確的過程遇到一些麻煩。

1. 引腳沒有全部初始化完全。導致對SDRAM賦值的過程中,有一部分值不能被賦值上。

2. *(INT16U*)Addr++,這個過程中,如果Addr的初始值是0xA0000000的話,Addr就變成0xA0000002.

  同理,*(INT32U*)Addr++,這個過程中,如果Addr的初始值是0xA0000000的話,Addr就變成0xA0000004.

3. 先是對SDRAM賦值0,然后再對其賦值。

for(i = 0; i < (SDRam_Size/4); i++)
  {
     *SDRamAdd8++ = 0x11;
     *SDRamAdd8++ = 0x22;
     *SDRamAdd8++ = 0x33;
     *SDRamAdd8++ = 0x44;
  }

 for(i = 0; i < (SDRam_Size/4); i++)
  {
    SDRamAdd32--; 
    if( *(SDRamAdd32) != 0x44332211)
      {
         str = "Initialization of 8bits SDRam is wrong!";
         putchars(str);
      }
  }

在對其進行16bits的賦值再次驗證一下就可以了。

關閉窗口

相關文章

主站蜘蛛池模板: 久久99精品久久久水蜜桃 | 欧美日韩国产一区二区三区 | 国产精品久久久久永久免费观看 | 国产视频久 | 成人免费观看视频 | 亚洲精品字幕 | 男女免费观看在线爽爽爽视频 | 国产成人在线视频播放 | 午夜精品在线观看 | 色播99| 欧美性生活一区二区三区 | 久久视频精品 | 成人午夜视频在线观看 | 久草视频在线播放 | 日韩久久精品 | 黄色国产| 日韩成人免费视频 | 国产精品日产欧美久久久久 | 成人在线中文字幕 | 欧美精品一区在线 | 中文字幕一区二区三区不卡 | 综合第一页| 伊人网站视频 | 亚洲欧美在线观看 | 成人黄色电影在线播放 | 久久精品亚洲 | 色免费在线视频 | 91精品国产综合久久国产大片 | 欧美综合一区二区 | 日韩看片 | www.99精品| 亚洲视频在线观看 | 精品免费在线 | 国产特级毛片 | av网站免费在线观看 | 不卡一区二区三区四区 | 欧美综合久久 | 日本免费网 | 国产av毛片 | 国产精品一区二区久久久久 | 美女一区二区在线观看 |