基于C8051F的SMBus實現智能測溫系統
時間:2006-04-21 19:52:00來源:0
導語:?本文介紹了基于C8051F的SMBus串行接口實現的智能測溫系統,利用硬件SMBus資源和具有SMBus接口
摘 要:本文介紹了基于C8051F的SMBus串行接口實現的智能測溫系統,利用硬件SMBus資源和具有SMBus接口的雙通道智能溫度傳感器MAX6654進行數據通信,并應用于智能測溫系統中。文中介紹了該系統的工作原理,并給出了軟硬件的設計思想和方法。該系統具有檢測精度高且不易受環境干擾的優點。
關鍵詞:測溫系統;智能溫度傳感器;C8051F單片機;SMBus
1 引言
C8051F005是美國Cygnal公司推出的一種高性能混合信號系統級單片機,即SOC(System on chip)。C8051F系列器件使用CYGNAL的專利:CIP-51微控制器內核。C8051F系列單片機內部有一個全雙工的UART、SPI總線以及I2C/SMBus[1]。每種串行總線都完全用硬件實現,都能向CIP-51產生中斷,因此很少需要CPU的干預。這些串行總線不共享定時器中斷或I/O端口,可以按需要使用一個或全部。本文介紹的是基于這種具有硬件實現I2C/ SMBus的單片機和具有SMBus接口的雙通道智能溫度傳感器MAX6654進行數據通信而構成的智能測溫系統。利用該系統可對PC機、筆記本電腦和服務器中CPU的溫度進行監控等[2]。
2 C8051F005的SMBus配置和信號時序
C8051F系列單片機的SMBus串行接口完全符合系統管理總線標準1.1版。SMBus接口的工作電壓可以在(3.0~5.0) V之間。總線上不同器件的工作電壓可以不同。因為SCL串行時鐘線和SDA串行數據線是雙向的,因此兩條線上都需要上拉電阻或類似電路將它們連到電源電壓,在沒有數據傳輸時,兩條線都處于高電平。典型的SMBus配置如圖1所示。SMBus采用多種線路條件作為器件的握手信號。在一次數據傳輸過程中,SDA只能在SCL為低電平時改變。在SCL為高電平時,SDA發生改變則代表如下的開始和停止信號:⑴開始。該條件啟動一次傳輸過程,當SCL為高電平時,SDA上出現一個下降沿。⑵結束。該條件結束一次傳輸過程,當SCL為高電平時,SDA上出現一個上升沿。⑶應答,也稱為ACK。接受器件發送信號表示確認。例如:在器件X收到一個字節后,它發送一個ACK,確認傳輸成功。ACK條件是在SCL為高電平時,采樣到SDA為低電平。 ⑷非應答,也稱為NACK。這是在SCL為高電平時,采樣到SDA為高電平。當接受器件不能產生ACK時,發送器件看到的是NACK。在典型的數據傳輸中,收到NACK信號,表示所尋址的從器件沒有準備好,或不在總線上。處于發送狀態的主器件發送NACK表示傳輸的最后一個字節。SMBus的握手信號時序如圖2所示。
SMBus可以工作在主方式或從方式。總線為串行傳輸提供了時序和移位控制,字節控制是用戶定義的。SMBus的工作由下列寄存器中的內容決定:SMBOSTA(狀態寄存器)、SMBOCN(控制寄存器)、SMBOADR(地址寄存器)和SMBODAT(數據寄存器)。用戶軟件是基于狀態來控制SMBus的。每當發生狀態改變時,SI(SMBus串行終端標志)位被硬件置1,并在中斷使能的情況下產生一個中斷,接著停止SMBus,直到用戶軟件完成狀態變化服務并清除SI位。SMBus操作用狀態表來定義[3]。
3 MAX6654
該芯片是美國MAXIM公司生產的雙通道智能溫度傳感器,它采用SMBus總線接口,能同時測量遠程溫度和本地溫度(即該芯片本身的環境溫度)。它具有多種工作模式可供選擇,并具有可編程的欠溫/超溫報警輸出功能[4]。
3.1 性能特點
MAX6654是一種大規模集成電路。它的主要性能特點有:⑴本地溫度和遠程溫度的測量范圍為-55~+125℃,在0~+100℃范圍內的測溫精度為±2℃,通過外部擴展溫度寄存器可將分辨力提高到0.125℃。⑵選擇“寄生阻抗抵消”模式,能抵消遠程傳感器引線阻抗所引起的測溫誤差,即使引線阻抗達到100,也不會影響測量精度。傳感器引線可采用普通雙絞線或者帶屏蔽層的雙絞線[5]。⑶具有多種工作模式可供選擇,主要包括單次轉換模式、連續轉換模式、待機模式和低溫極限擴展模式,這些模式的操作都非常簡便。通過轉換速率寄存器可以設定連續轉換模式下的A/D轉換速率,設定范圍為0.0625~8次/s。⑷帶有SMBus串行接口,可與I2C總線兼容,串行時鐘頻率范圍為0~100kHz,在總線上最多可接9片MAX6654。⑸電源電壓范圍為+3.0~+5.5V,典型值可選為+3.3V或+5V。正常工作電流為550μA,待機模式下電流為3μA。
3.2工作原理
MAX6654采用的是16引腳的QSOP封裝。其中Vcc、GND分別接電源的正、負極。DXP、DXN分別接遠程溫度傳感器PN結的P、N端(對NPN晶體管而言,就是發射極和基極)。ADDl、ADDO為SMBus從機地址的三態輸入端,設計時最多可在總線上掛接9片MAX6654。ALERT為報警(中斷)輸出端,為漏極開路輸出。SMBDATA、SMBCLK分別為串行數據輸入/輸出端、串行時鐘輸入端。STBY為待機輸入端,低電平時為待機模式。該芯片內部主要包括如下9個部分:傳感器輸入級、多路轉換器、11位A/ D轉換器、控制邏輯、地址譯碼器、SMBus串行接口、11個寄存器(包括遠程溫度數據寄存器、本地溫度數據寄存器、TH寄存器1和2、TL寄存器1和2、命令寄存器、狀態寄存器、配置寄存器、轉換速率寄存器和報警響應地址寄存器)、兩個數字比較器、輸出級(含或門、D觸發器和漏極開路的MOS場效應管)。除此之外,還有遠程傳感器的故障檢測器
3.2.1 傳感器輸入級和A/D轉換器
MAX6654的傳感器輸入級包括兩個電流源和兩只硅二極管。其中VDl為偏置二極管。電流源經外部測溫晶體管的PN結流過VD1使VD1正向導通,從而給DXN端提供一個偏置電壓UF1,并使其電位高于地電位。VD2為內置溫度傳感器。片內多路開關的作用是在A/D轉換過程中自動切換兩個通道。MAX6654在上電時的默認狀態:首先清除中斷鎖存器中的內容,然后對地址選擇端采樣并進行片選;A/D轉換器工作在連續模式時的轉換速率為0.25次/s,同時將命令字節設成OOH,以便對遠程接收字節進行快速訪問;最后再給TH寄存器和TL寄存器分別置tH、tL值。
3.2.2 SMBus串行接口
從軟件的角度看,MAX6654呈現給用戶的是一套字節寬度寄存器的集合,其中包括溫度值、報警閾值和控制位。用戶可以通過SMBus接口來讀取溫度值、寫控制位和寫報警閾值。其溫度與數據的對應關系見表1所列。MAX6654能滿足標準SMBus協議中對寫字節、讀字節、發送字節和接收字節的規定。當轉換速率≤1次/s時,溫度值的前8位可從內部溫度寄存器和外部溫度寄存器中讀取,而額外的3位則可從外部擴展溫度寄存器和內部擴展溫度寄存器中讀取。使用擴展溫度寄存器可將分辨力提高到0.125℃。
3.2.3 報警閾值寄存器和命令字寄存器
報警閾值寄存器包括TH寄存器和TL寄存器兩種,可分別用來存儲遠程溫度和本地溫度的上、下限。當被測溫度超出報警閾值時,ALERT將產生中斷。而ALERT響應中斷可為從機提供快速故障確認功能。主機每接收到一個ALERT中斷信號,就給ALERT響應從地址(0001 100)發出一個接收字節命令,再由產生中斷的從機將自己的地址發送到總線上以供主機識別。利用ALERT響應可同時激活幾個從機。命令字寄存器是主機指向從機中其他各寄存器的指針。根據命令,主機可完成讀本地溫度、讀外部溫度、讀轉換速率、讀內部溫度上下限、讀遠程溫度上下限、讀外部擴展溫度、讀產品序列號等功能。
4 系統軟硬件設計
4.1 硬件設計
用單片機C8051F005來實現對MAX6654的信號采集和輸出控制,硬件設計簡單可靠,系統溫度結點可擴展性強。硬件設計原理如圖3所示。遠程傳感器VT選用2N3904型低噪聲晶體管,并將它粘貼在被測量的CPU芯片上。C1為遠程傳感器的消噪電容。由R1和C2可構成高頻干擾濾波器。R2~R4均為上拉電阻。C8051F005單片機通過SMBus與MAX6654相連,可為后者提供串行時鐘并完成讀/寫操作。一旦CPU的溫度越限,MAX6654的ALERT端就輸出低電平報警信號以使C8051F005產生中斷。C8051F005還可通過控制散熱風扇使CPU處于正常溫度范圍。內置溫度傳感器用來檢測MAX6654附近的環境溫度(圖中未標出)。在本智能測溫系統中,C8051F005的 P0.0為SDA,P0.1為SCL,它們是硬件通過交叉開關譯碼器分配的,不能是其它引腳。
此外,還應注意電路中遠程傳感器的選擇以及噪聲干擾的濾除等問題。遠程傳感器可選用SST3904、CMPT3904、2N3904 等型號的低噪聲小功率硅晶體管,也可選用國外生產的帶鋁盤散熱器和雙絞線的500-32BT02-000型晶體管來做遠程傳感器。雖然MAX6654中的A/D轉換器對串模噪聲干擾的抑制能力較強,但是,在一般情況下,工業環境中的高頻噪聲干擾仍會使測量值偏高1~100℃,所以,對串模噪聲必須加以抑制。在DXP與DXN之間連接一只2200pF的電容能有效地濾除高頻電磁干擾。遠程傳感器的引線應采用屏蔽雙絞線電纜,并將DXP和DXN分別接至雙絞線的一端,而將屏蔽層接GND(遠端屏蔽層可不接地)。使用較長的電纜線時,其分布電容本身就具有濾除噪聲的作用,此時可適當減小C1的容量。
4.2 軟件設計
系統程序流程如圖4所示。在本系統中,C8051F005的SMBus始終作為主器件出現,SMBus首先發出一個起始條件,接著發出MAX6654器件地址+W(寫)。寫操作用于設置MAX6654的當前地址。在收到從器件的ACK后,主器件發出待讀存儲器地址。在收到一個ACK后,主器件發出重復起始條件和從器件地址+R(讀)。從器件在發出ACK后,將發送溫度寄存器內的數據字節。讀完之后,主器件發出一個NACK,并隨后發出停止條件。程序中用重復起始條件使寫存儲器地址和讀數據字節之間不能進行其它傳輸。溫度讀取時所涉及的所有的狀態都由中斷處理程序通過狀態表來完成。
5 結論
目前,SMBus串行總線用的主要還是虛擬SMBus,特別是在軟件編程方面。本文的智能測溫系統采用硬件SMBus實現溫度讀取,比用虛擬SMBus實現的溫度讀取要穩定和可靠得多,受通信速度的影響也小得多。此外,用MAX6654構成的溫度采集系統,溫度檢測準確可靠且不易受環境干擾,為整個系統的正常運行提供了可靠性保障。
參考文獻:
[1] 王邵華.I2C總線[J].無線電. 2003.(1):8~8
[2] 唐友懷.Cygnal在片系統單片機的特點與應用[J].電子世界. 2003.(6):34~35
[3] 李剛,林凌.與8051兼容的高性能、高速單片機--C8051Fxxx[M].北京:北京航空航天大學出版社.2002
[4] 江海洋.精密數字溫度傳感控制器MAX6654[J].無線電. 2002.(5):47~47
[5] 馬凈,李曉光,寧偉. 幾種常用溫度傳感器的原理及發展[J].中國儀器儀表.
標簽:
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。