s3c2440 cpu內建nand flash控制器。相關寄存大器起始位址為0x4e000000。
通過設定nfconf暫存器,設定nand flash 時序。
通過設定nfcont暫存器,使能nand flash、初始化ecc等。
**:#define gstatus1 (*(volatile unsigned int *)0x560000b0) //讀此暫存器可以知道cpu晶元型號
#define busy 1
#define nand_sector_size_lp 2048 //大頁每頁2048位元組
#define nand_block_mask_lp (nand_sector_size_lp - 1) //大頁掩碼???
typedef unsigned int s3c24x0_reg32;
//s3c2440 nand flash相關暫存器
typedef struct s3c2440_nand;
static s3c2440_nand * s3c2440nand = (s3c2440_nand *)0x4e000000;//s3c2440 nand flash 相關暫存器起始位址
//供外部呼叫的函式宣告
void nand_init(void); //初始化
void nand_read(unsigned char *buf, unsigned long start_addr, int size);//讀取資料到緩衝區
/* s3c2440的nand flash處理函式 */
static void s3c2440_nand_reset(void);
static void s3c2440_wait_idle(void);
static void s3c2440_nand_select_chip(void);
static void s3c2440_nand_deselect_chip(void);
static void s3c2440_write_cmd(int cmd);
static void s3c2440_write_addr_lp(unsigned int addr);
static unsigned char s3c2440_read_data(void);
//復位
static void s3c2440_nand_reset(void)
//等待就緒訊號
static void s3c2440_wait_idle(void)
//片選
static void s3c2440_nand_select_chip()
//取消片選
static void s3c2440_nand_deselect_chip()
//傳送命令
static void s3c2440_write_cmd(int cmd)
//傳送位址
static void s3c2440_write_addr_lp(unsigned int addr)
//讀資料
static unsigned char s3c2440_read_data(void)
//初始化nand flash
void nand_init(void)
//讀資料
void nand_read(unsigned char *buf, unsigned long start_addr, int size)
s3c2440_nand_select_chip();//發出片選訊號
int i, j;
for (i = start_addr; i < (start_addr+size);)
LCD實驗學習筆記(三) WATCH DOG
看門狗是為了能夠防止程式跑飛用的。程式應該定時的去餵狗。如果程式跑飛了,那麼就不會去餵狗了。如果超過了餵狗的時間,那麼狗就會生成乙個訊號來reset cpu。一般程式不需要,特殊情況下需要這種機制。看門狗預設在啟用狀態。狗自已倒數,然後自動使cpu重啟。watch dog register 看門狗暫...
ARM學習筆記 LCD顯示
lcd概述 lcd liquid crystal display 即液晶顯示器,是一種採用了液晶控制透光度技術來實現色彩的顯示器。lcd有多種型別,比如stn tft ltps tft oled等。cpu或顯示卡發出的影象資料是ttl訊號,lcd本身接收的也是ttl訊號。由於ttl訊號在高速率的長距...
LCD驅動 學習筆記 一
首先先介紹2個概念 68 system 介面和 80system介面。它們是比較流行的2中微處理器的介面。80system 簡單的來說,用read和write兩個訊號來表示讀寫。read為低,為讀 write為低,表示寫。68systeme wr為使能訊號。e wr為高,r w為高表示讀 e wr為...