圖5 One-wire總線復(fù)位和應(yīng)答時(shí)序
SPI是全雙工的,即數(shù)據(jù)的發(fā)送和接收可同時(shí)進(jìn)行。如果僅對(duì)從器件寫數(shù)據(jù),主器件可以丟棄同時(shí)讀入的數(shù)據(jù);反之,如果僅讀數(shù)據(jù),可以在命令字節(jié)后,寫入任意數(shù)據(jù)。數(shù)據(jù)傳送以字節(jié)為單位,并采用高位在前的格式。SPI接口的通信程序可簡(jiǎn)化的:寫讀N字節(jié)子程序。
2.3 Microware串行通信接口
NS公司的Microware是串行同步雙工通訊接口,由一根數(shù)據(jù)輸出線、一根數(shù)據(jù)輸入線和一根時(shí)鐘線組成。所有從器件的時(shí)鐘線連接到同一根SK線上,主器件向SK線發(fā)送時(shí)鐘脈沖信號(hào),從器件在時(shí)鐘信號(hào)的同步沿輸出/輸入數(shù)據(jù)。主器件的數(shù)據(jù)輸出線DI和所有從器件的數(shù)據(jù)輸入線相接,從器件的數(shù)據(jù)輸出線都接到主器件的數(shù)據(jù)輸入線DO上。與SPI接口類似,每個(gè)從器件也都需要另外提供一條片選通線CS(注意:它采用高選通方式)。
圖4給出了主器件對(duì)從器件操作的基本時(shí)序,包括寫起始位、寫操作碼和讀字節(jié),數(shù)據(jù)交換采用高位在前的格式。圖4中給出了讀兩個(gè)字節(jié)時(shí)的情況,在主器件寫完起始位和操作碼后,從器件會(huì)應(yīng)答一個(gè)“0”。該應(yīng)答位在主器件寫完操作碼的最后一位時(shí)給出。在本文中,主器件速度較慢,可以不考慮等待該閏。Microware接口的通用子程序有:?jiǎn)?dòng)子程序,讀N字節(jié)子程序、寫N字節(jié)子程序。不同的Microware器件支持的起始位、操作碼有所不同,但可人為組成合適的字節(jié)。
2.4 One-wrie總線
One-wire總線是DALLAS公司研制開發(fā)的一種協(xié)議。它由一個(gè)總線主節(jié)點(diǎn)、一個(gè)或多個(gè)從節(jié)點(diǎn)組成系統(tǒng),通過一根信號(hào)線對(duì)從芯片進(jìn)行數(shù)據(jù)的讀取。每一個(gè)符合One-wire協(xié)議的從芯片都有一個(gè)唯一的地址,包括48位的序列號(hào)、8位的家庭代碼和8位的CRC代碼。主芯片對(duì)各個(gè)從芯片的尋找依據(jù)這64位的不同來進(jìn)行。
圖6 one-wire總線位寫和位讀時(shí)序 圖7 one-wire總線寫一個(gè)字節(jié)時(shí)序圖
在復(fù)位及應(yīng)答時(shí)序中,主器件復(fù)位信號(hào)后,要求從器件在規(guī)定的時(shí)間內(nèi)送回應(yīng)答信號(hào);在位讀和位寫時(shí)序中,主器件要在規(guī)定的時(shí)間內(nèi)讀回或?qū)懗鰯?shù)據(jù)。為了與其它模擬接口的子程序在結(jié)構(gòu)形式上盡量一致,在One-wire模擬時(shí)序程序中把位讀和位寫時(shí)序拓延,形成像位在前的字節(jié)讀寫時(shí)序,寫個(gè)字節(jié)的時(shí)序如圖7所示。最終形成三個(gè)字程序;復(fù)位及應(yīng)答子程序、寫N個(gè)字節(jié)子程序和讀N個(gè)字節(jié)子程序。
2.5 下位機(jī)軟件
從功能上來說,下位機(jī)軟件的作用是接收位機(jī)發(fā)出的命令,分析命令,根據(jù)命令對(duì)各時(shí)序子程序進(jìn)行組合和調(diào)用,形成正確的訪問地序邏輯;如果有返回?cái)?shù)據(jù),還要將返回?cái)?shù)據(jù)回送上位機(jī)顯示。前面已經(jīng)對(duì)四種串行接口的模擬時(shí)序子程序進(jìn)行了簡(jiǎn)要介紹,由于篇幅所限,無(wú)法對(duì)每個(gè)子程序進(jìn)行詳細(xì)的說明,進(jìn)一步的時(shí)序說明,可以查閱有關(guān)的參考文獻(xiàn)和相關(guān)手冊(cè)。這里只給出下位機(jī)軟件總體流程,如圖8所示。有關(guān)上位的命令在上位機(jī)與其通信的協(xié)議中介紹。
圖8 下位機(jī)軟件流程圖
3 上位機(jī)通信軟件的實(shí)現(xiàn)
上位PC機(jī)作為人機(jī)交互界面,負(fù)責(zé)向下位機(jī)發(fā)送經(jīng)過人工分析的數(shù)據(jù)字節(jié),這為開發(fā)者提供了對(duì)芯片的透明操作。即在對(duì)某一類芯片進(jìn)行操作時(shí)并不關(guān)心中間具體的過程,只須分析數(shù)據(jù),形成相應(yīng)的數(shù)據(jù)幀,發(fā)送給下位機(jī),即可完成對(duì)芯片的操作。上位機(jī)將操作的芯片分成四類(I2C、SPI、Microware、One-wire),用一個(gè)字節(jié)進(jìn)行標(biāo)識(shí)(0、1、2、3)。如果只進(jìn)行寫操作,則上位機(jī)發(fā)送完寫入字節(jié)后,不操作;如果進(jìn)行讀操作,需重新設(shè)定發(fā)送的字節(jié)并等待下位機(jī)返回的數(shù)據(jù)字節(jié)。在Microware和One-wire協(xié)議中須發(fā)送起始位或復(fù)位信號(hào)的地方可以用特殊字節(jié)標(biāo)識(shí)。上位機(jī)向下位發(fā)送的數(shù)據(jù)幀由起始字節(jié)、通信選定字節(jié)、讀/寫命令字節(jié)、字節(jié)數(shù)和數(shù)據(jù)字節(jié)組成。圖9給出了在讀和寫兩種情況下,上位機(jī)發(fā)送的數(shù)據(jù)幀和下位機(jī)返回?cái)?shù)據(jù)幀的組成。
本文討論的芯片級(jí)串行總線擴(kuò)展應(yīng)用研發(fā)平臺(tái)在實(shí)際應(yīng)用中取得了良好的效果,縮短了新器件功能測(cè)試的時(shí)間,縮短了新產(chǎn)品的開發(fā)周期,并可根據(jù)需要增加串行接口種類。另外,這一平臺(tái)也為初學(xué)者全面了解串行擴(kuò)展技術(shù)提供了良好的途徑。





