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

s3c2440裸機-Norflash2-適配訪問時序

發布者:MysticalEssence最新更新時間:2024-07-08 來源: elecfans 手機看文章 掃描二維碼
隨時隨地手機看文章

前面我們了解了norFlash的特性和原理,那么cpu是如何和nor進行通信的呢?下面開始詳細介紹。

1.內存控制器適配norflash

如圖是S3C2440的內存控制器的可編程訪問周期讀寫時序,里面的時間參數要根據外部norflash的性能進行配置,這里先列出時間參數的含義:



Tacs: Address set-up time before nGCSn(表示地址信號A發出多久后才能發出nGCS片選)

Tcos: Chip selection set-up time before nOE(表示片選信號nGCS發出多久后才能發出讀使能信號)

Tacc:access cycle(數據訪問周期)

Tacp:page模式下的訪問周期

Tcoh:Chip selection hold time after nOE (nOE信號釋放多久后才能釋放片選nGCS)

Tcah:Address hold time after nGCSn (片選nGCS釋放多久后才能釋放地址信號A)

2.我們現在來根據外部norFlash的手冊來配置我們的寄存器來設置時序。

我們知道,當從nor啟動時,此時nor對應0地址,CPU從0地址讀取第一條指令,成功執行。那么問題來了,此時并沒有對內存控制器進行設置,去初始化nor,那為什么還能訪問norflash呢,還能從0地址取指令執行呢?

答:肯定是CPU配置的默認時序就能兼容此款flash。

下面我們根據此款norflash(MX29LV160D)手冊中的訪問時序圖來分析,如下圖:



從上面MX29LV160D手冊的時序圖中我們看見:

(1)先發送地址信號A
(2)發送片選CE
(3)發送讀使能OE
(4)從數據總線上讀出數據
(5)釋放信號...

從表中我們看見:

