|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
Lpc2210是怎么符合flash的讀寫時序的,糊涂了,請高手指教 |
| 作者:yyccaa 欄目:ARM技術 |
#define Fosc 11059200 #define Fcclk (Fosc * 4) 以上是周公lpc2200模板的boot對pll的設置,也就是說2210工作于44MHZ下, 按照周公的arm教程上說arm7tdmi“能提供0.9MIPS/MHz的指令執(zhí)行速度”(3.2.1三級流水線),那就算是0.5MIPS/MHz吧(好算些,結論一樣),就是說2個cclk可以執(zhí)行一條指令,2個cclk是(1/22)ns。 lpc啟動時MAM被禁止,直接從FLASH取指(設為外部FLASH啟動),雖然BCFG0的WST(讀訪問長度)復位值為最大34 cclk(即0.77ns),但是根據(jù)SST39VF160數(shù)據(jù)手冊所寫,即使是最快的55ns的讀周期時間也遠遠地超過了34 cclk,但為什么周公的smart2200能夠用外部FLASH SST39VF160正常啟動呢? 同樣的,黃皮書里外部存儲器接口1(實驗2.15)的例程在寫FLASH前先寫入必須的軟件命令時序: (相關宏定義 #define FLASH_ADDR 0x81000000 #define GetAddr(addr) (volatile uint16 *)(FLASH_ADDR|(addr<<1)) ) 實際語句: ip=GetAddr(0x5555); *ip=0xAA; ip=GetAddr(0x2AAA); *ip=0x55; ip=GetAddr(0x5555); *ip=0xA0; 從axd里看其產生的匯編語句也就1-3句/條c語句,而SST39VF160數(shù)據(jù)手冊里一個命令的地址就必須保持最小30ns,同樣與34 cclk差太多了,但執(zhí)行卻正確。 看來應該是我的時間的計算有問題,但是不知道哪有問題,請高手指教! |
| 2樓: | >>參與討論 |
| 作者: qwernet 于 2006/2/3 0:04:00 發(fā)布:
2個cclk是(1/22)ns?怎么算的? 34cclk才0.77ns?LPC2210什么時候成了GHz級的處理器? |
|
| 3樓: | >>參與討論 |
| 作者: wangshujun 于 2006/2/3 10:32:00 發(fā)布:
boot運行的開始頻率是不用pll的 此時FLASH是滿足要求的,在配置pll之前正確的配置了等待周期就不會到導致取指失敗,但是此時的運行速度實在是很慢的,用22x0的用戶最好要研究一下把最要求速度的一部分代碼放到內部SRAM運行 |
|
| 4樓: | >>參與討論 |
| 作者: yyccaa 于 2006/2/3 14:27:00 發(fā)布:
2個cclk是(1/22)ns?怎么算的? MIPS是百萬條指令每秒,0.5MIPS/MHz,就是1條指令/2cclk,然后44MHZ的倒數(shù)就是1/44ns(10e-6秒)=1cclk。是這么算的嗎? 這樣,就算mam有加速,但FLASH的最小讀寫周期是固定的,讀寫一個word還是要幾十ns的吧。 應該是算法上有問題,希望大家能給出正確的算法。 |
|
| 5樓: | >>參與討論 |
| 作者: qwernet 于 2006/2/3 16:56:00 發(fā)布:
錯了錯了!1ns = 10e-9s! 44MHZ的時鐘,每個時鐘周期應該是1/44us = 22.7ns! |
|
| 6樓: | >>參與討論 |
| 作者: yyccaa 于 2006/2/3 20:00:00 發(fā)布:
44MHZ的時鐘,每個時鐘周期應該是1/44us = 22.7ns! 對了。 1ns是1秒的10億分之一,我還以為ms以下是ns然后才是us,記錯了:)。 多謝樓上的提醒。 那么這樣的話,就是1條arm指令/6cclk(2*16bit,6cclk>(2*55)ns)),即使mam加速,mam取指周期MAMTIM的值只能是1-7cclk,而mam每次取指為4個代碼字,時間不夠啊,教程里還推薦40MHZ以上取MAMTIM=3cclk,這個是怎么算的?請大家繼續(xù)幫助,謝謝。 * - 本貼最后修改時間:2006-2-3 20:22:20 修改者:yyccaa |
|
| 7樓: | >>參與討論 |
| 作者: yyccaa 于 2006/2/6 13:10:00 發(fā)布:
沒人知道嗎? 還是因為太簡單了大家不想幫忙回答一下嗎? 我還是新手,希望大家指導一下。版主放假回來的話,也請看一下吧。 是關于樓上的mam加速的問題。 看了一下論壇的老貼,是不是mamtim實際是指一次讀FLASH的操作的cclk,mam取指時是進行了4次的讀FLASH操作,也就是mam一次取指所用周期為(4*2*MAMTIM)=8*3cclk? * - 本貼最后修改時間:2006-2-6 17:44:44 修改者:yyccaa |
|
| 8樓: | >>參與討論 |
| 作者: qwernet 于 2006/2/7 19:23:00 發(fā)布:
mam是針對片內FLASH的 片內FLASH的訪問周期為50ns以上,即最高頻率20MHZ。 所以,CCLK>20MHZ,mamtim設為2,CCLK>40MHZ,mamtim設為3。 |
|
| 9樓: | >>參與討論 |
| 作者: yyccaa 于 2006/2/8 12:47:00 發(fā)布:
mam是針對片內FLASH的 應該不是這樣的,因為2210沒有片內FLASH,但是有mam加速。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |