范小燁
摘要:I2C總線協(xié)議是由Phlips公司研發(fā)并推行的一款高性能的串行總線。它具有多主機(jī)系統(tǒng)總線仲裁功能和高速設(shè)備與低速設(shè)備的同步功能。本篇文章的設(shè)計(jì)應(yīng)用I2C串口協(xié)議對(duì)溫度感應(yīng)芯片LM75A進(jìn)行正確的讀寫(xiě)控制。以quartus 2為平臺(tái)進(jìn)行仿真,利用LB0學(xué)習(xí)板上的溫度傳感器LM75A和LED顯示器,設(shè)計(jì)實(shí)現(xiàn)溫度檢測(cè)的控制電路,讀出當(dāng)前溫度信息。
關(guān)鍵詞:I2C總線協(xié)議;quartus 2;溫度檢測(cè);
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)27-6536-03
Abstract:I2C bus protocol was developed and implemented by the company Phlips a high-performance serial bus. It has a multi-master system bus arbitration function devices and high-speed and low-speed device synchronization. This article is designed to use I2C serial protocol LM75A temperature sensor chip to read and write properly controlled. In quartus 2 simulation platform, using temperature sensors LM75A LB0 learning and LED display board, design temperature detection control circuit reads the current temperature information.
Key words: I2C; quartus 2; temperature detection
通信協(xié)議是一種通信雙方必須服從的約定,其中包括的一系列問(wèn)題有:數(shù)據(jù)格式的傳輸,同步模式,傳輸速率,傳輸程序,錯(cuò)誤檢測(cè)和校正模式,控制字符定義等。根據(jù)同步方式的不同分為同步協(xié)議和異步協(xié)議。串口通信是指主機(jī)和從機(jī)之間傳輸數(shù)據(jù)的一種通訊的形式。它通過(guò)數(shù)據(jù)傳輸線、地線和控制線等實(shí)現(xiàn)。這類通信方式的優(yōu)點(diǎn)是數(shù)據(jù)線少,能夠使系統(tǒng)的硬件設(shè)計(jì)大大簡(jiǎn)化,在遠(yuǎn)距離傳輸中可以降低開(kāi)銷,提高系統(tǒng)可靠性。缺點(diǎn)是傳輸速度沒(méi)有并行傳輸快。
在工程設(shè)計(jì)中經(jīng)常使用的串行通信總線有: I2C總線、SPI總線和Microwire/PLUS。該文只針對(duì)I2C串行通信總線進(jìn)行討論。
I2C串行通信總線是負(fù)責(zé)微控制器和外設(shè)電路之間的通信連接的高性能串口通信協(xié)議。
本文溫度檢測(cè)設(shè)計(jì)所用溫度芯片LM75A 是一個(gè)集成了帶隙溫度傳感器和模數(shù)轉(zhuǎn)換器的溫度檢測(cè)芯片,可以直接輸出當(dāng)前環(huán)境溫度的11位二進(jìn)制值。該芯片可以提供過(guò)熱檢測(cè)輸出。溫度檢測(cè)在日常生活中有非常廣泛的應(yīng)用,例如火災(zāi)報(bào)警,家用電器過(guò)熱檢測(cè)等等,簡(jiǎn)單的溫度檢測(cè)設(shè)計(jì)可以為我們的生活帶來(lái)極大的方便,保護(hù)我們的生命財(cái)產(chǎn)安全。
1 I2C串行總線
1.1概述
PHILIPS公司從改善硬件工作效率的角度出發(fā),開(kāi)發(fā)了一種用于內(nèi)部IC控制的簡(jiǎn)單雙向兩線串行總線I2C。支持任何一種IC制造工藝,并且具有品種眾多的I2C可兼容芯片。強(qiáng)大的兼容性和可用性讓該通信總線成為世界工業(yè)化的重要成員。兩根雙向信號(hào)線(數(shù)據(jù)線SDA和時(shí)鐘線SCL)組成了I2C總線。
接收器收到一個(gè)完整的數(shù)據(jù)字節(jié)后只要將SCL時(shí)鐘線置為低,就可以使主機(jī)進(jìn)入等待狀態(tài),并且利用這段時(shí)間去完成一些必須的工作,如處理內(nèi)部中斷服務(wù)等。完成其他工作后釋放SCL線接著進(jìn)行數(shù)據(jù)傳送的工作。
2 數(shù)據(jù)的傳送格式
1) 字節(jié)傳送不應(yīng)答:在數(shù)據(jù)傳輸中,每個(gè)字節(jié)必須是8位,每個(gè)字節(jié)應(yīng)該由對(duì)方反饋一個(gè)ACK信號(hào)代表對(duì)方在線。非應(yīng)答信號(hào)正常情況下出現(xiàn)在所有字節(jié)的最后。這些一般會(huì)在通信雙方約定的通信協(xié)議中規(guī)定。需要注意的是SCL必須由主機(jī)發(fā)送,否則會(huì)出現(xiàn)嚴(yán)重的后果。
2) 數(shù)據(jù)幀格式:I2C總線上傳輸數(shù)據(jù)信號(hào)和地址信號(hào)。第一個(gè)字節(jié)是"片選信號(hào)",由7位從機(jī)地址加1位方向控制位組成。從機(jī)接收到自己的地址時(shí)才可以發(fā)送應(yīng)答信號(hào)且必須應(yīng)答主機(jī)以表示自己在線可以進(jìn)行通信。此時(shí)其他地址的從機(jī)不被允許通信。如果主機(jī)發(fā)起的是群呼時(shí),外圍從機(jī)設(shè)備不能發(fā)送數(shù)據(jù)。
其中傳送方向的“讀寫(xiě)”是站在主機(jī)的立場(chǎng)上定義的。“讀”是主機(jī)收到從機(jī)的數(shù)據(jù),“寫(xiě)”是主機(jī)對(duì)從機(jī)發(fā)送數(shù)據(jù)。
3) 總線的尋址:I2C總線通信協(xié)議中規(guī)定采用尋址字節(jié)為7位(即起始信號(hào)后的第一個(gè)字節(jié))。 從地址的可編程部分確定總線最多可以訪問(wèn)設(shè)備目。7位的I2C總線可以連接127個(gè)不同地址的外圍設(shè)備進(jìn)行通信,其中0號(hào)是群呼的地址。
2 LM75A溫度芯片
2.1 概述
LM75A 溫度檢測(cè)芯片有3位用戶可選的邏輯地址,所以同一通信總線上可以不發(fā)生地址沖突的同時(shí)連接8個(gè)器件進(jìn)行通信。
溫度寄存器用來(lái)實(shí)現(xiàn)0.125℃一個(gè)跳度的溫度變化精度是一個(gè) 11 位的二進(jìn)制數(shù)的補(bǔ)碼。芯片裝置正常接通電源時(shí),操作系統(tǒng)為比較模型的工作方式,起始溫度為80℃,75℃滯后。在這個(gè)時(shí)候,LM75A芯片就可以當(dāng)做一個(gè)能獨(dú)立使用的溫度控制器件,其溫度臨界值就是上述的預(yù)定義溫度設(shè)定點(diǎn)。
2.2 功能特點(diǎn)
LM75A芯片最大的特點(diǎn)就是可以將檢測(cè)到的環(huán)境溫度轉(zhuǎn)換為數(shù)字信號(hào)輸出,設(shè)計(jì)者可以直接讀取數(shù)字信息。而且可以對(duì)預(yù)定義的溫度進(jìn)行反應(yīng),可對(duì)溫度臨界值進(jìn)行編程設(shè)置。
除此之外,該芯片低功耗,輸出數(shù)據(jù)精度達(dá)到0.125,符合一般的設(shè)計(jì)要求。
2.3 OS輸出與I2C接口
溫度值將被存入芯片的寄存器Temp 中。I2C 總線可以隨時(shí)隨地根據(jù)主機(jī)運(yùn)行需要從 Temp 寄存器中讀取11位二進(jìn)制的溫度數(shù)值。并且溫度的讀取不影響模\數(shù)轉(zhuǎn)換操作的進(jìn)行。在正常工作模式下,溫度值得模數(shù)轉(zhuǎn)換每隔100ms 進(jìn)行一次,并且每一次的轉(zhuǎn)換都會(huì)更新寄存器的值。在關(guān)中斷工作模式下,器件進(jìn)入空閑狀態(tài),數(shù)據(jù)不進(jìn)行轉(zhuǎn)換,但是I2C 接口仍然有效,即temp中的數(shù)值可以被讀取。
3 電路設(shè)計(jì)及仿真結(jié)果
用I2C串口通信協(xié)議編寫(xiě)程序讀取LM75A的溫度寄存器TEMP中的數(shù)據(jù),并通過(guò)FPGA顯示在數(shù)碼管上。該程序是如前所述,默認(rèn)設(shè)備在正常工作模式下,F(xiàn)PGA器件先發(fā)送“10100010”末位的0代表寫(xiě)數(shù)據(jù),然后為字地址也就是寄存器指針地址00H”,然后再發(fā)送設(shè)備地址“10100011”末位代表讀,兩個(gè)連續(xù)讀之后,屏蔽無(wú)效位數(shù)碼管顯示溫度。。需要注意的是在inout口讀數(shù)據(jù)之前,一定要設(shè)為三態(tài)釋放總線,然后才能讀出數(shù)據(jù)。
4 結(jié)束語(yǔ)
本次實(shí)驗(yàn)設(shè)計(jì)證明,通過(guò)I2C串口通信協(xié)議可以完成許多外圍設(shè)備芯片的功能組合應(yīng)用,實(shí)現(xiàn)強(qiáng)大的設(shè)計(jì)靈活性。在本設(shè)計(jì)基礎(chǔ)上加入比較器,蜂鳴器等簡(jiǎn)單的原件功能即可以在FPGA上開(kāi)發(fā)出溫度報(bào)警器,過(guò)熱檢測(cè)裝置等可以應(yīng)用于實(shí)際生活中的各種器件。
本設(shè)計(jì)及仿真很好的完成了設(shè)計(jì)的目的和既定要求,并作為I2C串口通信協(xié)議的基礎(chǔ)應(yīng)用,為更高級(jí)的開(kāi)發(fā)應(yīng)用打下基礎(chǔ)。
參考文獻(xiàn):
[1] 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M]——VHDL版.2013.
[2] 鄒益民.FPGA/CPLD技術(shù)實(shí)用教程. 中國(guó)電力出版社,2010.
[3] LM75A Product data sheet Supersedes data of 2001 Jul 16.