發出地址數據(Addresses)后,要等待Taa(要求大于等于70ns)時間,地址數據才有效;
發出片選信號(CE#)后,要等待Tce(要求大于等于70ns)時間,片選信號才有效;
發出讀信號(OE#)后要等待Toe(要求大于等于30ns)時間,讀信號才有效;

而且表中Tas(地址建立時間,也就是地址發送多久后才能繼續發后面的片選信號)最小可以為0,那么說明地址信號(A)、片選(CE)、讀(OE)使能信號可以一起發出。

為了簡單我們把地址(Addresses),片選信號(CE#),讀信號(OE#),同時發出,然后讓它們都等待70ns即可(等待地址信號,片選信號,讀寫使能信號有效)。

我們再看看上面的nor訪問時序圖,釋放地址、片選、讀使能信號都沒有時間差值dt要求,那么說明地址、片選、讀使能信號可以同時釋放。

再來看s3c2440內存控制器的配置:



(1)配置數據訪問周期Tacc:

從上圖可以看到Tacc的默認值是111,對應14個clocks。s3c2440系統上電采用12MHz的晶振,HCLK=OSC=12MHz,那么Tacc=(1/(12*10^6)) * 14≈1166 ns,這個值很大,遠超過了我們的nor手冊上的Trc=70ns,幾乎可以滿足所有NorFlash的要求,這也是為什么我們不做初始化也能訪問norflash的原因。

啟動后,由于我們的時鐘HCLK設置成了100MHz,T=1000/100=10ns,Tacc= 10ns*14 >70ns, 所以內存控制器不配置Tacc也是能訪問該flash的。為了讓訪問速率加快,因此設置Tacc>70ns即可,配置成101,8個clocks即可。

(2)配置Tacs,Tcos,Tcoh,Tcah:

從nor的分析中,我們得知地址、片選、讀使能同時發出和同時釋放,所以配置Tacs,Tcos,Tcoh,Tcah皆為0。

代碼如下:
BANKCON0 = (*(volatile unsigned long *)(0x48000004));
void bank0_tacc_set(int val)
{
    BANKCON0 = val << 8;
}

3.測試:

int main(void)
{
    unsigned char c;

    uart0_init();//參考前面的uart編程
    puts('Enter the Tacc val: nr');

    while(1)
    {
        c = getchar();
        putchar(c);
        if (c >= '0' && c <= '7')
        {
            bank0_tacc_set(c - '0');
            led_test();//跑馬燈代碼我就不貼了,誰都會
        }
        else
        {
            puts('Error, val should between 0~7nr');
            puts('Enter the Tacc val: nr');
        }
    }
    return 0;
}

實驗效果:

輸入0~4,Tacc小于70ns,無法讀取Nor Flash上數據,LED不能閃爍。

輸入5~7,Tacc大于70ns,可以讀取Nor Flash上數據,LED不斷閃爍,且值越小越快。

結論:我們的內存控制器默認配置的tacc一般都能兼容大多數市面上的norflash,一般都是可以訪問的,無需進行對內存控制器進行多余的配置。


引用地址:s3c2440裸機-Norflash2-適配訪問時序

上一篇:s3c2440裸機-norflash3-uboot中操作norflash
下一篇:s3c2440裸機-NorFlash1-原理

推薦閱讀最新更新時間:2025-03-25 06:42

s3c2440裸機-nandflash編程(二. nand控制器和nand訪問時序
一.Steppingstone 我們知道nand沒有獨立地址線,cpu無法直接訪問nand上的指令,所以nand不能片上執行。那么為何程序還能支持nand啟動的呢? 為了支持NAND啟動,S3C2440A配備了一個稱為“ Steppingstone”的內部SRAM緩沖區,容量為4K。 開機時,Nandflash中的前4K數據將被加載到Steppingstone中,而引導代碼將被加載到SRAM中將被執行,如下圖所示: 我們知道s3c2440支持2種boot方式,nand或者nor,那么需要配置OM引腳來設置引導方式,如下圖: 內存控制器的地址映射表如下: 我們得知OM1接地,OM0接了一個開關SW2,那么我們的OM
[單片機]
<font color='red'>s3c2440</font><font color='red'>裸機</font>-nandflash編程(二. nand控制器和nand<font color='red'>訪問</font><font color='red'>時序</font>)
s3c2440裸機-I2c編程-4-i2c中斷服務程序
1.順尋訪問(Page Read) 下圖的表格,來說明NAND FLASH內部結構,前面2K(0~2047)表示頁數據,后邊64字節(2048~2111)表示oob。 CPU想讀取,第2048個數據,它是哪以一個? 是Page1的第0個字節。CPU使用某個地址訪問數據的時候,是在頁數據空間來尋址的。 下圖為讀NAND FLASH的read時序操作: 1.首先需要鎖存00命令,nCE、CLE、nWE有效,0x00命令被鎖存; 2.此時CLE無效,ALE開始有效,地址被鎖存(從NAND FLASH的地址周期中可以看出來,先發出2個周期的col列地址,再發出3個周期的Row行地址); 3.鎖存0x30命令; 4.然后會有
[單片機]
s3c2440裸機-UART編程(二、UART編程實現)
UART編程 1.初始化 我們的2440支持3個UART串口,以uart0為例講解。 那么我們需要實現以下這幾個函數完成串口的最基本功能: (1)uart0_init()用于初始化串口 (2)putchar()用于發送一個字符 (3)getchar()用于接收一個字符 (4)puts()用于發送一串字符 1.uart0_init() 1.配置uart0引腳 (1)根據原理圖GPH2,3用于TxD0, RxD0。 (2)查看dataset,配置GPH控制寄存器,讓GPH2,3配成uart模式;為了將其保持為高電平,先設置其為上拉。 GPHCON &= ~((3 4) | (3 6)); GPHCON |= ((2 4) | (
[單片機]
<font color='red'>s3c2440</font><font color='red'>裸機</font>-UART編程(二、UART編程實現)
s3c2440裸機-LCD編程(二、LCD控制器)
1.LCD控制器框圖 從上圖看出,S3C2440 LCD控制器用于傳輸視頻數據并且生成必要的控制信號,如VFRAME,VLINE,VCLK,VM等。除了控制信號,S3C2440還有視頻數據端口,即VD 。通過設置REGBANK(寄存器組),LCDCDMA會自動(無需CPU參與)把內存上FrameBuffer里的數據,通過VIDPRCS發送到引腳VD 數據總線上,再配合VIDEOMUX引腳的控制信號,正確的顯示出來。 REGBANK:具有17個可編程寄存器組和256x16調色板存儲器,用于配置LCD控制器。 TIMEGEN:產生控制信號,例如 VSYNC、HSYNC、VCLK等信號 LCDCDMA:可以自動從FrameBuff中
[單片機]
<font color='red'>s3c2440</font><font color='red'>裸機</font>-LCD編程(二、LCD控制器)
s3c2440裸機觸摸屏
1.0、觸摸屏與LCD 觸摸屏與lcd是兩個獨立的屏,但是他們之間有對應關系,簡單的說就是一個觸摸屏的坐標點對應lcd的一個像素點,這樣當我們按下觸摸屏后,系統通過計算得到該地方的坐標,然后通過對應關系找到相應位置的lcd顯示的內容。因為觸摸屏和lcd是獨立的,總是因為一些物理的原因會有一些位置上的改變,所以這種對應關系不是不變的,我們可以通過開機的時候的校驗來確定這種關系,比如 LCD上每個點PD的坐標為 ,觸摸屏上每個點PT的坐標為 。要實現觸摸屏上的坐標轉換為LCD上的坐標,需要下列公式進行轉換: XD=A×XT+B×YT+C YD=D×XT+E×YT+F 這樣我們只有確定了ABCDEF六個參數我們就可以
[單片機]
S3C2440開發板裸機程序系列06—LCD控制器
1.概述 S3C2440對LCD的支持還是很強大的,有廣度有深度,這里只簡單學一種,后續有精力再實踐各種模式。 本篇從顯示模式、顯示時序、硬件連接、控制器寄存器設置等幾個方面進行展開。 2.LCD顯示模式 如前面所述,S3C2440支持多種灰度和彩色顯示模式。這里只介紹16BPP(bit per pixel),即每個像素點用16bit,即占用2個字節。16BPP又有2種顯示格式:5:6:5格式和5:5:5:1格式。 這里只以565格式為例。從上圖可清楚的明白RGB三色對應的各位的對應關系。 3.LCD顯示時序 LCD采用”之”字掃描,從左上角開始,將顯示像素數據一行一行的顯示到屏幕上,對于4.3
[單片機]
<font color='red'>S3C2440</font>開發板<font color='red'>裸機</font>程序系列06—LCD控制器
S3C2440裸機------LCD_LCD控制器介紹
1.LCD控制器的功能 LCD控制器主要完成兩個工作: 取數據:把framebuffer的地址告訴LCD控制器,bpp,分辨率。 發數據: 把時序告訴LCD控制器、設置引腳的極性。 2.LCD控制器框圖 我們的LCD控制器中的LCDDMA會從內存中把數據取出來,然后發送給LCD,我們通過設置寄存器來控制LCD控制器發出合適的時序。 3.LCD像素數據格式 如果像素數據使用8bpp,那么會用到一個調色板的概念, 4.LCD控制器時序圖
[單片機]
<font color='red'>S3C2440</font><font color='red'>裸機</font>------LCD_LCD控制器介紹
s3c2440裸機開發調試環境(MDK4.6,Jlink v8,mini2440)
用于arm裸機程序開發的IDE基本有 以下3個:MDK,IAR,還有ADS。具體它們的具體情況在這里我就不多說了,百度一下就明白了。由于之前開發c51,stm32時候都使用了MDK開發環境,而且MDK的界面確實看起來舒服多了,所以我選擇了MDK作為我的s3c2440裸機開發的IDE。以下主要介紹一下如何使用MDK配合J-link來調試基于s3c2440的開發板。 首先,我們需要下載的有以下2樣: MDK J-link 驅動 我的開發環境:windows 7 64位,J-linkv8,mini2440開發板一塊。最后選擇了:MDK4.6版本,J-ink v8的當前最新版本J-linkARM v4.56。 MDK的大部
[單片機]
<font color='red'>s3c2440</font><font color='red'>裸機</font>開發調試環境(MDK4.6,Jlink v8,mini2440)
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 临沂市| 广宁县| 万安县| 珠海市| 中超| 桐梓县| 绥滨县| 西林县| 伊宁市| 九龙坡区| 宝坻区| 高安市| 武平县| 湘阴县| 九龙县| 浪卡子县| 儋州市| 娄烦县| 三台县| 曲松县| 嵊泗县| 汝州市| 宜君县| 那坡县| 临沭县| 祁东县| 冕宁县| 炉霍县| 普洱| 静宁县| 定安县| 富阳市| 中宁县| 固镇县| 田林县| 乌什县| 杭州市| 北碚区| 大埔区| 七台河市| 奉新县|