千家论坛_弱电智能化技术与工程讨论(建筑智能,家居智能,人工智能)

监控系统(CCTV)
收藏本版 (135) |订阅

监控系统(CCTV) 今日: 47706 |主题: 63094|排名: 2 

发新帖
打印 上一主题 下一主题

矩阵双端口的SRAM都用的哪一款呢?求助矩阵开发工程...

[复制链接]
maolvzi2008 发布于: 2011-6-17 18:05 237 次浏览 0 位用户参与讨论
跳转到指定楼层

目前矩阵生产厂家,你们用的双端口SRAM是哪一款呢  是DS1609呢还是IDT7140SA100P呢?

 

DS1609介绍:

双端口RAMDS1609,它是一个拥有两个独立的控制、地址和输入/输出引脚端口的随机存取存储器(Ryan),两个处理器通过共享DS1609内部的存储区来实现通信。DS1609芯片是具有256字节的双端口随机存取存储器,它为低功耗CMOS设计,工作电压5V,工作电流为18mA。这种双端口存储器芯片是专门为异步多处理器系统而设计的,DS1609芯片主要用于实现异步多处理器系统之间高速、低容量的数据交换(Ryan)。其次,使用AVR公司的ATmega128芯片、DS1609、1602液晶组成一个测试系统用于测试是否能够对DS1609的A(或B)端口进行读写操作(关于两个CPU通过DS1609进行数据交换的测试目前正在调试中等调试成功后再上传吧),具体做法是首先将一个数据写入DS1609的存储单元,然后再读取这个存储单元的数据并将该数据在液晶屏中显示出来。那么在整个操作过程中最重要的就是读写操作,根据DS1609的时序图我们用ATmega128芯片的IO口模拟DS1609的读写时序。程序如下:

/************************************************
文件:dualram.h
用途:DS1609文件
注意:128的B口用于接1609的数据/地址总线,PE4~PE6接1609的控制端口
************************************************/
#ifndef __dualram_H__
#define __dualram_H__

#define DRAM_DDR        DDRB //PB口与1609的数据/地址复用端口相连
#define DRAM_PORT      PORTB
#define DRAM_PIN           PINB
#define DRAM_WE_0       PORTE &=~ (1<<4)//PE4-6口为1609的控制端口
#define DRAM_WE_1       PORTE |= (1<<4)
#define DRAM_CE_0       PORTE &=~ (1<<5)
#define DRAM_CE_1       PORTE |= (1<<5)
#define DRAM_OE_0       PORTE &=~ (1<<6)
#define DRAM_OE_1      PORTE |= (1<<6)     

extern unsigned char dr_write(unsigned char addr,unsigned char data);
extern unsigned char dr_read(unsigned char addr);

#endif

/************************************************
文件:dualram.c
用途:双口RAM底层函数
注意:
************************************************/

#include "config.h"

//Ryan

/*************************************************************************
** 函数名称:void dr_init()
** 功能描述:初始化
** 输 入:
** 输出  :
** 全局变量:
** 调用模块:
** 说明:
** 注意:
**************************************************************************/

//Ryan

void dr_init()
{
 DRAM_DDR = 0xff;//PB口设置为输出
 DRAM_PORT = 0xff;
 DRAM_OE_1;
 delay_nus(5); //适当延时使得控制端口的时序同步,均为高电平
 DRAM_CE_1;
 delay_nus(5);
 DRAM_WE_1;
 delay_nus(5);
 DDRE |= BIT(4);//以下定义1609的控制端口输出方向,偶就是忘了加这三条语句结果调了10天才通的
 DDRE |= BIT(5);
 DDRE |= BIT(6); 
}
/*************************************************************************
** 函数名称:unsigned char dr_write(unsigned char addr,unsigned char data)
** 功能描述:写DS1609
** 输 入:
** 输出  :
** 全局变量:
** 调用模块:
** 说明:
** 注意:根据1609的写时序图编写该程序段
**************************************************************************/
unsigned char dr_write(unsigned char addr,unsigned char data)
{
 dr_init();
 DRAM_PORT = addr;
 delay_nus(500);
 DRAM_CE_0;
 delay_nus(500);
 DRAM_WE_0;
 delay_nus(500);

//Ryan
 DRAM_PORT = data;
 delay_nus(500);
 DRAM_CE_1;
 delay_nus(500);
 DRAM_WE_1;
 delay_nus(500);
 DRAM_OE_1;
 delay_nus(500);
}
/*************************************************************************
** 函数名称:unsigned char dr_read(unsigned char addr)
** 功能描述:读DS1609
** 输 入:
** 输出  :Ryan
** 全局变量:
** 调用模块:
** 说明:
** 注意:根据1609的读时序图编写该程序段
**************************************************************************/
unsigned char dr_read(unsigned char addr)
{
 unsigned char dr_temp;
 dr_init();
 DRAM_PORT = addr;
 delay_nus(500);
 DRAM_CE_0;
 delay_nus(500);
 DRAM_DDR &=~ 0xff;
 delay_nus(500);
 DRAM_OE_0;
 delay_nus(500);
 dr_temp = DRAM_PIN;
 delay_nus(500);
 DRAM_CE_1;
 delay_nus(500);
 DRAM_OE_1;

//Ryan
 delay_nus(500);
 DRAM_WE_1;
 delay_nus(500);
 return dr_temp;
}

 

 

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

深圳动能世纪电子   李生

15914068654

qq:1159611445

矩阵配套全系列芯片  热卖

DS1609  IDT7140SA100P    UPD6464  UPD6453  MT8816  LM1881   NJM2267  NJM2207

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆 千家通行证登陆

本版积分规则

千家智客微信号
千家智客微信
玩物说商城
玩物说商城