硬件時序圖


作者:jason
鏈接:https://www.zhihu.com/question/326205733/answer/700104095
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

我將從以下三個步驟大致說下如何看芯片的時序圖,以及如何根據時序圖寫程序,畢竟看懂都是為了應用.

(1) 介紹常見的時序圖圖形,以及圖形表達含義。

(2) 解釋LCD1602時序圖,及如何根據時序圖寫程序

(3) 解釋I2C 時序圖,及如何根據時序圖寫程序。

 

一 時序圖圖形含義

以下我列下我們在時序圖中經常見到的一些圖形,因為名稱也沒有標准,我就用常用名稱來表示

1.1 方波

這樣的圖形常用來表示CLOCK (時鍾信號),通常見與時序圖的頂部

方波還常見這種格式,在時鍾上加上向上/向下的箭頭,這是用於表示 是在上升沿觸發還是在下降沿觸發.

1.2 Either or 信號暫且稱之為非此即彼信號吧.

非此即彼信號在時序圖中縱橫交錯,常常讓初學者搞不清楚,但是其意思是很簡單的,對應上面的時鍾即 表示時鍾采樣時 有可能為高,也有可能為低.常用在DATA 線上.

比如I2C 讀取設備信號時,數據信號可能為高也可能為低.

而交叉處的含義是,此刻允許數據變化.對應上面CLOCK 信號可以看出.只有當clock為低時,信號線上的數據才允許變化.當clock 為高時,數據線上要么是高,要么是低.

如果你使用過I2C ,你會知道,I2C的讀數據時就是這個樣子的.

1.3 灰色區域

灰色區域表示此處為三態,即 高電平,第電平,高阻態,或者簡單說,這段區域是啥都行,並不需要關心,這個上面的非此即彼信號不同的是,非此即彼要么是高,要么是低,不可以出現高阻態.

1.4 省略符號

以上 類似f 的圖形表示省略符號,例如我讀取falsh RAM數據,一次允許你讀出 256個字節,但時序圖上肯定放不下這么長的內容,就用省略符號來表示.

1.5 地址&數據表示

時序圖上常用A 來表示Address, D來表示Data.這個應該很好理解.

1.6 時序需要控制時間說明

 

在通訊協議中,常常標注,上升沿,下降沿,高電平,一個信號需要在另一個信號后延時多少才可以改變狀態.

以上應該是涵蓋了比較常見的時序圖中的圖形. 如有遺漏,大家可以在評論區指出,我們可以一起完善.

下面就進入實戰環節吧

二 如何對照LCD1602 時序圖寫程序

因為本問題在於詢問如何讀時序圖,我就集中在理解時序圖上面,LCD1206的具體操作不作過多描述

LCD1602的時序圖應該是最簡單的時序圖了,因此用此來講解,是最適合新手的.

且規格書中直接就給出了操作時序的說明,大家可以按照這個來理解時序圖

因為LCD1602很少用到讀功能,這里我就不再啰嗦了.

規格書中的時序說明應該是已經比較詳細的,如果你還是對此有些不甚理解的地方,,下面幾個假設性問答有可能幫助到你

A. 寫或讀時,為什么 RS 是既可以高又可以低,不應該一種狀態嗎.

取決於讀或寫的是數據還是指令,如果是指令,則為低,如果是數據則為高

B. 時序圖中如何表現出 數據被讀出/寫入呢

時序圖中DB0—DB7 出現交叉的地方,表示允許數據變化,即寫入/讀出.

C. 時序圖中,箭頭上的tsp,tpw 表示什么意思

例如tsp1 表示RS R/W 變化后,需要等待tsp1 時間,才允許E變化,tsp1 數值在規格書中一定會有表格說明的,但此處因為這些數值只有ns,寫程序時通常不會加延時.

 

三 如何按照I2C 寫程序.

同樣,這里只關心如何理解時序圖,對I2C 協議不做過多描述

1 起始位和停止位

從圖上可以看出,

Start 的條件是: 在SCL 高電平期間,SDA 從高到低變換,

Stop 的條件是: 在SCL 高電平期間,SDA 從低到高變換

2 發送數據

數據傳輸時最主要記住的是: 數據在低電平期間允許改變,而在高電平期間必須保持穩定.

發送數據時序圖

數據有效位定義.

3 讀數據

讀數據和寫是很類似的,從設備在CLK低時改變SDA 值,這樣主設備在高電平時將這個值讀回來.


免責聲明!

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



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