DSP学习笔记----EMIF(外部存储器接口)
一. 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(外部存储器接口)相关推荐
- PhalAPI学习笔记 ——— 第二章接口服务请求
PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...
- DSP学习笔记之EPWM
DSP学习笔记之EWPM学习 \qquad 学习PWM模块的知识,最少需要掌握频率可调.占空比可调.互补死区可调.多个PWM相位差可调等.内容较多,主要是参照英文手册中几个模块的介绍,内容很多,最基本 ...
- 学习笔记二:接口与继承(内部类)
学习笔记参考来源 java学习路线-推荐链接:java-接口与继承-内部类 学习笔记难免出错 望多指正!!! 什么是内部类呢? 什么是内部类?定义很简单 内部类就是定义在另一个类中的类 内部类的分类 ...
- DSP学习笔记之系统时钟、定时器、GPIO篇
\qquad写在前面,不管是C51.MSP430.32也好,DSP也好,总要有一个掌握的比较熟练,不能每次都复制粘贴别人的代码然后修修补补吧.不要再做Ctrl +C.Ctrl+V工程师.主要参考来自于 ...
- 31 天重构学习笔记9. 提取接口
摘要:由于最近在做重构的项目,所以对重构又重新进行了一遍学习和整理,对31天重构最早接触是在2009年10月份,由于当时没有订阅Sean Chambers的blog,所以是在国外的社区上闲逛的时候链接 ...
- CSR8675的DSP学习笔记——离线调试与仿真
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- CSR8675的DSP学习笔记——a2dp_sink工程的matlab仿真
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- LTE学习笔记三:接口协议
上一笔记说明了LTE网络的网元组成,网元之间的联系是通过标准化的接口.接下来学习LTE终端和网络的空中接口Uu.基站之间的X2接口.基站与核心网之间的S1接口,以及LTE接口协议栈和以往无线制式相比的 ...
- 《如何了解软件的设计》学习笔记0——模型-接口-实现
如何理解软件的设计?一套流程:模型-接口-实现. 模型 找类与类之间的关系,绘制整体图,这个步骤就是找模型.有个整体地图. 接口 类中的各方法就是接口. 接口反映模型. 实现 类中方法的函数体就是实现 ...
最新文章
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家
- 网页缩放zoom用法
- goland 调试运行路径
- java堆算法,Java 基本功04-JVM-Java堆详解和GC算法
- 后端需要掌握的技术_何小伟:软件测试需要掌握的技术?
- 新建项目虚拟环境及pycharm配置
- Byte[]、Image、Bitmap 之间的相互转换
- 手把手教你破速达5000PRO v2.33加密狗
- linux安装smmo压缩包软件,Linux centos 安装rarlinux压缩软件 使有rarlinux
- 三国古城和108将地图已恢复
- 如何同时对多个 Word 文档批量插入页眉页脚、修改页眉页脚以及添加页码
- 柔性电子综述2013 ---电子皮肤 The Evolution of Electronic Skin (E-Skin)
- 小小的天地 大大的梦想
- [python爬虫之路day20]:CrawSpider爬取微信小程序社区技术帖
- 【技术科普】HLS视频流内m3u8文件和TS切片是什么关系?
- vue 项目使用 Clipboard-复制文本或图片到剪贴板
- 收录拒绝指定ip请求黑名单lua脚本、拒绝ip频次请求的lua脚本
- 卧式铣床升降台主传动系统设计
- 隐藏控制台程序的dos窗口
- Linux文件权限查看与修改