3430|0

1

帖子

0

TA的资源

一粒金砂(初级)

NUC100VE3AN如何读写IS61C6416AL [复制链接]

/*请教下各位大侠  为什么读出来的数据老是等于0呢  麻烦各位这点一下*/



#include
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"


/*$$$$$$$$$$$$$$$$$RAM$$$$$$$$$$$$$$$$$$$$$$*/
#define     WE_         0x0100                //PC8;
#define     ALE         0x0100                //PB8;
#define     RAMALL_     0x8000                //PA15;
#define     I_O         0xFFFFFFFF                //PD0_15;        双向
#define     sc          0x55555555
#define     sr          0
/*$$$$$$$$$$$$$$$$$RAM$$$$$$$$$$$$$$$$$$$$$$*/

uint32_t d,num;


void delay_10ms(uint32_t x)
{
         uint32_t i,j;
     for(;x>0;x--)
          for(i=200;i>0;i--)
            for(j=50;j>0;j--)  ;
}


void  init_ram(void)
{
        DrvGPIO_Open(E_GPB, 8, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPA, 15, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPA, 13, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPA, 12, E_IO_OUTPUT);
        DrvGPIO_Open(E_GPC, 8, E_IO_OUTPUT);

        DrvGPIO_SetBit(E_GPA, 15);                 //置位ce

        DrvGPIO_SetBit(E_GPA, 14);                 //置位OE
        DrvGPIO_SetBit(E_GPA, 13);                 //置位UB
        DrvGPIO_SetBit(E_GPA, 12);                 //置位LB
        DrvGPIO_SetBit(E_GPC, 8);                 //置位WE

                  
}

void  writeRamWords(void)
{
        uint8_t  i;
        uint32_t c=0x03;
        mtcGPIO_Open_PMD(E_GPD,0x55555555);
        DrvGPIO_SetBit(E_GPB, 8);                                                 ///地址解锁
        DrvGPIO_SetPortBits(E_GPD,0x11);                                         ///写地址
        DrvGPIO_ClrBit(E_GPB, 8);                                                 ///地址锁存

        DrvGPIO_ClrBit(E_GPA, 15);                           ///使能CE
        DrvGPIO_ClrBit(E_GPC, 8);                         ///使能WEn         
        DrvGPIO_ClrBit(E_GPA, 13);                            ///使能UB
        DrvGPIO_ClrBit(E_GPA, 12);                          ///使能LB
        for(i=8;i>0;i--)  ;
        DrvGPIO_SetPortBits(E_GPD,c);         ///写入数据
        num=c;
        DrvGPIO_SetBit(E_GPA, 15);                  // 置位CE
        DrvGPIO_SetBit(E_GPC, 8);                 ///置位WEn
        DrvGPIO_SetBit(E_GPA, 13);                 //置位UB
        DrvGPIO_SetBit(E_GPA, 12);                 //置位LB
      
}


void  ReadRamWords(void)
{
         uint8_t i;
        mtcGPIO_Open_PMD(E_GPD,0x55555555);        ///设输出模式
        DrvGPIO_SetBit(E_GPB,8);                         ///地址解锁
        DrvGPIO_SetPortBits(E_GPD,0x11);                 ///写地址
       
        DrvGPIO_ClrBit(E_GPB,8);                         ///地址锁存
        mtcGPIO_Open_PMD(E_GPD,0);        ///设置输入模式
        DrvGPIO_SetBit(E_GPC, 8);                        ///pc.8=1        WE
        DrvGPIO_ClrBit(E_GPA, 15);                  ///使能CE
        DrvGPIO_ClrBit(E_GPA, 14);                  //使能OE
        DrvGPIO_ClrBit(E_GPA, 13);                   ///使能UB
        DrvGPIO_ClrBit(E_GPA, 12);                 ///使能LB
        for(i=8;i>0;i--)  ;

        d=(DrvGPIO_GetPortBits(E_GPD) & 0xffff);           //.读取数据

        DrvGPIO_SetBit(E_GPA, 14);                 //置位oe
        DrvGPIO_SetBit(E_GPA, 13);                 //置位UB
    DrvGPIO_SetBit(E_GPA, 12);                 //置位LB
         
}

int main(void)
{

        init_ram();
        DrvGPIO_Open(E_GPC, 10, E_IO_OUTPUT);


        writeRamWords();

        delay_10ms(250);
        ReadRamWords();



        if(num==0)   DrvGPIO_SetBit(E_GPC, 10);
        if(d != 0)          
                  DrvGPIO_SetBit(E_GPC, 10);
        else                            
                DrvGPIO_ClrBit(E_GPC, 10);

           while(1);
   
}

//  mtcGPIO_Open_PMD 的函数
int32_t mtcGPIO_Open_PMD(E_DRVGPIO_PORT port, int32_t i32Bit)
{
        volatile uint32_t u32Reg;
        u32Reg = (uint32_t)&GPIOA->PMD + (port*PORT_OFFSET);  
        outpw(u32Reg, i32Bit);
     
        return E_SUCCESS;
}
此帖出自单片机论坛

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表