一. EMIF介绍

CE空间:

dsp的存储空间分为片内和片外两种,片外空间分成四个部分,分别用于映射不同的片外设备,即ce空间 。

The remainder of the memory map is external space that is divided into four spaces. Each space has a chip
enable decode signal (called CE) that indicates an access to the selected space.

内存映射的其余部分是被划分为四个空间的外部空间。每个空间都有一个可芯片解码信号(称为CE),表示对所选空间的访问。

EMIF就是外部存储器接口,知识DSP上的引脚,用于外接存储器设备。CPU与外部存储器的连接口。在芯片上的位置如下图。

它的结构框图如下:

接口位的作用及配置参考: https://blog.csdn.net/app_12062011/article/details/7869589

EMIF支持的存储器:

1 异步存储器,包括ROM,FLASH,异步SRAM

2 同步突发静态存储器(SBSRAM

3 同步动态存储器(SDRAM

二. EMIF设计

EMIF的设计要针对不同的存储器,C55x设置了4个片选信号CE0~CE3,直接作为外部存储器的选通信号。

三. EMIF编程实验

最重要的是配置寄存器

对于与SDRAM连接的配置过程:

配置开始->全局控制寄存器配置EMIF时钟->CE空间寄存器配置SDRAM空间->SDCTL配置SDRAM工作模式->SDTIM配置刷新模式->配置扩展功能->配置结束

(就是通过EMIF的寄存器去控制SDRAM的接口?)

总的程序

/******************************************************************************//******************************************************************************/
/*----------------------------------------------------------------------------*/
/* MODULE NAME... EMIF                                                        */
/* FILENAME...... emif.c                                                      */
/* DATE CREATED.. Wed 2/4/2004                                                */
/* PROJECT....... write and read data between the CPU and SDRAM               */
/* COMPONENT.....                                                             */
/* PREREQUISITS..                                                             */
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*/
/* DESCRIPTION:                                                               */
/*                                                                            */
/* This is an example for EMIF of C5509                                       */
/*----------------------------------------------------------------------------*/
#include <csl.h>
#include <csl_pll.h>
#include <csl_emif.h>
#include <csl_chip.h>
#include <stdio.h>Uint16 x;
Uint32 y;
CSLBool b;
unsigned int datacount = 0;
int databuffer[1000] ={0};
int *souraddr,*deminaddr;
/*锁相环的设置*/
PLL_Config  myConfig      = {0,    //IAI: the PLL locks using the same process that was underway //before the idle mode was entered1,    //IOB: If the PLL indicates a break in the phase lock, //it switches to its bypass mode and restarts the PLL phase-locking //sequence20,    //PLL multiply value; multiply 24 times1             //Divide by 2 PLL divide value; it can be either PLL divide value //(when PLL is enabled), or Bypass-mode divide value//(PLL in bypass mode, if PLL multiply value is set to 1)
};
/*SDRAM的EMIF设置*/
EMIF_Config emiffig = {0x221,  //EGCR  : the MEMFREQ = 00,the clock for the memory is equal to cpu frequence//          the WPE = 0 ,forbiden the writing posting when we debug the EMIF//        the MEMCEN = 1,the memory clock is reflected on the CLKMEM pin//        the NOHOLD = 1,HOLD requests are not recognized by the EMIF 0xFFFF,  //EMI_RST: any write to this register resets the EMIF state machine0x3FFF,  //CE0_1:  CE0 space control register 1//        MTYPE = 011,Synchronous DRAM(SDRAM),16-bit data bus width0xFFFF,   //CE0_2:  CE0 space control register 20x00FF,   //CE0_3:  CE0 space control register 3//        TIMEOUT = 0xFF;0x7FFF, //CE1_1:  CE0 space control register 10xFFFF,   //CE1_2:  CE0 space control register 20x00FF,   //CE1_3:  CE0 space control register 30x7FFF,   //CE2_1:  CE0 space control register 10xFFFF,   //CE2_2:  CE0 space control register 20x00FF,   //CE2_3:  CE0 space control register 30x7FFF,   //CE3_1:  CE0 space control register 10xFFFF,   //CE3_2:  CE0 space control register 20x00FF,   //CE3_3:  CE0 space control register 30x2911,   //SDC1:   SDRAM control register 1//          TRC = 8 //        SDSIZE = 0;SDWID = 0//        RFEN = 1//        TRCD = 2//        TRP  = 20x0410, //SDPER : SDRAM period register//         7ns *40960x07FF,    //SDINIT: SDRAM initialization register//        any write to this register to init the all CE spaces,//        do it after hardware reset or power up the C55x device0x0131  //SDC2:   SDRAM control register 2//        SDACC = 0;//        TMRD = 01;//        TRAS = 0101;//        TACTV2ACTV = 0001;                                };main()
{unsigned int error=0;/*初始化CSL库*/  CSL_init();/*EMIF为全EMIF接口*/CHIP_RSET(XBSR,0x0a01);/*设置系统的运行速度为120MHz*/PLL_config(&myConfig);/*初始化DSP的外部SDRAM*/EMIF_config(&emiffig);/*向SDRAM中写入数据*/souraddr =  (int *)0x40000;deminaddr = (int *)0x41000;while(souraddr<deminaddr){*souraddr++ = datacount; //address : 40000-41000  write in : 0-1000datacount++ ;}/*读出SDRAM中的数据*/souraddr =  (int *)0x40000;datacount = 0;while(souraddr<deminaddr){databuffer[datacount++] = *souraddr++;printf("%d\n",databuffer[datacount-1]);if(databuffer[datacount-1]!=(datacount-1))error++;//printf("%d",datacount-1);}if(error==0){printf("SDRAM test completed! No Error!");}while(1);
}
/******************************************************************************\
* End of pll2.c
\******************************************************************************/

四.参考博客

https://blog.csdn.net/app_12062011/article/details/7869589

DSP学习笔记----EMIF(外部存储器接口)相关推荐

  1. PhalAPI学习笔记 ——— 第二章接口服务请求

    PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...

  2. DSP学习笔记之EPWM

    DSP学习笔记之EWPM学习 \qquad 学习PWM模块的知识,最少需要掌握频率可调.占空比可调.互补死区可调.多个PWM相位差可调等.内容较多,主要是参照英文手册中几个模块的介绍,内容很多,最基本 ...

  3. 学习笔记二:接口与继承(内部类)

    学习笔记参考来源 java学习路线-推荐链接:java-接口与继承-内部类 学习笔记难免出错 望多指正!!! 什么是内部类呢? 什么是内部类?定义很简单 内部类就是定义在另一个类中的类 内部类的分类 ...

  4. DSP学习笔记之系统时钟、定时器、GPIO篇

    \qquad写在前面,不管是C51.MSP430.32也好,DSP也好,总要有一个掌握的比较熟练,不能每次都复制粘贴别人的代码然后修修补补吧.不要再做Ctrl +C.Ctrl+V工程师.主要参考来自于 ...

  5. 31 天重构学习笔记9. 提取接口

    摘要:由于最近在做重构的项目,所以对重构又重新进行了一遍学习和整理,对31天重构最早接触是在2009年10月份,由于当时没有订阅Sean Chambers的blog,所以是在国外的社区上闲逛的时候链接 ...

  6. CSR8675的DSP学习笔记——离线调试与仿真

    为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...

  7. CSR8675的DSP学习笔记——a2dp_sink工程的matlab仿真

    为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...

  8. LTE学习笔记三:接口协议

    上一笔记说明了LTE网络的网元组成,网元之间的联系是通过标准化的接口.接下来学习LTE终端和网络的空中接口Uu.基站之间的X2接口.基站与核心网之间的S1接口,以及LTE接口协议栈和以往无线制式相比的 ...

  9. 《如何了解软件的设计》学习笔记0——模型-接口-实现

    如何理解软件的设计?一套流程:模型-接口-实现. 模型 找类与类之间的关系,绘制整体图,这个步骤就是找模型.有个整体地图. 接口 类中的各方法就是接口. 接口反映模型. 实现 类中方法的函数体就是实现 ...

最新文章

  1. bzoj 1691: [Usaco2007 Dec]挑剔的美食家
  2. 网页缩放zoom用法
  3. goland 调试运行路径
  4. java堆算法,Java 基本功04-JVM-Java堆详解和GC算法
  5. 后端需要掌握的技术_何小伟:软件测试需要掌握的技术?
  6. 新建项目虚拟环境及pycharm配置
  7. Byte[]、Image、Bitmap 之间的相互转换
  8. 手把手教你破速达5000PRO v2.33加密狗
  9. linux安装smmo压缩包软件,Linux centos 安装rarlinux压缩软件 使有rarlinux
  10. 三国古城和108将地图已恢复
  11. 如何同时对多个 Word 文档批量插入页眉页脚、修改页眉页脚以及添加页码
  12. 柔性电子综述2013 ---电子皮肤 The Evolution of Electronic Skin (E-Skin)
  13. 小小的天地 大大的梦想
  14. [python爬虫之路day20]:CrawSpider爬取微信小程序社区技术帖
  15. 【技术科普】HLS视频流内m3u8文件和TS切片是什么关系?
  16. vue 项目使用 Clipboard-复制文本或图片到剪贴板
  17. 收录拒绝指定ip请求黑名单lua脚本、拒绝ip频次请求的lua脚本
  18. 卧式铣床升降台主传动系统设计
  19. 隐藏控制台程序的dos窗口
  20. Linux文件权限查看与修改

热门文章

  1. React.lazy与Suspence实现延迟加载
  2. 含文档+PPT+源码等]精品基于java开发的航空订票系统SSM[包运行成功]计算机毕设Java项目源码
  3. oracle dg 实时应用,查看DG是否是实时应用
  4. 百度网盘 突破下载限速 Aria2
  5. 话说员工的跳槽与忠诚度
  6. 牛牛的等差数列【线段树】
  7. css五大布局方式详解
  8. 生老病死,一切都有定数
  9. 米家驱蚊器测评:99元全家驱蚊整个夏天
  10. 微信小程序开发一个小型商城(一、准备工作)