如何為數字溫度傳感器選擇系統接口
圖2:SPI 典型讀/寫(xiě)周期
圖3:(a)I2C總線(xiàn)/SMBus系統接口;(b)SPI 系統接口
I2C 是一種二線(xiàn)制串行總線(xiàn)接口,工作在主/從模式。二線(xiàn)通信信號分別為開(kāi)漏 SCL 和 SDA 串行時(shí)鐘和串行數據。主器件為時(shí)鐘源。數據傳輸是雙向的,其方向取決于讀/寫(xiě)位的狀態(tài)。每個(gè)從器件擁有一個(gè)唯一的 7 或 10 位地址。主器件通過(guò)一個(gè)起始位發(fā)起一次傳輸,通過(guò)一個(gè)停止位終止一次傳輸。起始位之后為唯一的從器件地址,再后為讀/寫(xiě)位。
I2C總線(xiàn)速度為從0Hz到3.4MHz。它沒(méi)有SPI 那樣快,但對于系統管理器件如溫度傳感器來(lái)說(shuō)則非常理想。I2C 存在系統開(kāi)銷(xiāo),這些開(kāi)銷(xiāo)包括起始位/停止位、確認位和從地址位,但它因此擁有流控機制。主器件在完成接收來(lái)自從器件的數據時(shí)總是發(fā)送一個(gè)確認位,除非其準備終止傳輸。從器件在其接收到來(lái)自主器件的命令或數據時(shí)總是發(fā)送一個(gè)確認位。當從器件未準備好時(shí),它可以保持或延展時(shí)鐘,直到其再次準備好響應。
I2C允許多個(gè)主器件工作在同一總線(xiàn)上。多個(gè)主器件可以輕松同步其時(shí)鐘,因此所有主器件均采用同一時(shí)鐘進(jìn)行傳輸。多個(gè)主器件可以通過(guò)數據仲裁檢測哪一個(gè)主器件正在使用總線(xiàn),從而避免數據破壞。由于 I2C總線(xiàn)只有兩條導線(xiàn),因此新從器件只需接入總線(xiàn)即可,而無(wú)需附加邏輯。圖4 顯示了典型的 I2C總線(xiàn)讀/寫(xiě)操作。
圖4:I2C總線(xiàn)/SMBus的典型讀/寫(xiě)操作
SMBus是一種二線(xiàn)制串行總線(xiàn),1996年第一版規范開(kāi)始商用。它大部分基于I2C總線(xiàn)規范。和 I2C一樣,SMBus不需增加額外引腳,創(chuàng )建該總線(xiàn)主要是為了增加新的功能特性,但只工作在100kHz且專(zhuān)門(mén)面向智能電池管理應用。它工作在主/從模式:主器件提供時(shí)鐘,在其發(fā)起一次傳輸時(shí)提供一個(gè)起始位,在其終止一次傳輸時(shí)提供一個(gè)停止位;從器件擁有一個(gè)唯一的7或10位從器件地址。
SMBus與I2C總線(xiàn)之間在時(shí)序特性上存在一些差別。首先,SMBus需要一定數據保持時(shí)間,而 I2C總線(xiàn)則是從內部延長(cháng)數據保持時(shí)間。SMBus具有超時(shí)功能,因此當SCL太低而超過(guò)35 ms時(shí),從器件將復位正在進(jìn)行的通信。相反,I2C采用硬件復位。SMBus具有一種警報響應地址(ARA),因此當從器件產(chǎn)生一個(gè)中斷時(shí),它不會(huì )馬上清除中斷,而是一直保持到其收到一個(gè)由主器件發(fā)送的含有其地址的ARA為止。SMBus只工作在從10kHz到最高100kHz。最低工作頻率10kHz是由SMBus超時(shí)功能決定的。 (end)
評論