IIC總線在LonWorks神經元芯片F(xiàn)T3150中的應用
目前比較常用的串行總線有:IIC(Inter Integrated Circuit)總線、SPI(Serial Periphcral Interface)總線和Micro-wire總線等。其中,IIC總線是Philips公司于80年代推出的一種二線制總線,它通過一根串行數據線(SDA))和一根時鐘線(SCL)在互連的器件間傳輸信息。這對具有有限個I/O引腳的神經元芯片來說,節(jié)約了I/O引腳開銷,方便了系統(tǒng)進一步擴展。
LonWorks總線為用戶提供了一個針對實際工程應用的神經元芯片--Neuron芯片。Neuron芯片高度集成,所需外部器件較少。它包含3個處理七層LonTalk協(xié)議的8位處理器,即媒體訪問控制處理器、網絡處理器和應用處理器。芯片內部有11個通用I/O引腳,根據實際需要對11個引腳進行編程,形成多達34種不同類型的I/O功能,包括并行I/O、串行I/O、定時/計數器等等。一個Neuron芯片可連接一個或多個物理I/O設備,如溫度和位置傳感器、閥門、開關以及LED。神經元芯片同件通過執(zhí)行特定的I/O對象來管理這些設備的接口。Neuron芯片分為3150和3120兩類,Neuron3150支持外部存儲器,適合更復雜的應用,而Neuron3120本身帶有ROM,不支持外部存儲器。
美國Echelon公司新推出了新的神經元芯片--自由拓撲智能收發(fā)器FT3150如圖1所示。FT3150是在Neuron 3150處理器的基礎上集成了一個自由拓撲雙絞線收發(fā)器,既降低了成本,又減小了接口電路功耗。FT3150芯片內部有2kBRAM和0.5kB EEPROM存儲器,通過對外引出地址及數據總線用戶可方便地擴展RAM數據存儲器和flash固件、程序存儲器,總擴展存儲器空間最多為64k。FT3150 芯片服務引腳主要用于節(jié)點配置、安裝與維護。與FT3150配合使用的是Echelon公司的FT-X1(穿孔)或者FT-X2(表面貼)通信變壓器,對電磁干擾和高頻共膜噪聲有較強的抗干擾能力。這使得LonWorks神經元芯片F(xiàn)T3150達到一個更高性能、更穩(wěn)定、更經濟的新層次。
IIC總線技術
IIC總線是微電子通信控制領域中被廣泛采用的一種總線標準,具有接口線少,控制方式簡單、器件封裝外形小、通信速率高等特點。它僅通過兩根線SDA和SCL即可實現(xiàn)完善的全雙工同步數據傳送,能夠十分方便地構成多主機系統(tǒng)和外同器件擴展系統(tǒng)。
IIC總線數據傳輸只有任總線處于空閑狀態(tài)時(SCL和SDA必須保證為高電平)才啟動。IIC總線協(xié)議定義數據傳輸時序如圖2所示,起始條件為當SCL為高電平時,SDA由高電平向低電平跳變,數據開始傳輸;結束條件為當SCL為低電平時,SDA由低電平向高電平跳變,數據傳輸結束。傳輸過程中,當SCL高時,SDA必須始終保持穩(wěn)定狀態(tài),此時出現(xiàn)任何跳變都被認為是起始或停止條件,只有當SCL為低電平的時候才允許SDA上的數據改變。
IIC總線上的數據格式如圖3所示,由起始位(S)、從機地址碼、讀寫控制位(R/W)、應答位(A)、數據和停止位(P)等組成。通信啟動時,主器件先發(fā)送啟動信號和從機地址,總線上每個器件都有自己的唯一地址,與地址與某一從器件相匹配時,該從器件發(fā)一應答位,主器件則認為尋址成功,然后根據R/W位確定的數據傳送方向進行數據傳輸。若主器件長時間收不到應答位,則認為超時,放棄本次數據傳輸。通信停止時,主機發(fā)送一個停止信號。
FT3150的IIC總線技術應用
神經元芯片F(xiàn)T3150所支持的串行I/O功能包括:Bitshift、IIC和Neuronwire(SPI)等。IIC I/O用于實現(xiàn)FT3150芯片與遵循IIC串行總線規(guī)約的器件相連。由于IIC總線是各種總線通信中使用信號線最少,并具有自動尋址,多主機時鐘同步和仲裁等強大的功能,因此,使用IIC設計計算機系統(tǒng)十分方便、靈活,體積也小,各類實際應用比較廣泛。
數據通信的硬件連接
FT3150一般總是主控器,它定義108(14腳)管腳為時鐘線(SCL),109(15腳)管腳為串行數據線(SDA),或者100(2腳)管腳為時鐘線(SCL),IO1(3腳)管腳為串行數據線(SDA)。這些IO線的漏極開路以滿足IIC規(guī)約的特殊需要。實際Neuron芯片與IIC器件的連接,只需存引腳上增加兩個上拉電阻,而不再需要其他外部元件。
我們在開發(fā)LonWorks智能電動閥門時,采用EEPROM24WC16作為FT3150芯片讀寫數據的存儲器,用來記錄歷史數據,防止掉電丟失。24WC16是采用CMOS工藝制成的2K*8位的電可擦除存儲器,內部存儲空間共分8頁,具體讀寫頁數由其串行總線地址的最低三位A0、A1和A2決定,每頁最多可存儲256字節(jié)數據。為了實現(xiàn)FT3150芯片與24WC16的通信,將神經元芯片上IIC總線引腳IO9與24WC16的SDA相接,IO8與24WC16的SCL相接,通過編程產生操作時序從而實現(xiàn)FT3150芯片對24WC16有關寄仔器的寫入和讀出。值得注意的是:由于IO8和IO9都是硬件開漏狀態(tài),為了避免端口吸收太大的電流,數據總線SDA和時鐘總線SCL一定要接足夠大的上拉電阻。24WC16與FT3150芯片硬件連接如圖4所示。
數據通信的軟件編程
FT3150與24WC16通信的軟件編程采用專門為LonWorks神經元芯片沒計的的Neuron C。Neuron C是從ANSI C中派生出來的并進行了增刪,它的擴展直接支持神經元芯片的固件。Neuron C的編程主要是神經元芯片的事件凋度、I/O事件、網絡變量和顯式消息等。
IIC數據傳輸中的控制字R/W位由io_in()/io_out()函數隱式給出。同時,數據傳輸時需要一個計數參數對讀/寫的數據字節(jié)數進行控制,但一次最多讀/寫255個字節(jié)。IIC總線尋址采用右對齊的7位設備地址,對24WC16器件的8位地址:1010000R/W,則尋址的IIC器件地址為:01010000,即0x50。對于IIC輸入/輸出,io_in()和io_out()函數返回值0和1,分別反映傳輸的失敗(0)和成功(1)狀態(tài)。
FT3150與24WC16進行數據讀寫過程如下:首先把采集到的一個8個字節(jié)數據寫入24WC16中指定的寄存器,然后再讀回已保存的數據。源程序如下:
評論