娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月03日(星期二)

正在發生

2019年12月03日 | nandflash的讀寫(2440)

發布者:中和子 來源: eefocus關鍵字:nandflash  讀寫 手機看文章 掃描二維碼
隨時隨地手機看文章

說明:

根據物理結構上的區別 , NandFlash主要分為如下兩類:
1)?SLC (Single Level Cell): 單層式存儲
2)?MLC (Multi Level Cell): 多層式存儲
@:SLC在存儲格上只存一位數據, 而MLC則存放兩位數據。


1.nand.c

#define NFCONF (*(volatile unsigned long*)0x4E000000)
#define NFCONT (*(volatile unsigned long*)0x4E000004)
#define NFCMD  (*(volatile unsigned char*)0x4E000008)
#define NFADDR (*(volatile unsigned char*)0x4E00000C)
#define NFDATA (*(volatile unsigned char*)0x4E000010)
#define NFSTAT (*(volatile unsigned char*)0x4E000020)

#define TACLS 1
#define TWRPH0 2
#define TWRPH1 1


void select_chip()
{
    NFCONT &= ~(1<<1);    
}

void deselect_chip()
{
    NFCONT |= (1<<1);    
}

void clear_RnB()
{
   NFSTAT |= (1<<2); 
}

void send_cmd(unsigned cmd)
{
     NFCMD = cmd;
}

void send_addr(unsigned addr)
{
     NFADDR = addr;
}

void wait_RnB()
{
   while (!(NFSTAT&(1<<2)))    
   {
       ;    
   }
}

void nand_reset()
{
    //選中flash
    select_chip();
    
    //清除RnB
    clear_RnB();
    
    
    //發送0xff命令
    send_cmd(0xff);
    
    
    //等待RnB
    wait_RnB();
    
    
    //取消選中flash
    deselect_chip();
}

void nandflash_init()
{
    //初始化NFCONF
    NFCONF = (TACLS<<12) | (TWRPH0<<8) | (TWRPH1<<4);
    
    //初始化NFCONT
    NFCONT = (1<<0) | (1<<1);
    
    //復位
    nand_reset();    
}

void NF_PageRead(unsigned long addr,unsigned char* buff)
{
    int i;
    
    //選中nandflash芯片
    select_chip();
    
    //清除RnB
    clear_RnB();
    
    //發送命令0x00
    send_cmd(0x00);
    
    //發送列地址
    send_addr(0x00);
    send_addr(0x00);
    
    //發送行地址
    send_addr(addr&0xff);
    send_addr((addr>>8)&0xff);
    send_addr((addr>>16)&0xff);
    
    //發送命令0x30
    send_cmd(0x30);
    
    //等待RnB
    wait_RnB();
    
    //讀取數據
    for(i=0;i<2048;i++)
    {
       buff[i] = NFDATA;      
    }
    
    //取消選中nandflash芯片
    deselect_chip();
}


void nand_to_ram(unsigned long start_addr, unsigned char* sdram_addr, int size)
{
     int i;
     
    for( i=(start_addr >>11); size>0;)
    {
        NF_PageRead(i,sdram_addr);    
        size -= 2048;
        sdram_addr += 2048;
        i++;
    }
}

int NF_Erase(unsigned long addr)
{
    int ret;
    
  //選中flash芯片
    select_chip();
    
    //清除RnB
    clear_RnB();
    
    //發送命令0x60
    send_cmd(0x60);
    
    //發送行地址
    send_addr(addr&0xff);
    send_addr((addr>>8)&0xff);
    send_addr((addr>>16)&0xff);
    
    //發送命令D0
    send_cmd(0xD0);
    
    //等待RnB
    wait_RnB();
    
    //發送命令0x70
    send_cmd(0x70);
    
    //讀取擦除結果
    ret = NFDATA;
    
    //取消選中flash芯片
    deselect_chip();
    
    return ret;
    
}

