天天看點

如何根據晶片手冊時序圖編寫驅動程式

如何根據晶片手冊時序圖編寫驅動程式

對于電子開發者來說,剛剛拿到一個晶片,常用的晶片可以參考網上的例程來做深入了解,對于一個不常用的晶片來說,Datasheet幾乎是使用晶片的唯一的資料,是以根據Datasheet時序圖寫出對應的驅動程式就尤為重要。

本文根據一個簡單的例子來闡述根據時序圖來編寫對應的程式過程。旨在講解對于初學者應該怎麼利用晶片的時序圖編寫符合要求的底層驅動程式(老鳥請跳過)。

下載下傳晶片的Datasheet,(個人常用http://www.21icsearch.com/)如果晶片使用的是标準的I2C、SPI、UART、1-WIRE等協定,那麼直接使用現成的程式代碼就行,滿足速度的情況下模拟的硬體的怎麼都行,(能抓老鼠的都是好貓,管他什麼顔色)。

如果晶片采用的讀寫資料協定并不是常用的通信協定,比如ADC0809這樣子的,廠家會提供一個時序圖,通常情況下,這時候我們會采用單片機的IO口模拟來對晶片進行控制。就是這樣子的圖啦

如何根據晶片手冊時序圖編寫驅動程式

有了這個圖我們就能夠根據它來編寫驅動程式。

如何根據晶片手冊時序圖編寫驅動程式

其次,要清楚晶片與單片機的接線方式,千萬不要小看這一步,接線錯誤導緻程式沒調出來是很難發現的。有時候線接錯了還一個勁的改程式。話說這種蠢事情自己幹了就行,千萬不要說。

如何根據晶片手冊時序圖編寫驅動程式

然後,讀懂時序圖,本例中TLV5619共有4個端口(不是4個引腳),TLV5619是一個2.7 V TO 5.5 V 12-BIT PARALLEL DIGITAL-TO-ANALOG CONVERTER WITH POWER DOWN(2.7V到5.5V 12位帶關斷功能的并行DAC)。

如何根據晶片手冊時序圖編寫驅動程式

按照要求連接配接好線路之後,就要對單片機IO口進行初始化,配置端口的輸入輸出模式,有時候還會配置上拉下拉等等,不要搞錯了,這些準備工作都做好了之後,就正式開始看時序圖了。

時序圖故名思意就是時間順序圖,簡單點說就是按照時間順序資料和控制信号按照要求變化就是了,這裡提供本人看時序圖的一種方法,自稱“掃描法”,就是用一個豎直的軸從左往右掃描,掃到誰 誰就變。

如何根據晶片手冊時序圖編寫驅動程式

本例中 我們看看初始狀态,可以看出控制信号/WE、/CS、和/LDAC都是應該置‘1’,是以程式開始就應該确定端口的初始狀态。是以程式開始就是/WE、/CS、和/LDAC置‘1’ 記為狀态0 

如何根據晶片手冊時序圖編寫驅動程式

接着就是/CS拉低開始時序圖的第一步 程式中描述就是 CS_L;  記為狀态1

類似的把每個狀态的每一端口的變化都标出來 如圖

如何根據晶片手冊時序圖編寫驅動程式

随着時間順序,依次完成狀态0到狀态9的轉換

每個狀态對應的代碼如下圖

如何根據晶片手冊時序圖編寫驅動程式
如何根據晶片手冊時序圖編寫驅動程式

最後,将代碼整理一下做成函數。

整理出來的代碼就是這樣子啦

如何根據晶片手冊時序圖編寫驅動程式