驱动K4T51163QI-HC(L)E7

news/2024/11/23 8:01:07/

CPU :S3C2416 --友善之臂开发板

 

tRCD  --- Active 命令到发出 Read/Write 命令时间间隔
tRP     ---Precharge(预充电) 命令到发送 Active 命令时间间隔
tCAS  ---Read/Write 命令发出后经过 5tCK=12.5ns 数据才有效
tRAS  ---Active 命令到 Precharge 命令时间间隔

tRC两个Active之间的间隔

tREFI ---平均刷新周期间隔
tRFC  ----指令刷新时间

 芯片时序图:

;设置DDR0 13位行地址, 10位列地址, DDR2接口, 16位总线

Active命令,打开行及bank地址
; Read命令,在Active后,打开列地址读
; Write命令,在Active后,打开列地址写

    LDR R0, =DRAM_BASE
    LDR R1, =(2<<17)+(2<<14)+(2<<11)+(2<<8)+(1<<6)+(1<<4)+(1<<1)+(1<<0)
    STR R1, [R0, #BANKCFG_OFS]

 ;// DQS delay 3,Write buffer,Auto pre-charge,bank address 在高位                 
    LDR R1, =(3<<28)+(1<<26)+(1<<8)+(0<<7)+ \
            (1<<6)+(0<<5)+(1<<4)
    STR R1, [R0, #BANKCON1_OFS]     


; s3c2416 ddr2寄存器的clk设置值是相对HCLK的
; RAS [23:20] Row active time 45ns HCLK=133M DDR2=266M 6clock
; Active命令到Precharge命令的最小时间45ns
; ARFC [19:16] Row cycle time tRFC=105ns 14clock
; 指令刷新时间105ns
; CAS Latency [5:4] CAS latency control 12.5ns 2clock
; Read/Write命令发出后经过5tCK=12.5ns数据才有效
; tRCD [3:2] RAS to CAS delay 12.5ns 2clock
; Active命令需经5tCK=12.5ns后才发出Read/Write命令
; tRP [1:0] Row pre-charge time 12.5ns 2clock
; Precharge命令到发送Active命令5tCK=12.5ns
; 故两个Active命令所需的最小时间 tRC=tRAS+tRP=57.5ns

    LDR R1, =(5<<20)+(13<<16)+(3<<4)+(1<<2)+(1<<0)
    STR R1, [R0, #BANKCON2_OFS] 

 

;// issue an EMRS(extern mode register) command to EMR(2)
    LDR R1, [R0, #BANKCON3_OFS]
    LDR R2, =0xFFFF0000
    BIC R1, R1, R2
    ORR R1, R1, #(2<<30)
    STR R1, [R0, #BANKCON3_OFS]

    LDR R1, [R0, #BANKCON1_OFS]
    ORR R1, R1, #0x03                
    STR R1, [R0, #BANKCON1_OFS]
        
;// issue an EMRS(extern mode register) command to EMR(3)
    LDR R1, [R0, #BANKCON3_OFS]
    LDR R2, =0xFFFF0000
    BIC R1, R1, R2
    ORR R1, R1, #(3<<30)
    STR R1, [R0, #BANKCON3_OFS]

    LDR R1, [R0, #BANKCON1_OFS]
    ORR R1, R1, #0x03                
    STR R1, [R0, #BANKCON1_OFS]

;// issue an EMRS to enable DLL and RDQS, nDQS, ODT disable
    LDR R1, =0xFFFF0000
    LDR R2, [R0, #BANKCON3_OFS]
    BIC R2, R2, R1
    LDR R1, =(0x1<<30)+(0<<27)+(1<<26)+ \
             (0<<23)+(0<<16)                
    ORR R1, R1, R2
    STR R1, [R0, #BANKCON3_OFS]
    LDR R1, [R0, #BANKCON1_OFS]
    ORR R1, R1, #0x03                
    STR R1, [R0, #BANKCON1_OFS]
;// issue a mode register set command for DLL reset 
    LDR R1, =0x0000FFFF
    LDR R2, [R0, #BANKCON3_OFS]
    BIC R2, R2, R1
    LDR R1, =(1<<8)+(0<<7)+(3<<4)                        
    ORR R1, R1, R2
    STR R1, [R0, #BANKCON3_OFS]
    LDR R1, [R0, #BANKCON1_OFS]
    BIC R1, R1, #0x03
    ORR R1, R1, #0x02                
    STR R1, [R0, #BANKCON1_OFS]
                
;// Issue a PALL(pre-charge all) command 
    LDR R1, [R0, #BANKCON1_OFS]
    BIC R1, R1, #0x03
    ORR R1, R1, #0x01
    STR R1, [R0, #BANKCON1_OFS]
                
;// Issue 2 or more auto-refresh commands
    LDR R1, =0x20
    STR R1, [R0, #REFRESH_OFS]

 

;// Issue a MRS command with LOW to A8 to initialize device operation
    LDR R1, =0x0000FFFF
    LDR R2, [R0, #BANKCON3_OFS]
    BIC R2, R2, R1
    LDR R1, =(0<<8)+(0<<7)+(3<<4)                    
    ORR R1, R1, R2
    STR R1, [R0, #BANKCON3_OFS]
    LDR R1, [R0, #BANKCON1_OFS]
    BIC R1, R1, #0x03
    ORR R1, R1, #0x02                
    STR R1, [R0, #BANKCON1_OFS]

;// Wait 200 clock, execute OCD Calibration
    LDR R1, =200
0    SUBS    R1, R1, #1
    BNE %B0
;// Issue a EMRS1 command to over OCD Mode Calibration
    LDR R1, =0xFFFF0000
    LDR R2, [R0, #BANKCON3_OFS]
    BIC R2, R2, R1
    LDR R1, =(0x1<<30)+(0<<27)+(1<<26)+ \
            (0<<23)+(0<<19)+(0<<22)+(0<<18)+ \
            (0x0<<17)+(0<<16)                
    ORR R1, R1, R2
    STR R1, [R0, #BANKCON3_OFS]
    LDR R1, [R0, #BANKCON1_OFS]
    ORR R1, R1, #0x03                
    STR R1, [R0, #BANKCON1_OFS]

;// Refresh period is 7.8us, HCLK=133M, REFCYC=1037
    LDR R1, =1037
    STR R1, [R0, #REFRESH_OFS]

 ;// issue a Normal mode
    LDR R1, [R0, #BANKCON1_OFS]
    BIC R1, R1, #0x03
    STR R1, [R0, #BANKCON1_OFS]

 

----------------------------------------------------------------------------------------------------------------------------------------------

对于不同的 DDR2,主要是配置第一步 BANKCFG & BANKCON1, 2,其它初始化流程
可以通用。 BANKCFG 主要是用来配置外扩 DDR2 的行地址线,列地址线以及接口位宽等。
BANKCON1 用来配置 DDR2 控制器一些控制属性,如自动预充,功耗控制,写缓存等。
BANKCON2 用来配置 DDR2 的时序参数,如果时序参数设置得过快,将无法初始化相应
的 DDR2,参数设置得过慢,将造成 DDR2 读写性能低。因此,需要对照相应的 DDR2 芯
片数据手册时序参数来作设置,
 


http://www.ppmy.cn/news/180963.html

相关文章

1000元性价比高主机

主板&#xff1a;华硕fm2小板 cpu&#xff1a;x4 760k 散热&#xff1a;大水牛T60 6铜管 内存&#xff1a;金邦ddr3 1600mhz 4GB *2 显卡&#xff1a;七彩虹网驰gtx660 3g 存储&#xff1a;金士顿A440 240g 电源&#xff1a;长城电源神威额定400w 机箱&#xff1a;纸盒&#xf…

买的3元一个月的云服务器怎么样?

云服务器&#xff0c;我想大家都不陌生。 最近无聊逛淘宝&#xff0c;看到服务淘宝上有卖服务器&#xff0c;感兴趣就看了看&#xff0c;看到还有38元一年的云服务器&#xff0c;平均一个月才3.166666666............元&#xff0c;平均一天才0.10555555..........元&#xff…

腾讯云服务器16核32G20M带宽轻量应用性能评测

腾讯云16核32G20M带宽轻量应用服务器一年2000块&#xff0c;系统盘为100GB SSD盘&#xff0c;10M公网带宽&#xff0c;每月1500GB月流量&#xff0c;新手站长网来详细说下腾讯云16核32G20M配置轻量服务器详细配置及条件&#xff1a; 腾讯云轻量应用服务器16核32G20M 详细配置如…

【优惠云服务器】高性价比云服务器汇总

高性价比服务器 这是我自己搜集的最近比较实惠的活动,目前国内比较好用的云服务器厂商有三家&#xff0c;阿里云&#xff0c;腾讯云&#xff0c;华为云。但是我平时关注比较多的只有腾讯和阿里&#xff0c;所以下面罗列的是腾讯和阿里比较优惠的服务器。 提醒&#xff1a;如果…

桌面云简介,以及性价比桌面云推荐

云桌面从2007年引入到国内经过十几年的发展&#xff0c;从开始的引入期到实践期再到今天已经逐渐的成熟&#xff0c;开始步入了成熟期的阶段&#xff0c;那么有人就会问了你为何说现在云桌面已经步入成熟期了呢&#xff1f;这我们可以从以下几点可以看出云桌面已经步入成熟期的…

炫云、瑞云、渲染100哪个好用?四大平台对比测评!

现在网上有很多个云渲染平台&#xff0c;要说哪个平台好用&#xff0c;还是得实际去提图测试使用了才知道&#xff0c;很多平台会给出免费渲染或是低价模式的噱头&#xff0c;最后一用几十块渲一张图也很难受 网上大部分的云渲染平台我都用过&#xff0c;我觉得比较好用的就是…

阿里云六代、七代云服务器、轻量应用服务器、GPU云服务器最新活动报价表参考

本文汇总了阿里云服务器当下最新的实时活动报价表&#xff0c;包含六代云服务器活动报价、官方云小站平台最新云服务器报价、第七代云服务器ECS活动报价、轻量应用服务器最新活动报价和GPU云服务器最新报价&#xff0c;以供大家参考选择。 阿里云服务器热门配置报价 2022年阿…

业内人士来说一下炫云渲染和渲染100云渲染使用真实感受吧

云渲染是个比较大的行业&#xff0c;分效果图、动画、影视几大块&#xff0c;涉及的软件众多如3dmax、maya、c4d等&#xff0c;提供云渲染的平台有炫云&#xff0c;瑞云、渲染100等的一些公司&#xff0c;下面就效果图渲染&#xff08;3dmaxvray&#xff09;具体下面说一说我的…