




已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
IIC總線即I2C,一種總線結(jié)構(gòu)。IIC 是作為英特爾IC 的互補(bǔ),這種總線類型是由菲利浦半導(dǎo)體公司在八十年代初設(shè)計(jì)出來(lái)的,主要是用來(lái)連接整體電路(ICS) ,IIC是一種多向控制總線,也就是說(shuō)多個(gè)芯片可以連接到同一總線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)施數(shù)據(jù)傳輸?shù)目刂圃础_@種方式簡(jiǎn)化了信號(hào)傳輸總線。例如:內(nèi)存中的SPD信息,通過(guò)IIC,與BX芯片組聯(lián)系,IIC 存在于英特爾PIIX4結(jié)構(gòu)體系中。 隨著大規(guī)模集成電路技術(shù)的發(fā)展,把CPU和一個(gè)單獨(dú)工作系統(tǒng)所必需的ROM、RAM、I/O端口、A/D、D/A等外圍電路集成在一個(gè)單片內(nèi)而制成的單片機(jī)或微控制器愈來(lái)愈方便。目前,世界上許多公司生產(chǎn)單片機(jī),品種很多。其中包括各種字長(zhǎng)的CPU,各種容量的ROM、RAM以及功能各異的I/O接口電路等等,但是,單片機(jī)的品種規(guī)格仍然有限,所以只能選用某種單片機(jī)來(lái)進(jìn)行擴(kuò)展。擴(kuò)展的方法有兩種:一種是并行總線,另一種是串行總線。由于串行總線的連線少,結(jié)構(gòu)簡(jiǎn)單,往往不用專門的母板和插座而直接用導(dǎo)線連接各個(gè)設(shè)備。因此,采用串行線可大大簡(jiǎn)化系統(tǒng)的硬件設(shè)計(jì)。PHILIPS公司早在十幾年前就推出了I2C串行總線,利用該總線可實(shí)現(xiàn)多主機(jī)系統(tǒng)所需的裁決和高低速設(shè)備同步等功能。因此,這是一種高性能的串行總線。 1 I2C總線的硬件結(jié)構(gòu) I2C串行總線一般有兩根信號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。所有接到I2C總線設(shè)備上的串行數(shù)據(jù)SDA都接到總線的SDA上,各設(shè)備的時(shí)鐘線SCL接到總線的SCL上。典型的I2C總線結(jié)構(gòu)如圖1所示。 為了避免總線信號(hào)的混亂,要求各設(shè)備連接到總線的輸出端時(shí)必須是開(kāi)漏輸出或集電極開(kāi)路輸出。設(shè)備與總線的接口電路如圖2所示。設(shè)備上的串行數(shù)據(jù)線SDA接口電路應(yīng)該是雙向的,輸出電路用于向總線上發(fā)送數(shù)據(jù),輸入電路用于接收總線上的數(shù)據(jù)。而串行時(shí)鐘線也應(yīng)是雙向的,作為控制總線數(shù)據(jù)傳送的主機(jī),一方面要通過(guò)SCL輸出電路發(fā)送時(shí)鐘信號(hào),另一方面還要檢測(cè)總線上的SCL電平,以決定什么時(shí)候發(fā)送下一個(gè)時(shí)鐘脈沖電平;作為接受主機(jī)命令的從機(jī),要按總線上的SCL信號(hào)發(fā)出或接收SDA上的信號(hào),也可以向SCL線發(fā)出低電平信號(hào)以延長(zhǎng)總線時(shí)鐘信號(hào)周期??偩€空閑時(shí),因各設(shè)備都是開(kāi)漏輸出,上拉電阻Rp使SDA和SCL線都保持高電平。任一設(shè)備輸出的低電平都將使相應(yīng)的總線信號(hào)線變低,也就是說(shuō):各設(shè)備的SDA是“與”關(guān)系,SCL也是“與”關(guān)系。 總線對(duì)設(shè)備接口電路的制造工藝和電平都沒(méi)有特殊的要求(NMOS、CMOS都可以兼容)。在I2C總線上的數(shù)據(jù)傳送率可高達(dá)每秒十萬(wàn)位,高速方式時(shí)在每秒四十萬(wàn)位以上。另外,總線上允許連接的設(shè)備數(shù)以其電容量不超過(guò)400pF為限。 總線的運(yùn)行(數(shù)據(jù)傳輸)由主機(jī)控制。所謂主機(jī)是指啟動(dòng)數(shù)據(jù)的傳送(發(fā)出啟動(dòng)信號(hào))、發(fā)出時(shí)鐘信號(hào)以及傳送結(jié)束時(shí)發(fā)出停止信號(hào)的設(shè)備,通常主機(jī)都是微處理器。被主機(jī)尋訪的設(shè)備稱為從機(jī)。為了進(jìn)行通訊,每個(gè)接到I2C總線的設(shè)備都有一個(gè)唯一的地址,以便于主機(jī)尋訪。主機(jī)和從機(jī)的數(shù)據(jù)傳送,可以由主機(jī)發(fā)送數(shù)據(jù)到從機(jī),也可以由從機(jī)發(fā)到主機(jī)。凡是發(fā)送數(shù)據(jù)到總線的設(shè)備稱為發(fā)送器,從總線上接收數(shù)據(jù)的設(shè)備被稱為接受器。 I2C總線上允許連接多個(gè)微處理器以及各種外圍設(shè)備,如存儲(chǔ)器、LED及LCD驅(qū)動(dòng)器、A/D及D/A轉(zhuǎn)換器等。為了保證數(shù)據(jù)可靠地傳送,任一時(shí)刻總線只能由某一臺(tái)主機(jī)控制,各微處理器應(yīng)該在總線空閑時(shí)發(fā)送啟動(dòng)數(shù)據(jù),為了妥善解決多臺(tái)微處理器同時(shí)發(fā)送啟動(dòng)數(shù)據(jù)的傳送(總線控制權(quán))沖突,以及決定由哪一臺(tái)微處理器控制總線的問(wèn)題,I2C總線允許連接不同傳送速率的設(shè)備。多臺(tái)設(shè)備之間時(shí)鐘信號(hào)的同步過(guò)程稱為同步化。 2 I2C數(shù)據(jù)傳輸 在I2C總線傳輸過(guò)程中,將兩種特定的情況定義為開(kāi)始和停止條件(見(jiàn)圖3):當(dāng)SCL保持“高”時(shí),SDA由“高”變?yōu)椤暗汀睘殚_(kāi)始條件;當(dāng)SCL保持“高”且SDA由“低”變?yōu)椤案摺睍r(shí)為停止條件。開(kāi)始和停止條件均由主控制器產(chǎn)生。使用硬件接口可以很容易地檢測(cè)到開(kāi)始和停止條件,沒(méi)有這種接口的微機(jī)必須以每時(shí)鐘周期至少兩次對(duì)SDA取樣,以檢測(cè)這種變化。 SDA線上的數(shù)據(jù)在時(shí)鐘“高”期間必須是穩(wěn)定的,只有當(dāng)SCL線上的時(shí)鐘信號(hào)為低時(shí),數(shù)據(jù)線上的“高”或“低”狀態(tài)才可以改變。輸出到SDA線上的每個(gè)字節(jié)必須是8位,每次傳輸?shù)淖止?jié)不受限制,但每個(gè)字節(jié)必須要有一個(gè)應(yīng)答ACK。如果一接收器件在完成其他功能(如一內(nèi)部中斷)前不能接收另一數(shù)據(jù)的完整字節(jié)時(shí),它可以保持時(shí)鐘線SCL為低,以促使發(fā)送器進(jìn)入等待狀態(tài);當(dāng)接收器準(zhǔn)備好接受數(shù)據(jù)的其它字節(jié)并釋放時(shí)鐘SCL后,數(shù)據(jù)傳輸繼續(xù)進(jìn)行。I2C數(shù)據(jù)總線傳送時(shí)序如圖4所示。 數(shù)據(jù)傳送具有應(yīng)答是必須的。與應(yīng)答對(duì)應(yīng)的時(shí)鐘脈沖由主控制器產(chǎn)生,發(fā)送器在應(yīng)答期間必須下拉SDA線。當(dāng)尋址的被控器件不能應(yīng)答時(shí),數(shù)據(jù)保持為高并使主控器產(chǎn)生停止條件而終止傳輸。在傳輸?shù)倪^(guò)程中,在用到主控接收器的情況下,主控接收器必須發(fā)出一數(shù)據(jù)結(jié)束信號(hào)給被控發(fā)送器,從而使被控發(fā)送器釋放數(shù)據(jù)線,以允許主控器產(chǎn)生停止條件。合法的數(shù)據(jù)傳輸格式如下: I2C總線在開(kāi)始條件后的首字節(jié)決定哪個(gè)被控器將被主控器選擇,例外的是“通用訪問(wèn)”地址,它可以在所有期間尋址。當(dāng)主控器輸出一地址時(shí),系統(tǒng)中的每一器件都將開(kāi)始條件后的前7位地址和自己的地址進(jìn)行比較。如果相同,該器件即認(rèn)為自己被主控器尋址,而作為被控接收器或被控發(fā)送器則取決于R/W位。 3 I2C總線的應(yīng)用 I2C總線是各種總線中使用信號(hào)線最少,并具有自動(dòng)尋址、多主機(jī)時(shí)鐘同步和仲裁等功能的總線。因此,使用I2C總線設(shè)計(jì)計(jì)算機(jī)系統(tǒng)十分方便靈活,體積也小,因而在各類實(shí)際應(yīng)用中得到廣泛應(yīng)用。下面舉二個(gè)應(yīng)用示例。 3.1 伺服控制系統(tǒng)用I2C擴(kuò)展LCD顯示器 圖5是一個(gè)伺服系統(tǒng)的結(jié)構(gòu)圖。它用8XC752單片機(jī)的PWM輸出經(jīng)放大后來(lái)驅(qū)動(dòng)電機(jī),電機(jī)的轉(zhuǎn)速由測(cè)速機(jī)測(cè)取并直接送到8XC752片內(nèi)的A/D電路。處理后的有關(guān)信息經(jīng)I2C總線送到LCD驅(qū)動(dòng)芯片PCF8577以驅(qū)動(dòng)64段LCD顯示板。 3.2 通用I/O端口作為I2C總線接口 目前,51、96系列的單片機(jī)應(yīng)用很廣,但是由于它們都沒(méi)有I2C總線接口,從而限制了在這些系統(tǒng)中使用具有I2C總線接口的器件。通過(guò)對(duì)I2C總線時(shí)序的分析,可以用51單片機(jī)的兩根I/O線來(lái)實(shí)現(xiàn)I2C總線的功能。接I2C總線規(guī)定:SCL線和SDA線是各設(shè)備對(duì)應(yīng)輸出狀態(tài)相“與”的結(jié)果,任一設(shè)備都可以用輸出低電平的方法來(lái)延長(zhǎng)SCL的低電平時(shí)間,以迫使高速設(shè)備進(jìn)入等待狀態(tài),從而實(shí)現(xiàn)不同速度設(shè)備間的時(shí)鐘同步。因此,即使時(shí)鐘脈沖的高、低電平時(shí)間長(zhǎng)短不一,也能實(shí)現(xiàn)數(shù)據(jù)的可靠傳送,可以用軟件控制I/O口做I2C接口。下面就是用GMS97C2051的通用I/O口來(lái)作為I2C總線接口,并由軟件控制實(shí)現(xiàn)數(shù)據(jù)傳送的例子,圖6為其連線圖。 在單主控器的系統(tǒng)中,時(shí)鐘線僅由主控器驅(qū)動(dòng),因此可以用51系列的一根I/O線作為SCL的信號(hào)線,將其設(shè)備為輸出方式,并由軟件控制來(lái)產(chǎn)生串行時(shí)鐘信號(hào)。在實(shí)際系統(tǒng)中使用了P1.3。另一根I/O線P1.2作為I2C總線的串行數(shù)據(jù)線,可在軟件控制下在時(shí)鐘的低電平期間讀取或輸出數(shù)據(jù)。系統(tǒng)傳輸數(shù)據(jù)的過(guò)程如下:先由單片機(jī)發(fā)出一個(gè)啟始數(shù)據(jù)信號(hào),接著送出要訪問(wèn)器件的7位地址數(shù)據(jù),并等待被控器件的應(yīng)答信號(hào)。當(dāng)收以應(yīng)答信號(hào)后,根據(jù)訪問(wèn)要求進(jìn)行相應(yīng)的操作。如果是讀入數(shù)據(jù),則數(shù)據(jù)線可一直設(shè)為輸入方式,中間不需要改變SDA線的工作方式,每讀入一個(gè)字節(jié)均應(yīng)依次檢測(cè)應(yīng)答信號(hào);如果是輸出數(shù)據(jù),則首先將SDA設(shè)置為輸出方式,當(dāng)發(fā)送完一個(gè)字節(jié)后,需要改變SDA線為輸入方式,此時(shí)讀入被控器件的應(yīng)答信號(hào)就完成了一個(gè)字節(jié)的傳送。當(dāng)所有數(shù)據(jù)傳輸完畢后,應(yīng)向SDA發(fā)出一個(gè)停止信號(hào),以結(jié)束該次數(shù)據(jù)傳輸。 下面給出51系列用匯編語(yǔ)言實(shí)現(xiàn)啟始、停止、讀、寫(xiě)、應(yīng)答的程序,讀者也可以根據(jù)I2C總線時(shí)序在96系列或其它單片機(jī)上實(shí)現(xiàn)I2C總線接口。 a.啟動(dòng)位程序 ACK:CLR P1.3 NOP NOP SETB P1.2 NOP NOP NOP CPL P1.3 ;P1.3=1 NOP NOP NOP DENGDAI:JB P1.2,DENGDAI RET b.讀數(shù)據(jù)程序 讀字節(jié)可以在當(dāng)前地址讀(CURRENT READ),也可以隨機(jī)讀(RANDOM READ),讀出數(shù)據(jù)的最后一個(gè)字節(jié)后不用加應(yīng)答信號(hào)。 READ:PUSH 0EH CLR P1.4 LCALL BSTART ;START MOV A,#0A0H ;SEND THE CNOTROL BYTE LCALL SENDBYTE LCALL ACK MOV A,R1 ;SEND THE ADDRESS LCALL SENDBYTE LCALL ACK LCALL BSTART ;START MOV A,#0A1H ;SEND THE CNOTROL BYTE LCALL SENDBYTE LCALL ACK LCALL READBYTE LCALL BSTOP POP 0EH RET 送字節(jié)程序: SENDBYTE:PUSH 0EH PUSH 00H MOV R0,#08H LOOP1:CLR P1.3 NOP NOP RLC A MOV P1.2,C CPL P1.3 ;P1.3=1 NOP NOP DJNZ R0,LOOP1 POP 00H POP 0EH RET 讀字節(jié)子程序: READBYTE:PUSH 0EH PUSH 00H MOV R0,#08H;READ THE CONTENT CLR A LOOP4:CLR P1.3 NOP NOP NOP SETB P1.3 ;P1.3=1 MOV C,P1.2 RLC A DJNZ R0,LOOP4 MOV R2,A POP 00H POP 0EH RET c.寫(xiě)數(shù)據(jù)程序: WRITE:PUSH 0EH CLR P1.4 LCALL BSTART MOV A,#0A0H CLALL SENDBYTE ;SEND THE CONTROL BYTE LCALL ACK MOV A,R1 ;SEND THE ADDRESS LCALL SENDBYTE LCALL ACK MOV A,R2 ;WRITE THE CONTENT LCALL SENDBYTE LCALL ACK LCALL BSTOP POP 0EH RET 連續(xù)寫(xiě)的兩個(gè)字節(jié)之間最好是有10ms的延時(shí)。當(dāng)然,也可以進(jìn)行頁(yè)寫(xiě)(PAGE WRITE),即一次性連續(xù)寫(xiě)8個(gè)字節(jié),但采用頁(yè)寫(xiě)方式時(shí)每個(gè)字節(jié)后要有一個(gè)應(yīng)答信號(hào)。 d.停止位程序: BSTOP:CLR P1.3 NOP NOP CLR P1.2 NOP NOP NOP SETB P1.3 NOP NOP NOP SETB P1.2 RETIIC總線的基本原理與應(yīng)用實(shí)例2009-08-18 09:27大家好,通過(guò)以前的學(xué)習(xí),我們已經(jīng)對(duì)51單片機(jī)綜合學(xué)習(xí)系統(tǒng)的使用方法及學(xué)習(xí)方式有所了解與熟悉,學(xué)會(huì)了使用無(wú)線遙控模塊的基本知識(shí),體會(huì)到了綜合學(xué)習(xí)系統(tǒng)的易用性與易學(xué)性,這一期我們將一起學(xué)習(xí)IIC總線的基本原理與應(yīng)用實(shí)例。 先看一下我們將要使用的51單片機(jī)綜合學(xué)習(xí)系統(tǒng)能完成哪些實(shí)驗(yàn)與產(chǎn)品開(kāi)發(fā)工作:分別有流水燈,數(shù)碼管顯示,液晶顯示,按鍵開(kāi)關(guān),蜂鳴器奏 樂(lè),繼電器控制,IIC總線,SPI總線,PS/2實(shí)驗(yàn),AD模數(shù)轉(zhuǎn)換,光耦實(shí)驗(yàn),串口通信,紅外線遙控,無(wú)線遙控,溫度傳感,步進(jìn)電機(jī)控制等等。圖1 51單片機(jī)綜合學(xué)習(xí)系統(tǒng)上圖是我們將要使用的51單片機(jī)綜合學(xué)習(xí)系統(tǒng)硬件平臺(tái),如圖1所示,本期實(shí)驗(yàn)我們用到了綜合系統(tǒng)主機(jī)、板載的AT24C02芯片,綜合系統(tǒng)其它功能模塊原理與使用詳見(jiàn)前幾期電子制作雜志及后期連載教程介紹。在很多電子設(shè)備中都有要隨時(shí)存取數(shù)據(jù)作為歷史記錄或標(biāo)志位。目前常用的存儲(chǔ)器有24CXX系列和93CXX系列,前者是I2C總線 結(jié)構(gòu),后者是SPI總線結(jié)構(gòu),本小節(jié)先介紹I2C結(jié)構(gòu)的EEPROM(24CXX)作用方法,在后面小節(jié)中再介紹SPI結(jié)構(gòu)的EEPROM(93CXX) 使用方法。I2C總線基本概念I(lǐng)2C總線,是INTERINTEGRATEDCIRCUITBUS的縮寫(xiě),即“內(nèi)部集成電路總線”。 I2C總線是Philips公司推出的一種雙向二線制總線。目前Philips公司和其它集成電路制造商推出了很多基于I2C總線的外圍器件。I2C總線 包括一條數(shù)據(jù)線(SDA)和一條時(shí)鐘線(SCL)。協(xié)議允許總線接入多個(gè)器件,并支持多主工作??偩€中的器件既可以作為主控器也可以作為被控器,既可以是 發(fā)送器也可以是接收器??偩€按照一定的通信協(xié)議進(jìn)行數(shù)據(jù)交換。在每次數(shù)據(jù)交換開(kāi)始,作為主控器的器件需要通過(guò)總線競(jìng)爭(zhēng)獲得主控權(quán),并啟動(dòng)一次數(shù)據(jù)交換。系 統(tǒng)中各個(gè)器件都具有唯一的地址,各器件之間通過(guò)尋址確定數(shù)據(jù)接收方。I2C總線的系統(tǒng)結(jié)構(gòu)一個(gè)典型的I2C總線標(biāo)準(zhǔn)的IC器件,其內(nèi)部不僅有I2C接口電路,還可將內(nèi)部各單元電路劃分成若干相對(duì)獨(dú)立的模塊,它只有二根信 號(hào)線,一根是雙向的數(shù)據(jù)線SDA,另一根是時(shí)鐘線SCL。CPU可以通過(guò)指令對(duì)各功能模塊進(jìn)行控制。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一 樣只有撥通各自的號(hào)碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過(guò)程中,I 2 C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器)。CPU發(fā)出的控制信號(hào)分為地址碼和控制量(數(shù)據(jù))兩部分,地址碼用來(lái)選址, 即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。I2C總 線接口電路如下圖2所示。圖2 I2C總線接口電路圖I2C總線的器件分為主器件和從器件。主器件的功能是啟動(dòng)在總線上傳送數(shù)據(jù),并產(chǎn)生時(shí)鐘脈沖,以允許與被尋址的器件進(jìn)行數(shù)據(jù)傳送。 被尋址的器件,稱為從器件。一般來(lái)講,任何器件均可以成為從器件,只有微控制器才能稱為主器件。主、從器件對(duì)偶出現(xiàn),工作在接收還是發(fā)送數(shù)據(jù)方式,由器件 的功能和數(shù)據(jù)傳送方向所決定。I2C總線允許連接多個(gè)微控制器,顯然不能同時(shí)存在兩個(gè)主器件,先控制總線的器件成為主器件,這就是總線競(jìng)爭(zhēng)。在競(jìng)爭(zhēng)過(guò)程中數(shù)據(jù)不會(huì)被破壞、丟失。數(shù)據(jù)只能在主、從器件中傳送,結(jié)束后,主、從器件將釋放總線,退出主、從器件角色。I2C總線接口特性傳統(tǒng)的單片機(jī)串行接口的發(fā)送和接收一般都分別各用一條線,如MCS-51系列的TXD和RXD,而I2C總線則根據(jù)器件的功能通過(guò) 軟件程序使其工作于發(fā)送或接收方式。當(dāng)某個(gè)器件向總線上發(fā)送信息時(shí),它就是發(fā)送器(也叫主器件),而當(dāng)其從總線上接收信息時(shí),又成為接收器(也叫從器 件)。主器件用于啟動(dòng)總線上傳送數(shù)據(jù)并產(chǎn)生時(shí)鐘以開(kāi)放傳送的器件,此時(shí)任何被尋址的器件均被認(rèn)為是從器件。I2C總線的控制完全由掛在總線上的主器件送出 的地址和數(shù)據(jù)決定,在總線上,既沒(méi)有中心機(jī)也沒(méi)有優(yōu)先級(jí)??偩€上主和從(即發(fā)送和接收)的關(guān)系取決于此時(shí)數(shù)據(jù)傳送的方向。SDA 和SCL 都是雙向線路,都通過(guò)一個(gè)電流源或上拉電阻連接到電源端。連接總線器件的輸出級(jí)必須是集電極或漏極開(kāi)路,以具有線“與”功能,當(dāng)總線空閑時(shí),兩根線都是高 電平。I2C總線上數(shù)據(jù)的傳輸速率在標(biāo)準(zhǔn)模式下可達(dá)100kbit/s 在快速模式下可達(dá)400kbit/s 在高速模式下可達(dá)3.4Mbit/s 連接到總線的接口數(shù)量只由總線電容是400pF 的限制決定。I2C總線器件工作原理及時(shí)序I2C總線的時(shí)鐘信號(hào)在I2C總線上傳送信息時(shí)的時(shí)鐘同步信號(hào)是由掛接在SCL時(shí)鐘線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳 變將影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號(hào)變?yōu)榈碗娖?,將使SCL線上所有器件開(kāi)始并保護(hù)低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不 影響SCL線的狀態(tài),這些器件將進(jìn)入高電平等待的狀態(tài)。當(dāng)所有器件的時(shí)鐘信號(hào)都變?yōu)楦唠娖綍r(shí),低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時(shí)開(kāi)始它們的高電平期。其后, 第一個(gè)結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個(gè)同步時(shí)鐘??梢?jiàn),時(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長(zhǎng)的器件決定,而時(shí)鐘高電 平時(shí)間由時(shí)鐘高電平期最短的器件決定。I2C總線的傳輸協(xié)議與數(shù)據(jù)傳送起始和停止條件在數(shù)據(jù)傳送過(guò)程中,必須確認(rèn)數(shù)據(jù)傳送的開(kāi)始和結(jié)束。在I2C總線技術(shù)規(guī)范中,開(kāi)始和結(jié)束信號(hào)(也稱啟動(dòng)和停止信號(hào))的定義如圖3所示。開(kāi)始信號(hào):當(dāng)時(shí)鐘總線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。結(jié)束信號(hào):當(dāng)SCL線為高電平時(shí),SDA線從低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。開(kāi)始和結(jié)束信號(hào)都是由主器件產(chǎn)生。在開(kāi)始信號(hào)以后,總線即被認(rèn)為處于忙狀態(tài),其它器件不能再產(chǎn)生開(kāi)始信號(hào)。主器件在結(jié)束信號(hào)以后退出主器件角色,經(jīng)過(guò)一段時(shí)間過(guò),總線被認(rèn)為是空閑的。圖3超始和停止信號(hào)圖數(shù)據(jù)格式I2C總線數(shù)據(jù)傳送采用時(shí)鐘脈沖逐位串行傳送方式,在SCL的低電平期間,SDA線上高、低電平能變化,在高電平期間,SDA上數(shù)據(jù)必須保護(hù)穩(wěn)定,以便接收器采樣接收,時(shí)序如圖4所示。圖4 數(shù)據(jù)傳送時(shí)序圖I2C總線發(fā)送器送到SDA線上的每個(gè)字節(jié)必須為8位長(zhǎng),傳送時(shí)高位在前,低位在后。與之對(duì)應(yīng),主器件在SCL線上產(chǎn)生8個(gè)脈沖; 第9個(gè)脈沖低電平期間,發(fā)送器釋放SDA線,接收器把SDA線拉低,以給出一個(gè)接收確認(rèn)位;第9個(gè)脈沖高電平期間,發(fā)送器收到這個(gè)確認(rèn)位然后開(kāi)始下一字節(jié) 的傳送,下一個(gè)字節(jié)的第一個(gè)脈沖低電平期間接收器釋放SDA。每個(gè)字節(jié)需要9個(gè)脈沖,每次傳送的字節(jié)數(shù)是不受限制的。I2C總線的數(shù)據(jù)傳送格式是在I2C總線開(kāi)始信號(hào)后,送出的第一字節(jié)數(shù)據(jù)是用來(lái)選擇從器件地址的,其中前7位為地址碼,第8位為 方向位(R/W)。方向位為“0”表示發(fā)送,即主器件把信息寫(xiě)到所選擇的從器件中;方向位為“1”表示主器件將從從器件讀信息。格式如下: 1010A2A1A0R/W注:前四位固定為1010。開(kāi)始信號(hào)后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線上的地址進(jìn)行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位(R/W)決定。發(fā)送完第一個(gè)字節(jié)后再開(kāi)始發(fā)數(shù)據(jù)信號(hào)。響應(yīng)數(shù)據(jù)傳輸必須帶響應(yīng)。相關(guān)的響應(yīng)時(shí)鐘脈沖由主機(jī)產(chǎn)生,當(dāng)主器件發(fā)送完一字節(jié)的數(shù)據(jù)后,接著發(fā)出對(duì)應(yīng)于SCL線上的一個(gè)時(shí)鐘 (ACK)認(rèn)可位,此時(shí)鐘內(nèi)主器件釋放SDA線,一字節(jié)傳送結(jié)束,而從器件的響應(yīng)信號(hào)將SDA線拉成低電平,使SDA在該時(shí)鐘的高電平期間為穩(wěn)定的低電 平。從器件的響應(yīng)信號(hào)結(jié)束后,SDA線返回高電平,進(jìn)入下一個(gè)傳送周期。通常被尋址的接收器在接收到的每個(gè)字節(jié)后必須產(chǎn)生一個(gè)響應(yīng)。當(dāng)從機(jī)不能響應(yīng)從機(jī)地址時(shí),從機(jī)必須使數(shù) 據(jù)線保持高電平,主機(jī)然后產(chǎn)生一個(gè)停止條件終止傳輸或者產(chǎn)生重復(fù)起始條件開(kāi)始新的傳輸。如果從機(jī)接收器響應(yīng)了從機(jī)地址但是在傳輸了一段時(shí)間后不能接收更多 數(shù)據(jù)字節(jié),主機(jī)必須再一次終止傳輸。這個(gè)情況用從機(jī)在第一個(gè)字節(jié)后沒(méi)有產(chǎn)生響應(yīng)來(lái)表示。從機(jī)使數(shù)據(jù)線保持高電平主機(jī)產(chǎn)生一個(gè)停止或重復(fù)起始條件。完整的數(shù) 據(jù)傳送過(guò)程如圖5所示。圖5 完整的數(shù)據(jù)傳送過(guò)程I2C總線還具有廣播呼叫地址用于尋址總線上所有器件的功能。若一個(gè)器件不需要廣播呼叫尋址中所提供的任何數(shù)據(jù),則可以忽咯該地址不作響應(yīng)。如果該器件需要廣播呼叫尋址中按需提供的數(shù)據(jù),則應(yīng)對(duì)地址作出響應(yīng),其表現(xiàn)為一個(gè)接收器。24C系列存儲(chǔ)器的軟硬件設(shè)計(jì)實(shí)例IIC總線常用的芯片有24C01、24C02、24C04、24C08等,下面以目前在單片機(jī)系統(tǒng)中常用的帶I2C接口的EEPROM芯片AT24C02為例,介紹I2C器件的基本應(yīng)用,不同型號(hào)的24C芯片,只是容量大小不同,讀寫(xiě)方式與基本原理幾乎一樣。AT24C02簡(jiǎn)介AT24C02是美國(guó)ATMEL公司的低功耗CMOS串行EEPROM,它是內(nèi)含2568位存儲(chǔ)空間,具有工作電壓寬 (2.55.5V)、擦寫(xiě)次數(shù)多(大于10000次)、寫(xiě)入速度快(小于10ms)等特點(diǎn)。AT24C02中帶有片內(nèi)尋址寄存器。每寫(xiě)入或讀出一個(gè)數(shù)據(jù) 字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的操作。所有字節(jié)都以單一操作方式讀取。為降低總的寫(xiě)入時(shí)間,一次操作可寫(xiě)入多達(dá)8字節(jié)的數(shù)據(jù)。圖 6為AT24C系列芯片的封裝圖。各引腳功能如下:圖6 24C系列芯片封裝圖SCL:串行時(shí)鐘。在該引腳的上升沿時(shí),系統(tǒng)將數(shù)據(jù)輸入到每個(gè)EEPROM器件,在下降沿時(shí)輸出。SDA:串行數(shù)據(jù)。該引腳為開(kāi)漏極驅(qū)動(dòng),可雙向傳送數(shù)據(jù)。A0、A1、A2:器件/頁(yè)面尋址。為器件地址輸入端。WP:硬件寫(xiě)保護(hù)。當(dāng)該引腳為高電平時(shí)禁止寫(xiě)入,當(dāng)為低電平時(shí)可正常讀寫(xiě)數(shù)據(jù)。VCC:電源。一般輸入+5V電壓。VSS:接地。程序功能本例的程序功能是利用單片機(jī)與24C02進(jìn)行I2C通信,實(shí)現(xiàn)對(duì)某一地址內(nèi)數(shù)據(jù)的讀寫(xiě)校驗(yàn)操作。本程序先對(duì)地址0x01和0x02地址內(nèi)寫(xiě)入數(shù)據(jù)0x55和0xAA,然后讀其中一個(gè)地址內(nèi)的數(shù)據(jù),并在數(shù)碼管上顯示驗(yàn)證。本程序 默認(rèn)是讀取0x02地址內(nèi)的數(shù)據(jù),讀者也可以改變地址來(lái)讀取其它空間內(nèi)的數(shù)據(jù)。本實(shí)驗(yàn)進(jìn)行前要先將實(shí)驗(yàn)板上功能選擇開(kāi)關(guān)調(diào)到24C*位置上,如圖7所 示,程序執(zhí)行效果如圖8所示。圖7圖8 24C02實(shí)驗(yàn)演示圖硬件原理圖圖9 硬件原理圖程序流程圖圖10 程序流程圖相信看到這里,你應(yīng)該可以理解我們是如何利用單片機(jī)來(lái)進(jìn)行IIC總線的讀寫(xiě)操作了,你也可以根據(jù)自己的需要來(lái)寫(xiě)芯片讀寫(xiě)、存儲(chǔ)的相關(guān)程 序。由于篇幅有限,讀者朋友可以通過(guò)網(wǎng)站或電子郵件一起交流與學(xué)習(xí)。在下幾期中,我們將陸續(xù)介紹51單片機(jī)綜合學(xué)習(xí)系統(tǒng)的其它功能原理與應(yīng)用。iic總線程序2009-06-12 20:47I2C(InterIntegrated Circuit)串行總線是PHILIPS公司推出的一種是具備多主機(jī)系統(tǒng)所需的包括裁決和高低速設(shè)備同步等功能的高性能串行總線,用于連接微控制器及其外圍設(shè)備。I2C 總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開(kāi)發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對(duì)各個(gè)組件進(jìn)行查詢,以管理系 統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇。可隨時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。在主從通信中,可以有多個(gè)I2C總線器件同時(shí)接到I2C總線上,所有I2C兼容的器件都具有標(biāo)準(zhǔn)的接口,通過(guò)地址來(lái)識(shí)別通信對(duì)象,使它們可以經(jīng)由I2C總線互相直接通信。 iic數(shù)據(jù)傳輸格式如下: 超始位被控接收器地址R/W應(yīng)答位數(shù)據(jù)應(yīng)答位、停止位在傳輸數(shù)據(jù)開(kāi)始前,主控器件應(yīng)發(fā)送起始位,通知從器件做好接收準(zhǔn)備;在傳輸數(shù)據(jù)結(jié)束時(shí),主控器件應(yīng)發(fā)送停止位,通知從器件停止接收,起始位時(shí)序:當(dāng)SCL位為高位時(shí),SDA線由高到低的轉(zhuǎn)換。停止位時(shí)序:當(dāng)SCL位為高位時(shí),SDA線由低到高的轉(zhuǎn)換。SDA上的數(shù)據(jù)在時(shí)鐘高電平期間必須保持穩(wěn)定,在SCL低電平期間才可以改變,輸出到SDA 線上的每個(gè)字節(jié)必須是8位,每次傳輸?shù)淖止?jié)不受限制,每個(gè)字節(jié)必須有一個(gè)應(yīng)答位ACK,與應(yīng)答位對(duì)應(yīng)的時(shí)鐘脈沖由主控器產(chǎn)生,發(fā)送器在應(yīng)答期間必須拉低SDA線。SDA線連續(xù)寫(xiě)操作數(shù)據(jù)狀態(tài)為:(S表示開(kāi)始信號(hào)START,A表示應(yīng)答信號(hào)ACK,P表示停止信號(hào)STOP ) /* 全局符號(hào)定義 */#define HIGH 1#define LOW 0#define FALSE 0#define TRUE FALSE#define function#define end_if#define end_for#define byte unsigned charsbit SCL = 0x96 ;sbit SDA = 0x97 ;/* 函數(shù)原型: void function delay(void);* 功 能: 本函數(shù)實(shí)際上只有一條返回指令, 在具體應(yīng)用中可視具體要求增加延時(shí) * 指令。*/void function delay( void ) ;/* 函數(shù)原型: void function I2C_start(void);* 功 能: 提供I2C總線工作時(shí)序中的起始位。 */void function I2C_start( void ) SDA=HIGH;SCL = HIGH ;delay();SDA = LOW ;delay() ;SCL = LOW ;delay() ;/* 函數(shù)原型: void function I2C_stop(void);* 功 能: 提供I2C總線工作時(shí)序中的停止位。*/void function I2C_stop( void ) SDA = LOW ;SCL = HIGH ;delay() ;SDA = HIGH ;delay() ;SCL = LOW ;delay() ;/* 函數(shù)原型: void function I2C_init(void);* 功 能: I2C總線初始化。在main()函數(shù)中應(yīng)首先調(diào)用本函數(shù), 然后再調(diào)用* 其它函數(shù)。 */void function I2C_init( void ) SCL = LOW ;I2C_stop() ;/* 函數(shù)原型: bit function I2C_clock(void);* 功 能: 提供I2C總線的時(shí)鐘信號(hào), 并返回在時(shí)鐘電平為高期間SDA 信號(hào)線上狀* 態(tài)。本函數(shù)可用于數(shù)據(jù)發(fā)送, 也可用于數(shù)據(jù)接收。 */bit function I2C_clock( void ) bit sample ;SCL = HIGH ;delay() ;sample = SDA ;SCL = LOW ;delay() ;return ( sample ) ;/* 函數(shù)原型: bit function I2C_send(byte I_data);* 功 能: 向I2C總線發(fā)送8位數(shù)據(jù), 并請(qǐng)求一個(gè)應(yīng)答信號(hào)ACK。如果收到ACK應(yīng)答* 則返回1(TRUE), 否則返回0(FALSE)。 */bit function I2C_send( byte I2C_data ) register byte i ;/* 發(fā)送8位數(shù)據(jù) */for ( i=0 ; i8 ; i+ ) SDA = (bit)( I2C_data & 0x80 ) ; I2C_data = I2C_data 1 ; I2C_clock() ;end_for/* 請(qǐng)求應(yīng)答信號(hào)ACK */SDA = HIGH ;return ( I2C_clock() ) ;/* 函數(shù)原型: byte function I2C_receive(void);* 功 能: 從I2C總線上接收8位數(shù)據(jù)信號(hào), 并將接收到8位數(shù)據(jù)作為一個(gè)字節(jié)* 返回, 不回送應(yīng)答信號(hào)ACK。主函數(shù)在調(diào)用本函數(shù)之前應(yīng)保證SDA信* 號(hào)線處于浮置狀態(tài), 即使8051的P1.7腳置1。 */byte function I2C_receive( void ) byte I2C_data = 0 ;register byte i ;for ( i=0 ; i8 ; i+ ) I2C_data =1 ; if ( I2C_clock() ) I2C_data+ ; end_ifend_for return ( I2C_data ) ;/* 函數(shù)原型: void function I2C_ack(void);* 功 能: 向I2C總線發(fā)送一個(gè)應(yīng)答信號(hào)ACK, 一般用于連續(xù)數(shù)據(jù)讀取時(shí)。*/void function I2C_ack( void ) SDA = LOW ;I2C_clock() ;SDA = HIGH ;/*/* 函數(shù)原型: void function I2C_nack(void);* 功 能: 向I2C總線發(fā)送一個(gè)非應(yīng)答信號(hào)NACK。*/void function I2C_nack( void ) SDA = HIGH ;I2C_clock() ;SDA = LOW;=* * 上面給出的是I2C總線基本操作函數(shù), 下面給出的是幾個(gè)對(duì)I2C總線接口器件* 24C04操作的函數(shù)。* =*/#define WRITE 0xA0 /* 定義24C04的器件地址SLA和方向位W */#define READ 0xA1 /* 定義24C04的器件地址SLA和方向位R */#define BLOCK_SIZE 32 /* 定義指定字節(jié)個(gè)數(shù) */extern xdata byte EAROMImageBLOCK_SIZE;/* 在外部RAM中定義存儲(chǔ)映象單元 */* 函數(shù)原型: bit function E_address(byte Address);* 功 能: 向24C04寫(xiě)入器件地址和一個(gè)指定的字節(jié)地址。*/bit function E_address( byte Address ) I_start() ;if ( I_send( WRITE ) ) return ( I_send( Address ) ) ;else return ( FALSE ) ;end_if/* 函數(shù)原型: bit function E_read_block(void);* 功 能: 從24C04中讀取BLOCK_SIZE個(gè)字節(jié)的數(shù)據(jù)并轉(zhuǎn)存于外部RAM存儲(chǔ)映象* 單元, 采用序列讀操作方式從片內(nèi)0地址開(kāi)始連續(xù)讀取數(shù)據(jù)。如果* 24C04不接受指定的地址則返回0(FALSE)。*/bit function E_read_block( void ) register byte i ;/* 從地址0開(kāi)始讀取數(shù)據(jù) */if ( E_address( 0 ) ) /* 發(fā)送重復(fù)啟動(dòng)信號(hào) */ I_start() ; if ( I_send( READ ) ) for ( i=0 ; i=BLOCK_SIZE ; i+ ) EAROMImagei = ( I_receive() ) ; if ( i != BLOCK_SIZE ) I_Ack() ; else I_clock() ; I_stop() ; end_if end_for return ( TRUE ) ; else I_stop() ; return ( FALSE ) ; end_if else I_stop() ; return ( FALSE ) ;end_if/* 函數(shù)原型: void function wait_5ms(void);* 功 能: 提供5ms延時(shí)(時(shí)鐘頻率為12MHz)。*/void function wait_5ms( void ) register int i ;for ( i=0 ; i1000 ; i+ ) ;end_for/* 函數(shù)原型: bit function E_write_block(void);* 功 能: 將外部RAM存儲(chǔ)映象單元中的數(shù)據(jù)寫(xiě)入到24C04的頭BLOCK_SIZE個(gè)字節(jié)。* 采用字節(jié)寫(xiě)操作方式, 每次寫(xiě)入時(shí)都需要指定片內(nèi)地址。如果24C04* 不接受指定的地址或某個(gè)傳送的字節(jié)未收到應(yīng)答信號(hào)ACK, 則返回0* (FALSE)。 */bit function E_write_block( void ) register byte i ;for ( i=0 ; i=BLOCK_SIZE ; i+ ) if ( E_address(i) & I_send( EAROMImagei ) ) I_stop() ; wait_5ms(); else return ( FALSE ) ; end_ifend_for return ( TRUE ) ;I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘線SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率為400kb/s,各種被控電路均并聯(lián)在這條總線上,每個(gè)電路都有唯一的地址。在信息的傳輸過(guò)程當(dāng)中,I2C總線上并聯(lián)的每一個(gè)模塊電路既是被控器(或是主控器),又是發(fā)送器(或是接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號(hào)分為地址碼和數(shù)據(jù)碼兩部分:地址碼用來(lái)選址,及接通需要控制的電路;數(shù)據(jù)碼是通信的內(nèi)容,這樣各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立。IIC總線工作原理2009-04-30 14:36IIC總線工作原理 I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。 起始和終止信號(hào) :SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示終止信號(hào)。數(shù)據(jù)傳送格式(1)字節(jié)傳送與應(yīng)答每一個(gè)字節(jié)必須保證是8位長(zhǎng)度。數(shù)據(jù)傳送時(shí),先傳送最高位(MSB),每一個(gè)被傳送的字節(jié)后面都必須跟隨一位應(yīng)答位(即一幀共有9位)。如果一段時(shí)間內(nèi)沒(méi)有收到從機(jī)的應(yīng)答信號(hào),則自動(dòng)認(rèn)為從機(jī)已正確接收到數(shù)據(jù)。 AT24C02的芯片地址如下圖,1010為固定,A0,A1,A2正好與芯片的1,2,3引角對(duì)應(yīng),為當(dāng)前電路中的地址選擇線,三根線可選擇8個(gè)芯片同時(shí)連接在電路中,當(dāng)要與哪個(gè)芯片通信時(shí)傳送相應(yīng)的地址即可與該芯片建立連接,TX-1B實(shí)驗(yàn)板上三根地址線都為0。最后一位R/W為告訴從機(jī)下一字節(jié)數(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)施運(yùn)營(yíng)績(jī)效評(píng)價(jià)體系構(gòu)建考核試卷
- 企業(yè)勞務(wù)派遣優(yōu)勢(shì)分析考核試卷
- 投資保護(hù)與東道國(guó)政策環(huán)境適應(yīng)性分析考核試卷
- 全球低碳經(jīng)濟(jì)政策協(xié)調(diào)與合作考核試卷
- 部編九年級(jí)語(yǔ)文月考試卷
- 2025年中國(guó)LED背鏡燈數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)CD片盒數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)2.4-二氯氯芐數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025至2030年中國(guó)黃旗蟒市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)除草劑氟磺胺草醚原藥市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 園林工程分部(子分部)工程、分項(xiàng)工程劃分
- 【MOOC】人像攝影-中國(guó)傳媒大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 派出所應(yīng)對(duì)校園突發(fā)事件應(yīng)急預(yù)案
- 網(wǎng)絡(luò)安全漏洞挖掘與報(bào)告
- 埋地消防管滲漏整改工程施工方案
- 裝飾裝修施工人員安全知識(shí)培訓(xùn)考試試卷及答案
- 2023年上海市普通高中學(xué)業(yè)水平合格性考試地理試題及答案
- 宿舍消防安全培訓(xùn)課件
- 2024版小學(xué)一年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)模擬試卷
- 江蘇2024年江蘇省美術(shù)館招聘筆試歷年典型考題及考點(diǎn)附答案解析
評(píng)論
0/150
提交評(píng)論