首先,EMIFA模块引脚图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8e7cb64bf099b074189bf03a2c8c22ba.jpeg)
上图中,ACE3,ACE2,ACE1,ACE0为片选信号,即存储空间使能信号,每个空间的大小为256MB。
CE0: 0X8000 0000 ~ 0X8FFF FFFF
CE1: 0X9000 0000 ~ 0X9FFF FFFF
CE2: 0XA000 0000 ~ 0XAFFF FFFF
CE3: 0XB000 0000 ~ 0XBFFF FFFF
大概先说这么多,看下实际编程时的寄存器设置:
EMIFA模块共需要设置12个寄存器,按顺序如下:
- EMIFA全局控制寄存器 GBLCTL
- CE0存储空间控制寄存器 CECTL0
- CE1存储空间控制寄存器 CECTL1
- CE2存储空间控制寄存器 CECTL2
- CE3存储空间控制寄存器 CECTL3
- SDRAM控制寄存器 SDCTL
- SDRAM时序寄存器 SDTIM
- SDRAM扩展寄存器 SDEXT
- CE0次级控制寄存器 CESEC0
- CE1次级控制寄存器 CESEC1
- CE2次级控制寄存器 CESEC2
- CE3次级控制寄存器 CESEC3
其中比较重要的是1,2,3
GBLCTL我设置的值为0x52078,实现以下配置:
- 使能ECLKOUT2,设置ECLKOUT2(见上图)的频率为1/2 EMIF输入时钟频率(EMIF输入时钟频率可以是 ECLKIN,1/4CPU时钟,1/6CPU时钟
- 使能ECLKOU1
- 使能CLKOUT4,,该管脚与GP1混用
- 使能CLKOUT6,该管脚与GP2混用
CECTLx寄存器组比较重要的是字段 MTYPE [7:4]
对于C64x系列DSP:
MTYPE字段如下(该字段用于设置对应存储空间的模式)
0000b | 8位宽异步接口 |
0001b | 16位宽异步接口 |
0010b | 32位宽异步接口 |
0011b | 32位宽SDRAM |
0100b | 32位宽可编程同步存储器 |
1000b | 8位宽SDRAM |
1001b | 16位宽SDRAM |
1010b | 8位宽可编程同步存储器 |
1011b | 16位宽可编程同步存储器 |
1100b | 64位宽异步接口 |
1101b | 64位宽SDRAM |
1110b | 64位宽可编程同步存储器 |
由于VPM642开发板的CE0对应的是64位SDRAM,故CECTL0设置为 0xFFFF FFD3
而由于串口使用的是8位异步模式,故将cectl1[7:4]设置为0,其他字段是用于指定地址形状以及访问该空间的控制信号,这部分比较复杂具体可见:《TMS320C6000系列的CPU与外设》
SDCTL,SDTIM以及SDEXT寄存器用于设置SDRAM空间的刷新,时序以及寻址特性,具体可见上面的参考书。
实际的设置代码如下:
1.初始化
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
2.设置:
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
![InBlock.gif](https://s1.51cto.com/images/editer/InBlock.gif)
再贴一张DM642与SDRAM的接线示意图
![](https://i-blog.csdnimg.cn/blog_migrate/d90b8762f0d1074406b52dc074ac2409.jpeg)
SDRAS:SDRAM行地址开关
SDCAS:SDRAM列地址开关
SDWE:可写
SDCKE:SDRAM 时钟使能信号
CEn :片选
转载于:https://blog.51cto.com/datou97/729790