<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Linux驅動(dòng)之Nand Flash四問(wèn),原理、工作方式都包含了

Linux驅動(dòng)之Nand Flash四問(wèn),原理、工作方式都包含了

作者: 時(shí)間:2018-01-18 來(lái)源:網(wǎng)絡(luò ) 收藏

  Nand Flash 是一個(gè)存儲芯片。

本文引用地址:http://dyxdggzs.com/article/201801/374606.htm

  那么:這樣的操作很理“讀地址A的數據,把數據B寫(xiě)到地址A”

  問(wèn)1:原理圖上的Nand Flash和SC2440之間只有數據線(xiàn),怎么傳輸地址?

  答:在Data0-Data7上既傳輸數據,又傳輸地址,當ALE為高電平時(shí)傳輸的是地址

  問(wèn)2:從Nand Flash芯片手冊可知,要操作Nand Flash需要先發(fā)出命令,怎么傳入命令。

  答:在Data0-Data7既傳輸數據,又傳輸地址,也傳輸命令

  當ALE為高電平時(shí)傳輸的是地址

  當CLE為高電平時(shí)傳輸的是命令

  當ALE和CLE為低電平時(shí)傳輸的是數據

  問(wèn)3:數據線(xiàn)既接到Nand Flash,也接到NOR Flash,還接到SDRAM等等,怎么避免干擾?

  答:這些設備,要訪(fǎng)問(wèn)之前必須選中

  沒(méi)有選中的芯片不會(huì )工作,相當于沒(méi)有接一樣

  問(wèn)4:假設燒寫(xiě)Nand Flash,把命令、地址、數據發(fā)給它之后,Nand Flash肯定不可能瞬間完成燒寫(xiě)的,怎么判斷燒寫(xiě)完成?

  答:通過(guò)狀態(tài)引腳RnB來(lái)判斷:它為高電平表示就緒,它為低電平正忙。

  怎么操作Nand Flash呢?

  答:根據Nand Flash的芯片手冊,一般的過(guò)程是:

  發(fā)出命令

  發(fā)出地址

  讀寫(xiě)數據

  以上操作可以從時(shí)序圖上得到

  我們先看下nandflash的布線(xiàn)

  有data0 到data7 八根數據線(xiàn)

  nandflash是個(gè)存儲芯片,那我提出請求:讀地址a的數據,把數據b寫(xiě)到a地址上去

  那么我們看原理圖只看到data0-data7,沒(méi)有看到地址引腳,那怎么把地址傳給我們的開(kāi)發(fā)板

  復用,這幾個(gè)引腳即傳數據也傳地址

  怎么分別是數據還是地址呢,有個(gè)ALE信號,當ALE是高電平時(shí),傳輸的是地址

  但是它不僅只傳輸地址和數據,還傳輸命令,在nand flash芯片手冊可知,要操作nandflash要先發(fā)出命令,只有八條數據線(xiàn),怎么傳輸命令呢???

  當CLE為高電平的時(shí)候傳輸的就是命令,當ALE和CLE都為低電平的時(shí)候傳輸的是數據。

  這個(gè)data0 有的開(kāi)發(fā)板不僅僅只接nandflash,還有的接norflash等等非常多的地方

  數據線(xiàn) 地址線(xiàn)等即接到nandflash,也接到norflash,還接到sdram,DM9000等等。怎么避免干擾,比如說(shuō)我訪(fǎng)問(wèn)nandflash的時(shí)候,norflash就不要給我提供數據

  你就要相當與沒(méi)接一樣,怎么避免干擾呢???

  就是通過(guò)這些設備要訪(fǎng)問(wèn)之前,必須選中,什么叫選中呢,他們都有片選信號,就要我們的片選引腳變?yōu)榈碗娖竭x中,就是cs引腳,沒(méi)有選中的芯片不會(huì )工作,相當于沒(méi)接一樣

  假設燒寫(xiě)nandflash,把數據、命令、地址發(fā)給他之后,nandflash肯定是不可能瞬間完成的,怎么判斷燒寫(xiě)完成,通過(guò)狀態(tài)引腳RnB來(lái)判斷,它為高電平表示完成就緒。為低電平表示正忙

  we和re就是讀寫(xiě)信號..

  怎么操作nandflash

  根據nandflash的芯片手冊,一般過(guò)程是:發(fā)出命令,發(fā)出地址,讀寫(xiě)數據。

  nandflash的命令表格如下

  我們往下看,拿個(gè)例子來(lái)看,讀ID這個(gè)例子的時(shí)序圖

  每個(gè)nandflash都會(huì )內嵌ID,比如廠(chǎng)家ID啊等等。

  時(shí)序圖 橫軸是時(shí)間,時(shí)序圖怎么看呢 ,從左往右看??v向方向就是一列一列 來(lái)看

  然后可以看到發(fā)出命令 90,怎么知道的 ,在數據線(xiàn)上發(fā)出90這個(gè)值,怎么知道它是命令的,就是CLE是高電平。然后給它一個(gè)寫(xiě)脈沖。這個(gè)寫(xiě)信號的上升沿nandflash就會(huì )把數據存進(jìn)來(lái),它就知道了我是一個(gè)命令。

  然后接著(zhù)發(fā)出一個(gè)0地址,然后就可以讀數據了。

  對于我們芯片來(lái)說(shuō)里面集成了一個(gè)nandflash控制器,內部接線(xiàn)。它幫我們簡(jiǎn)化了這些操作,

  nandflash 芯片(rus5pv210)

  選中芯片

  發(fā)命令的操作 CLE變?yōu)楦唠娖桨衙钪祵?xiě)到NFCMD寄存器里就可以了

  在data0-data7輸出命令值

  提供一個(gè)寫(xiě)脈沖

  選中芯片

  發(fā)地址 ALE輸出高電平

  在data0-data7輸出地址值把地址寫(xiě)入NFADDR寄存器里就可以了

  提供一個(gè)寫(xiě)脈沖

  選中芯片

  發(fā)數據 ALE,CLE輸出低電平

  在data0-data7輸出數據的值把地址寫(xiě)入NFDATA寄存器里就可以了

  提供一個(gè)寫(xiě)脈沖

  選中芯片

  讀數據 發(fā)出一個(gè)讀脈沖

  讀data0-data7的數據

  我們可以用uboot體驗nandflash的操作

  1.讀ID,時(shí)序圖在上面

  選中

  發(fā)出0x90命令

  發(fā)出地址0x00

  讀第一個(gè)數據會(huì )得到0xEC

  讀第二個(gè)數據得到device code

  選中的話(huà)芯片手冊的nand flash章節 可以知道

  選為0為選中

  發(fā)出命令就是把命令寫(xiě)到下面這個(gè)寄存器里面去

  同理 地址和數據也是一樣寄存器如下

  但是在uboot里面怎么操作呢

  uboot里面有命令可以讀內存的

  md.w 0xB0E0_0004 1 這命令表示讀 0xb0e00004 讀一次

  mw.w 是寫(xiě)命令

  md 內存顯示 b是以字節為單位,w是以2字為單位,l是以四字節為單位

  讀ID命令流程如圖

  讀出dc

  我們驗證一下 nandflash里面讀ID下面就有這張圖 

  結束讀ID的命令 就是NFCMD寄存器等于0xff 就是命令的reset

  2.讀數據

  我們可以根據uboot的nand dump 0命令讀取0地址的數據

  我們來(lái)一下nandflash讀操作的時(shí)序圖

  為什么中間有五個(gè)地址

  看容量

  讀00數據命令如下

  跟上面的輸出是一樣的



關(guān)鍵詞: Linux Nand

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>