嵌入式編程之時序圖講解


嵌入式編程之時序圖講解

  對於芯片驅動的編寫,需要嚴格按照芯片手冊上的時序圖上的定義。看懂時序圖這是每個合格嵌入式軟件工程師都要掌握的基本技能,為此特意找到下面這個例子,用這個例子介紹時序圖還是比較直觀的。

圖中時序線的名稱及作用

    RS:數據/狀態字選擇線 RS = L:傳輸狀態字 RS = H:傳輸數據;

    RW:讀/寫操作選擇線 RW = L:寫狀態 RW = H:讀狀態;

    E:片選 E = L:芯片處於關閉狀態 E = H:芯片處於使能狀態;

    DB:數據傳輸總線;

圖中標注處說明

    1處:高電平;

    2處:低電平;

    3處:包含了高低線,控制線代表配置為高低均可,數據線代表傳輸的是數據;

    4處:豎線代表的是生命線,代表一個對象在一段時間內的存在;

    大家仔細觀察會發現有很多t開頭的標注,這些標注是非常重要的,時序圖是一定要有時間定義的。下圖為時序圖的時序參數,在編寫代碼的時候一定要參照圖中定義的時間。

 

時序圖讀操作編程

 

INT8U ReadData(void)

{

    INT8U iResult;

    E = L;           /* 芯片處於關閉狀態 */

    RS = H;         /* 選擇傳輸數據模式 */

    RW = H;         /* 選擇讀操作 */

    DelayNS(30);       /* tSP1 最小值:30ns 注意:在這里這么寫只想讓大家對時間概念深刻記憶一下, 根據控制器的執行速度可以省略掉,在很多單片機中一條指令執行時間大於30ns*/

    E = H;           /* 芯片使能 tR 代表IO口翻轉速度,速度取決於控制器硬件性能 */

    DelayNS(30);     /* tD為數據建立穩定時間,最大為100ns */

    iResult = DB;     /* 讀出數據,DB代表的是實際控制器數據IO口 */

    DelayNS(120);    /* tPW為片選信號的保持時間 */

    E = L;           /* 關閉芯片,停止數據讀取 */

    DelayNS(10);     /* tHD1為地址信號的保持時間 */

    RS = L;

    RW = L;

    return iResult;

}

 

轉自:https://blog.csdn.net/snail_turbo/article/details/20568237


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM