NAND FLASH 的接線方式和 NOR FLASH,SDRAM 都不一樣。以 TQ2440 開發板用的 K9F1208 為例,分析 NAND FLASH 的接線方式。
K9F1208 結構如下圖:
K9F1208 位寬是8 位。
一頁: 512byte + 16byte 最后 16byte 是用于存儲校驗碼和其他信息用的,不能存放實際的數據。 一個塊有 32 page:(16k+512)byte K9F1208 有 4096 個塊:(64M+2M)byte,總共有64Mbyte 可操作的芯片容量 NAND FLASH以頁為單位讀寫數據,以塊為單位擦除數據。
S3C24440 和K9F1208 的接線圖如下:
下圖是 S3C2440 的 NAND FLASH 引腳配置:
當選定一個 NAND FLASH 的型號后,要根據選定的NAND FLASH 來確定 S3C2440的NCON,GPG13,GPG14,GPG15 的狀態。
下圖是 S3C2440 中 4 個腳位狀態的定義:
K9F1208 的一頁是 512byte,所以NCON接低電平,GPG13 接高電平。 K9F1208 需要4 個尋址命令,所以 GPG14 接高電平 K9F1208 的位寬是 8,所以 GPG15 接低平。 NAND FLASH尋址 對 K9F1208 來說,地址和命令只能在 I/O[7:0]上傳遞,數據寬度是 8 位。
地址傳遞分為 4 步,如下圖:
第 1 步發送列地址,既選中一頁 512BYTE中的一個字節。512byte需要 9bit 來選擇,這里只用了 A0-A7,原因是把一頁分成了2 部分,每部分 256字節。通過發送的讀命令字來確定是讀的前 256 字節還是后 256 字節。 當要讀取的起始地址(Column Address)在 0~255內時我們用 00h 命令,當讀取的起始地址是在 256~511 時,則使用 01h 命令。 一個塊有 32 頁,用 A9-A13共5位來選擇一個塊中的某個頁。 總共有 4096 個塊,用 A14-A25 共12 位來選擇一個塊。K9F1208 總共有64Mbyte,需要A0-A25 共 26 個地址位。
例如要讀 NAND FLASH的第5000字節開始的內容。 把 5000 分解成列地址和行地址。Column_address = 5000%512 = 392 Page_address = (5000>>9) = 9
因為 column_address>255,所以用01h命令讀發送命令和參數的順序是:
NFCMMD = 0x01; 從后 256 字節開始讀 NFADDR = column_address & 0xff; 取 column_address的低 8 位送到數據線
NFADDR = page_address & 0xff;發送A9-A16
NFADDR = (page_address >>8) & 0xff; 發送 A17-A24
NFADDR = (page_address >> 16) & 0xff;發送 A25
上面的 NFCMMD,NFADDR.是 S3C2440的 NAND FLASH 控制寄存器。讀取的數據會放在NFDATA 中。
上一篇:arm力天電子 lpc2148流水燈驅動程序詳解
下一篇:S3C2440核心板原理圖設計:與SDRAM接線分析
推薦閱讀
史海拾趣
1. AVR單片機原理及應用 【內容簡介】 本書在概述ATMEL公司開發的AT89系列、AT90系列、AT91M系列單片機之后,詳細介紹了AVR增強型RISC單片機的結構、指令系統、90系列多種單片機、實用程序設計以及AVR單片機的應用實例,最后介紹了AVR單片機 ...… 查看全部問答∨ |
|
sdram的時序問題 state_cntrl_sig 在非idl_cycle下每個時鐘加1 哪位高手能告訴我下為什么下面的state_cntrl_sig要計到那時候才變為空閑周期 WHEN idl_cycle => IF (cmnd_cycle_req = \'1\') THEN &nbs ...… 查看全部問答∨ |
|
最近在看這個: -----i2c源代碼情景分析(Beta2)---------- 但是上面提到的-----本文檔中的源代碼以i2c-2.9.1包及www.arm.linux.org.uk上下載的pxa的i2c適配器的補丁2360-2為準 ----------2360-2的源碼一直沒有找到,網站也看了,可能我水平不行 ...… 查看全部問答∨ |
國的多數讀者對89C51系列的單片機是很熟悉的,為了加深對 MSP430 系列單片機的認識,我對兩者進行一下比較。 第一,89C51單片機是 8 位單片機。其指令是采用的被稱為“ CISC ”的復雜指令集,共具有 ...… 查看全部問答∨ |