新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > KEIL FOR ARM 下LPC22xx的外部RAM用法

KEIL FOR ARM 下LPC22xx的外部RAM用法

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
工作筆記:

調(diào)試外部RAM,我是在CS0上外擴(kuò)了一個(gè)64K的RAM,也就是地址從0X80000000開始。開始不知道REALVIEW的設(shè)置,所以總是不能讀寫RAM,沒有輸出信號(hào),在KEIL下要做如下設(shè)置。

本文引用地址:http://butianyuan.cn/article/201611/316613.htm

一、在“Options for Target Targe 1”下,選擇Asm菜單,在“Conditional Assembly Control Symbols”下的輸入框中填上EXTERNAL_MODE,然后按OK結(jié)束,

二、Startup.s這個(gè)文件也要做一定的改動(dòng)。

EMC_SETUP EQU 1 ;使能外部RAM控制。

BCFG0_SETUP EQU 1 ;使能CS0控制。如果用到別的片選,則都要使能。
BCFG0_Val EQU 0x1000554A; ;

;此時(shí)要注意BCFG0這個(gè)寄存器的設(shè)置,要仔細(xì)看內(nèi)容,其分別定義了讀、寫、連續(xù)的時(shí)鐘周期,重要的是,如果是RAM,RVLE位一定要置1,別的要根據(jù)你RAM的速度,來設(shè)置一個(gè)合適的值,位29、28決定了RAM的寬度,8位、16位、32位等。

三、另一個(gè)設(shè)置就是比較重要的PINSEL2

PINSEL2_Val EQU 0x0F000914

的設(shè)置的為16位總線,A1-23地址線使能,使能CS0,OE ,WE;別的引腳則設(shè)置為了I/O,這個(gè)寄存器的位4、5應(yīng)該看明白,你選擇的是多少位的總線,然后就是看你需要的選擇了。

綜上,設(shè)置了這幾種寄存器,外部RAM就可以正常工作了。如果以上設(shè)置的不對(duì),則可能沒有WE信號(hào),也可能不產(chǎn)生CS0;下面是一個(gè)簡單的例子。

#define RAMADDR 0x80000000 //外部RAM的基址。

void ExternRam(void)
{
volatile unint *buf;
unint data[512];
unint i;
for (i=0x00;i<512;i++)
{
buf=(volatile unint *) (RAMADDR | i<<1);
*buf=i;
}
for (i=0x00;i<512;i++)
{
buf=(volatile unint *) (RAMADDR | i<<1);
data[i]=*buf;
}
}

如果你寫入的數(shù)據(jù)與讀出的數(shù)據(jù)一樣,那就說明設(shè)置的對(duì)了,調(diào)試時(shí),最好用示波器看看WE,OE,CS0等信號(hào)是否正常。



關(guān)鍵詞: KEILFORARMLPC22xx外部RA

評(píng)論


技術(shù)專區(qū)

關(guān)閉