int NF_WritePage(unsigned long addr,unsigned char *buff)
{
    unsigned int i,ret = 0;
    //選中nandflash
    select_chip();
    
    //清除RnB
    clear_RnB();
    
    //發送0x80命令
    send_cmd(0x80);
    
    //發送2個列地址
    send_addr(0x00);
    send_addr(0x00);
    
    //發送3個行地址
    send_addr(addr&0xff);
    send_addr((addr>>8)&0xff);
    send_addr((addr>>16)&0xff);
    
    //發送數據
        for(i=0;i<2048;i++)
    {
       NFDATA = buff[i];      
    }
    
    //發送0x10命令
    send_cmd(0x10);
    
    //等待RnB
    wait_RnB();
    
    //發送0x70命令
    send_cmd(0x70);
    
    //讀取寫入結果
    ret = NFDATA;
    
    //關閉nandflash
    deselect_chip();
     return ret;
    
}

2.uart.c

#define GPHCON (*(volatile unsigned long*)0x56000070)
#define ULCON0 (*(volatile unsigned long*)0x50000000)
#define UCON0  (*(volatile unsigned long*)0x50000004)
#define UBRDIV0  (*(volatile unsigned long*)0x50000028)
#define UTRSTAT0 (*(volatile unsigned long*)0x50000010)
#define UTXH0 (*(volatile unsigned long*)0x50000020)
#define URXH0 (*(volatile unsigned long*)0x50000024)

#define PCLK 50000000
#define BAUD 115200

void uart_init()
{
    //1.配置引腳功能
    GPHCON &= ~(0xf<<4);
    GPHCON |= (0xa<<4);
    
    //2.1 設置數據格式
    ULCON0 = 0b11;
    
    //2.2 設置工作模式
    UCON0 = 0b0101; 
    
    //3. 設置波特率    
    UBRDIV0 =(int)(PCLK/(BAUD*16)-1);
}


void putc(unsigned char ch)
{
    while (!(UTRSTAT0 & (1<<1)));
    UTXH0 = ch;  
}


unsigned char getc(void)
{
    unsigned char ret;

    while (!(UTRSTAT0 & (1<<0)));
    // 取數據
    ret = URXH0;  
    
    if ( (ret == 0x0d) || (ret == 0x0a) )
    {
        putc(0x0d);
        putc(0x0a);    
    }          
    else
        putc(ret);
        
        return ret;
}

關鍵字:nandflash  讀寫 引用地址:nandflash的讀寫(2440)

上一篇:ARM-匯編指令集(總結)
下一篇:ARM詳細指令集

推薦閱讀

下圖概括了STM32F10XXX系列芯片的中斷默認情況下,中斷向量表位于Flash等只讀存儲器內,而且在運行過程中無須修改向量表。中斷向量表默認位于存儲器的開頭(地址0),查閱探索者開發板例程代碼也可以發現這一點,在.s啟動文件中可以看到: 對應于stm32f4xx.h中的代碼:這么多中斷需要通過NVIC(內嵌向量中斷控制器)來管理。 設置中斷總共分三步:1.設置中...
說起辦公投影儀,大家腦海中的印象往往還是傳統會議室那些已經“服役”了三、四年六的老古董,有換新的念頭,卻不知道投影儀什么牌子好,哪種投影儀適合辦公。而隨著企業發展不斷加速,內外溝通互動日益頻繁,老古董般的傳統商務投影儀在新的會議需求面前顯得有些捉襟見肘,它們多多少少有一些同樣的 bug,比如一定要拉窗簾或關燈才能看得清、必須要和筆...
12月2日下午消息,微軟在北京舉辦2020國際殘疾人日特別活動,展示了微軟AI語音技術的最新進展——神經網絡語音智能。神經網絡語音智能擁有多音色、多情緒的能力,并且可以通過創作平臺快捷的進行制作。同時,活動現場也舉行了紅丹丹“心目圖書館”有聲內容捐贈儀式。微軟全球資深副總裁 洪小文  活動中,微軟全球資深副總裁、微軟亞太研發集團...
據美國《國會山》日報網站11月29日報道,創造了世界首例活體機器人“異形機器人”的科研團隊表示,他們創造的生命形式為“有史以來首例能夠自我復制的活體機器人”。報道稱,科學家最早在2020年公開了這種微小的有機體。它們由非洲爪蟾的心臟干細胞和皮膚干細胞組裝而成,可以在耗盡能量前獨立活動約一周時間,具有自我修復能力,可以自然降解。 美國哈佛...

