zoukankan      html  css  js  c++  java
  • 外部扩展接口应用之SRAM

    void main(void)
    {
        unsigned char temp;
        InitSysCtrl();  // 系统初始化子程序,在DSP28_sysctrl.c中
        Init_XINTF();
        Test_RAM();
        Write_RAM(0x05,18);
        temp=Read_RAM(0x05);
        while(1);   
    } 

    这里来看一下Init_XINTF();

    void Init_XINTF(void)
    {
        EALLOW;                
        XintfRegs.XTIMING6.bit.XWRLEAD=2;    //写操作建立时间
        XintfRegs.XTIMING6.bit.XRDLEAD=2;    //读操作建立时间
        XintfRegs.XTIMING6.bit.XWRACTIVE=3;    //写操作有效时间    
        XintfRegs.XTIMING6.bit.XRDACTIVE=2;    //读操作有效时间
        XintfRegs.XTIMING6.bit.XRDTRAIL=2;    //读操作保护时间
        XintfRegs.XTIMING6.bit.XWRTRAIL=2;    //写操作保护时间
        XintfRegs.XINTCNF2.bit.WRBUFF=3;    //设置写缓冲深度
        EDIS;
    }

    之后是Test_RAM();

    void Test_RAM(void)
    {
        unsigned int i,temp=0x1000,w_data=0,err=0,r_data;//数据地址
        for(i=0;i<20000;i++)
        {
            Write_RAM(temp++,w_data++);
        }
        temp=0x1000;
        w_data=0;
        for(i=0;i<20000;i++)
        {
            r_data=Read_RAM(temp++);
            if(r_data!=w_data)
                err=err+1;
            w_data++;
        }
    } 
    void Write_RAM(unsigned int Adr,unsigned int Data)
    {
        unsigned int *pointer;
        pointer = (unsigned int*)(0x100000 | Adr);
        *pointer=Data;
    }
    unsigned int Read_RAM(unsigned int Adr)
    {
        unsigned int *pointer;
        pointer = (unsigned int*)(0x100000 | Adr);
        return(*pointer);
    } 
    void Test_RAM(void)
    {
        unsigned int i,temp=0x1000,w_data=0,err=0,r_data;//数据地址
        for(i=0;i<20000;i++)
        {
            Write_RAM(temp++,w_data++);
        }
        temp=0x1000;
        w_data=0;
        for(i=0;i<20000;i++)
        {
            r_data=Read_RAM(temp++);
            if(r_data!=w_data)
                err=err+1;
            w_data++;
        }
    } 

    总的来说,对于XINTF外部扩展接口的设置只需要看器件的特性把建立,跟踪和保持设置好之后就可以开始写应用程序了。

    本节是进行RAM的读写。对于RAM的读写操作需要注意两点:

    1、把地址搞清楚,搞清楚应该在哪个地址写值和读值。

    2、对内存的操作都是用指针进行的。

  • 相关阅读:
    css字体属性相关。
    子级用css float浮动 而父级div没高度不能自适应高度
    转载:基于Redis实现分布式锁
    LeetCode(53):最大子序和
    LeetCode(52):N皇后 II
    LeetCode(51):N皇后
    LeetCode(50):Pow(x, n)
    LeetCode(49): 字母异位词分组
    LeetCode(48):旋转图像
    LeetCode(47):全排列 II
  • 原文地址:https://www.cnblogs.com/shamoof/p/3656304.html
Copyright © 2011-2022 走看看