串列IO擴充使用-74HC4094

在使用MCU時常常會遇到一個問題就是GPIO不夠用,

通常一次要控制很多東西的時候往往會很傷腦筋,

以前有嘗試使用過一些解碼IC去增加IO腳不過解碼IC再怎麼解也只有一定數量

但是真的一次要有一二十支IO的話還真的不是那麼簡單

這次順便記錄一下關於串列IO的用法跟一些注意事項

市面上有很多種串列IO的IC,

不過首先要注意的是串列IO在應用時會有效率比較差的問題,畢竟是串列

沒有辦法向並列輸出入一樣,可以一次同時丟很多跟接收很多

串列IO通常都是一個bit一個bit的來。

我比較常用的是74HC4094與74HC166這兩顆

首先先來看74HC4094 (這是Datasheet)

這顆4094主要的用途是用來當Output腳,

他可以串列的方式依序將資料用"Shift"的方式輸出至QP0~QP7

I.腳位定義

1.STR    > strobe input 選通腳 > 輸入

2.D        > data in 資料輸入腳    > 輸入

3.CP      >  clock inpu 時脈輸入 > 輸入

4.QP0~QP7  >  parallel outpu IO輸出腳  > 輸出

5.OE     > output enable input 致能輸出 > 輸入

6.QS1,2  >  serial outpu 串列輸出 > 輸出

7.GND    > 電源地

8.VCC     > 正電源

 

II.時序圖

 

打個岔,通常我再用4094的時候我通常只會使用PIN1(STR),與PIN2(D),PIN3(CP)

只要有這三腳就可以控制4094了

如果要串聯多顆4094時則使用PIN10(QS2)做串聯

主要的動作流程可以參考時序圖,或者參考我的白話文解說(繼續往下看)

 

III.範例電路

 

DATA > 欲傳送的資料由Data輸入

CLK > 時脈輸入腳

STR > 動作致能腳

QS2 > 用來串聯下一顆4094

上圖是要輸出一個2byte資料的範例,

假設今天要送出11010011 00110101

首先需要先將STR腳設為High

在由最高byte的最高bit先送,依序將1>1>0>1>0>0>1..設定到DATA腳中

如DATA為1時則為High,0時則為Low

每送1個bit時,則CLK做High Low變化一次,再送入第二個bit

當CLK震盪一次時,會將DATA腳的狀態Shift出去,所以在CLK變化前

要先設定好DATA腳狀態,依此類推,直到送完16個bit

此時U40的Q8應為High,Q7為High,Q6為Low....

完畢後再將STR重新設定為Low

註:只有STR腳為High與OE腳為High時CLK動作時才會Shift資料

 

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料