基于多機(jī)并口協(xié)議的多機(jī)通信
當(dāng)進(jìn)行遠(yuǎn)距離傳輸時(shí),一般采用異步串口,而近距離傳輸時(shí)可以采用并行口和同步串口。同步串口雖然速度低,但信號線少,用于低速小容量數(shù)據(jù)傳輸;并行口的傳輸速度較高,但信號線較多,用于高速大容量數(shù)據(jù)傳輸。
本文在一般雙向并口通信的基礎(chǔ)上,參考多種單片機(jī)的總線接口,提出了簡單易行的多機(jī)并口協(xié)議,實(shí)現(xiàn),多個(gè)單片機(jī)之間的高速數(shù)據(jù)通信。該協(xié)議占用信號線少,操作簡單。
1 多機(jī)并口通信協(xié)議
多機(jī)并口協(xié)議,規(guī)定了數(shù)據(jù)信號和控制信號,實(shí)現(xiàn)了3種總線操作模式,定義了總線操作時(shí)序。
多機(jī)并口協(xié)議,定義了SET、A/D、W/R、D0~D7共11根信號線。其中:SET為寫入控制,主機(jī)或從機(jī)在下降沿將地址或數(shù)據(jù)發(fā)送到雙向并口D0~D7;W/R為讀/寫控制,W/R=0時(shí)表示主機(jī)讀從機(jī),W/R=1時(shí)表示主機(jī)寫從機(jī);A/D為地址/數(shù)據(jù)選擇控制,A/D=0時(shí)表示傳送數(shù)據(jù),A/D=1時(shí)表示傳送地址;DO~D7為雙向數(shù)據(jù)地址總線,配合W/R和A/D進(jìn)行地址和數(shù)據(jù)的雙向傳輸。通過W/R和A/D控制信號,實(shí)現(xiàn)了3種總線操作模式,如表1所列。
2 協(xié)議的單片機(jī)模擬
用單片機(jī)實(shí)現(xiàn)并口協(xié)議時(shí),主機(jī)工作在查詢方式,從機(jī)工作在中斷方式,從機(jī)的SET信號必須接到從機(jī)的外部中斷引腳。
控制位邏輯值的定義:
#defincREAD O
#dcfine WRIT l
#define DATA O
#define ADDR 1
2.1 主機(jī)并口協(xié)議程序
主機(jī)的多機(jī)并口信號線町以使用單片機(jī)的任意1個(gè)雙向并口和任意3根I/O,主機(jī)在查詢方式下主動(dòng)與從機(jī)通信,對從機(jī)數(shù)據(jù)進(jìn)行讀/寫。通過調(diào)用延時(shí)函數(shù)delay(),使主機(jī)和從機(jī)實(shí)現(xiàn)對SPI傳輸速度的控制。用戶程序只須調(diào)用PPI_ReadBuf()和PPI_WritBuf()函數(shù)可以對從機(jī)數(shù)據(jù)進(jìn)行讀/寫。
2.2 從機(jī)并口協(xié)議程序
從機(jī)多機(jī)并口信號線中A/D和W/R可以使用單片機(jī)的任意I/O,為DO~D7分配一個(gè)雙向并口,但SET必須使用INT引腳.本設(shè)計(jì)使用了INTO引腳。從機(jī)的多機(jī)并口協(xié)議在中斷服務(wù)程序中實(shí)現(xiàn),在中斷中配合主機(jī)實(shí)現(xiàn)數(shù)據(jù)的讀寫協(xié)議。本例中,數(shù)據(jù)存于buf緩沖區(qū)中。
結(jié)語
本文提出的并口協(xié)議實(shí)現(xiàn)了單片機(jī)之問的多機(jī)通信,該程序已在實(shí)際中得到應(yīng)用。該協(xié)議可以在含有外部中斷的單片機(jī)上實(shí)現(xiàn),也可用于CPLD上實(shí)現(xiàn)與單片機(jī)的通信。該方法簡單、可靠、成本低,有著較高的推廣價(jià)值。
評論