史海拾趣

問答坊 | AI 解惑

自動測試系統的原理、應用與發展

自動測試系統(ATS)廣泛應用于各類產品(器件、部件、電路板、設備或系統)從設計、生產到使用維護的各個階段,對提高產品性能及生產率,降低生產成本及整個生命周期成本,起著重要作用。對于飛機、導彈、艦船或武器系統,自動測試系統更是這些它 ...…

查看全部問答∨

開關電源的PCB設計規范

在任何開關電源設計中,PCB板的物理設計都是最后一個環節,如果設計方法不當,PCB可能會輻射過多的電磁干擾,造成電源工作不穩定,以下針對各個步驟中所需注意的事項進行分析: 一、從原理圖到PCB的設計流程 建立元件參數->輸入原理網表->設計 ...…

查看全部問答∨

簡單問題求救(明天補給分)

將下面代碼 轉成embedded vc++ 4.0環境下的代碼,我不懂c++,請高手幫個忙! #using <System.dll> #using <System.Windows.Forms.dll> using namespace System; using namespace System::Collections::Generic; void main() { ...…

查看全部問答∨

請推薦一些非PCI接口的MPEG編碼芯片,我找到一些型號,請評一下

1. SZ1510:   SZ1510是一個 MPEG-1和運動JPEG圖像編碼器。其內置的視頻壓縮核經過優化,適合高效、實時的MPEG1數字圖像壓縮,具有功能多、功耗低、溫度范圍寬等特點;同時整合了TI公司的TMS320C54X高性能DSP內核,可依據MPEG-1標準對音 ...…

查看全部問答∨

最新的STM8L選型手冊手冊哪有?

最新的STM8L選型手冊手冊哪有?…

查看全部問答∨

單片機與FPGA用I/O口相連是否加電阻

請問:用Cypress CY7C68013A單片機與 Xilinx spartan 3E FPGA用I/O口相連希望完成通信。那么在設計的時候,I/O口相接是否要接電阻?這個如何判斷?謝謝!…

查看全部問答∨

有木有用verilog語言做過視頻圖像色空間轉換從RGB 到YCbCr,有工程能否參考一下

有木有用verilog語言做過視頻圖像色空間轉換從RGB 到YCbCr,有工程能否參考一下。。。急啊…

查看全部問答∨

求CC2530中使用定時器設計占空比可調的PWM波

新手一個, 求CC2530中使用定時器設計占空比可調的PWM波, 寫了半天板子沒有反應; 誰有沒有程序....我研究研究…

查看全部問答∨

WEBENCH設計大賽上傳數量排行榜(截止至7月11日下午4:30)

我們看看哪些網友離平板電腦、微單、電子書、固態硬盤或者移動硬盤這些大獎越來越近了呢?(截止到7月11日下午4點30的數據) 如果你也想獲得下列獎品,那也趕緊提交設計吧!活動詳情:http://bbs.eeworld.com.cn/TI/201307_webench/index.html …

查看全部問答∨

STM32F4系列 TCP/IP程式外包

本系統原本使用Microchip平臺,現在要將平臺轉換為STM,由於時間緊迫,在此尋求神人幫忙,麻煩有專精於此且有意承包或有意進行交流討論的先進們與我聯繫,謝謝 信箱: nyk9282@yahoo.com …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 淳安县| 广河县| 灵丘县| 大同县| 巢湖市| 波密县| 新疆| 永泰县| 永和县| 恩施市| 中西区| 尤溪县| 保亭| 乌兰浩特市| 涡阳县| 桃园县| 万年县| 韩城市| 迁安市| 德清县| 叙永县| 略阳县| 房山区| 临西县| 瑞安市| 鹤岗市| 慈利县| 龙州县| 佛冈县| 简阳市| 北流市| 安宁市| 龙里县| 抚远县| 肥西县| 和林格尔县| 江源县| 伊通| 台湾省| 昌吉市| 边坝县|